Mantine Hooks logo

Mantine Hooks

A massive collection of 50+ production-grade hooks for state and UI management.

npm install @mantine/hooks
30.1K956.8K/weekv8.3.91.23 MBMIT41 issues
Last updated: 2025-11-22
Star history chart for mantinedev/mantine

TL;DR

A standalone package extracted from the popular Mantine UI library, offering over 50 hooks for state management and UI interactions.

Fully typed and independent of Mantine's UI components, it serves as a robust toolkit for building complex interfaces.

Why Mantine Hooks?

While many developers know Mantine as a component library, its underlying hooks package (@mantine/hooks) is a hidden gem that can be used in any React project, even those using Tailwind or Material UI.

  • UI Interaction Specialist: Unlike general-purpose libraries, Mantine Hooks shines in handling complex DOM interactions like useFocusTrap, useClickOutside, and useMove.
  • Keyboard Mastery: The useHotkeys hook is widely considered one of the best implementations for handling keyboard shortcuts in the ecosystem.
  • Standalone Power: You get the reliability of a major UI framework's logic layer without needing to install any of its styled components.
  • Massive Scope: With over 50 hooks, it covers everything from local storage synchronization (useLocalStorage) to element resizing (useResizeObserver) and scroll locking (useScrollLock).
  • TypeScript Native: As a modern library, every hook is written in TypeScript with precise generic types for state and event handlers.

Code Snippet

The useHotkeys hook allows you to bind keyboard shortcuts to functions using a simple, declarative API. It automatically handles event listeners and cleanup.

import { useState } from 'react';
import { useHotkeys } from '@mantine/hooks';

export default function Dashboard() {
  const [count, setCount] = useState(0);

  // Bind multiple keys to actions
  useHotkeys([
    ['mod+J', () => console.log('Toggle search modal')],
    ['ctrl+K', () => console.log('Trigger command palette')],
    ['shift+up', () => setCount((c) => c + 1)],
    ['shift+down', () => setCount((c) => c - 1)],
  ]);

  return (
    <div>
      <p>Press <b>Shift + Up/Down</b> to change value: {count}</p>
      <p>Press <b>Cmd/Ctrl + J</b> to check console</p>
    </div>
  );
}

This snippet demonstrates how easily you can add "power user" features to your app without writing complex useEffect listeners for keydown events.

Pros and Cons

No library is perfect; understanding the trade-offs is key to selecting the right tool.

Pros

  • Interaction Focused: Contains rare but essential UI hooks (like useFocusTrap for accessibility) that other utility libraries often miss.
  • Battle-Tested: These hooks power the Mantine component library, meaning they are tested daily by thousands of production applications.
  • Active Maintenance: Updates are frequent and aligned with the main Mantine project release cycle.

Cons

  • Version Coupling: If you use Mantine components, you must ensure the hooks package version matches the core package version to avoid conflicts.
  • Large API Surface: The sheer number of hooks can be overwhelming; you might install the whole package just to use one or two utilities (though tree-shaking helps).
  • Browser Only: While most hooks are SSR-safe, some specific DOM-interaction hooks obviously only work on the client, requiring careful usage in Next.js server components.

Comparison with Other Hooks Libraries

The table below outlines the positioning differences between Mantine Hooks and other popular libraries:

LibraryDesign PhilosophyBest ForPain Points
Mantine Hooks"UI Interaction First"
Focus on DOM behavior, A11y, and shortcuts.
Rich Web Apps
Dashboards and tools needing complex user interaction logic.
Coupling
Best experience is within Mantine ecosystem (though works outside).
react-use"The Archive"
A massive collection of everything.
Legacy Projects
Older codebases needing broad utility coverage.
Bloat
Contains many outdated or rarely used hooks.
ahooks"Async State First"
Focus on useRequest and data patterns.
CRUD Applications
Apps heavily reliant on API requests and lists.
UI Logic
Less focused on low-level DOM interactions like focus traps.

Verdict: When to Adopt

Adopt Mantine Hooks if you are building a rich, interactive web application (like a dashboard, editor, or admin panel). Its specific focus on UI interactions (hotkeys, focus management, click detection) makes it superior to generic utility libraries for these use cases. It is the perfect companion to a headless UI setup.