useIsMobile
Location: src/hooks/useIsMobile.js
Overview
Provides two responsive design hooks: useIsMobile for a simple boolean mobile check, and useBreakpoint for a named breakpoint string. Both listen to window.resize events and update reactively.
Use useIsMobile when you need a simple mobile/desktop toggle. Use useBreakpoint when you need to differentiate between mobile, tablet, and desktop layouts.
Signature
function useIsMobile(breakpoint?: number): boolean
function useBreakpoint(): 'mobile' | 'tablet' | 'desktop'
Parameters
useIsMobile
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
breakpoint | number | No | 640 | Width threshold in pixels. Below this value returns true. |
useBreakpoint
This hook takes no parameters.
Return Value
useIsMobile
| Type | Description |
|---|---|
boolean | true if window.innerWidth < breakpoint, false otherwise |
useBreakpoint
| Type | Description |
|---|---|
'mobile' | 'tablet' | 'desktop' | 'mobile' if width < 640px, 'tablet' if width < 1024px, 'desktop' otherwise |
Usage
import { useIsMobile, useBreakpoint } from '../hooks/useIsMobile';
function ResponsiveLayout({ children }) {
const isMobile = useIsMobile();
const breakpoint = useBreakpoint();
return (
<div className={`layout layout--${breakpoint}`}>
{!isMobile && <Sidebar />}
<main>{children}</main>
</div>
);
}
Notes
- Both hooks handle SSR safety by checking
typeof window !== 'undefined'. useIsMobiledefaults tofalsewhenwindowis not available.- The resize event listener is cleaned up on unmount.
- Breakpoint thresholds: mobile < 640px, tablet < 1024px, desktop >= 1024px.
Last updated: 2026-02-07