useRouter()
Client hook for programmatic navigation in the App Router.
Syntax
import { useRouter } from 'next/navigation'; const router = useRouter() Returns
AppRouterInstance — Router with push, replace, refresh, back, forward, prefetch.
Examples
'use client'
import { useRouter } from 'next/navigation'
export function LogoutButton() {
const router = useRouter()
async function logout() {
await fetch('/api/logout', { method: 'POST' })
router.push('/login')
router.refresh()
}
return <button onClick={logout}>Log out</button>
}
'use client'
import { useRouter } from 'next/navigation'
export function BackButton() {
const router = useRouter()
return <button onClick={() => router.back()}>Back</button>
}
Notes
Import from `next/navigation` (NOT `next/router`, which is the Pages
Router). Client Components only. `router.refresh()` re-fetches the
current route's Server Components without losing client state — handy
after a mutation. For declarative navigation prefer `<Link>`.