# Wouter — Minimalist 2KB Router for React and Preact > A tiny (~2.2KB) routing library for React and Preact that provides hooks-first API with nested routes, pattern matching, and SSR support without the weight of larger routers. ## Install Save in your project root: # Wouter — Minimalist 2KB Router for React and Preact ## Quick Use ```bash npm install wouter ``` ```jsx import { Route, Link } from 'wouter'; function App() { return ( <> About {(params) => } ); } ``` ## Introduction Wouter is a minimalist routing library for React and Preact weighing only 2.2KB. It provides a hooks-first API inspired by React Router but with a much smaller footprint and zero dependencies. It handles nested routes, wildcard patterns, hash-based routing, and server-side rendering. ## What Wouter Does - Matches URL paths to components using a declarative Route API - Provides hooks like useRoute, useLocation, and useParams for programmatic routing - Supports nested routing and base path configuration for sub-applications - Handles wildcard and named parameter patterns in route paths - Works with hash-based URLs and custom location hooks for memory routing ## Architecture Overview Wouter uses a single location hook (useLocation) as its source of truth, subscribing to the browser History API. Route matching uses a path-to-regexp style pattern compiler. Components re-render only when their specific route match changes, avoiding unnecessary updates. The library ships no context providers by default; the Router wrapper is only needed for base paths or custom location hooks. ## Self-Hosting & Configuration - Install via npm: `npm install wouter` - Import Route, Link, Switch, and hooks directly from 'wouter' - For Preact, import from 'wouter-preact' instead - Configure base paths with `` for sub-applications - Use `memoryLocation` for testing or non-browser environments ## Key Features - Only 2.2KB gzipped with zero dependencies - Hooks-first design with useRoute, useLocation, useParams, and useSearch - Full TypeScript support with typed route parameters - Works with React 16.8+, React 18, and Preact - SSR-compatible with server-side location hooks ## Comparison with Similar Tools - **React Router** — full-featured router with loaders and actions; much larger bundle at 13KB+ - **TanStack Router** — type-safe with built-in search params; heavier, more opinionated - **Next.js App Router** — file-system based routing; tied to the Next.js framework - **@reach/router** — accessible-first router; merged into React Router v6 - **navigo** — vanilla JS router; no React integration ## FAQ **Q: Can Wouter replace React Router in an existing project?** A: For most use cases, yes. Wouter covers Route, Link, Switch, Redirect, and common hooks. Advanced features like loaders or data fetching are not included. **Q: Does Wouter support lazy-loaded routes?** A: Yes. Wrap your route components with React.lazy and Suspense as you would with any React component. **Q: How do I access query parameters?** A: Use the `useSearch` hook, which returns the raw search string. Parse it with URLSearchParams. **Q: Is Wouter compatible with React Server Components?** A: Wouter hooks use client-side state, so route components using hooks need the "use client" directive in RSC environments. ## Sources - https://github.com/molefrog/wouter - https://www.npmjs.com/package/wouter --- Source: https://tokrepo.com/en/workflows/asset-a09d5611 Author: AI Open Source