useWindowSize

A React hook that tracks window dimensions and responsive breakpoints in real-time.

Overview

useWindowSize provides live updates of your browser's viewport dimensions along with convenience boolean flags for common responsive breakpoints. Perfect for building adaptive UIs that respond to resize events.

Demo

Responsive Design Visualizer

Resize your browser to see the breakpoint changes in real-time.

Live Viewport Data
Width0px
×
Height0px
🖥️
Current Breakpoint
Desktop
📱Mobile
📟Tablet
🖥️Desktop
Responsive Grid (3 columns)
1
2
3
Mobile< 640px
Tablet640 - 1023px
Desktop≥ 1024px

API Reference

function useWindowSize(): {
  width: number,
  height: number,
  isMobile: boolean,
  isTablet: boolean,
  isDesktop: boolean
}

Returns

NameTypeDescription
widthnumberCurrent viewport width in pixels.
heightnumberCurrent viewport height in pixels.
isMobilebooleantrue if width < 640px.
isTabletbooleantrue if width is 640-1023px.
isDesktopbooleantrue if width ≥ 1024px.

Usage Examples

Responsive Component

import { useWindowSize } from 'react-hooks-ts'
 
function ResponsiveNav() {
  const { isMobile } = useWindowSize()
 
  return isMobile ? <MobileMenu /> : <DesktopNav />
}

Conditional Rendering

import { useWindowSize } from 'react-hooks-ts'
 
function Dashboard() {
  const { width, isDesktop } = useWindowSize()
 
  return (
    <div className={isDesktop ? 'grid-cols-3' : 'grid-cols-1'}>
      {/* Content adapts to viewport */}
    </div>
  )
}

Features

  • Debounced - Updates are throttled to prevent performance issues.
  • 📱 Breakpoint Flags - Convenient booleans for mobile, tablet, and desktop.
  • 🛡️ SSR Safe - Returns sensible defaults during server-side rendering.
  • 🧹 Auto Cleanup - Event listeners are properly removed on unmount.