Report #7269
[bug\_fix] useRouter returns undefined or router.push is not a function in App Router
Import \`useRouter\` from \`next/navigation\` \(not \`next/router\`\) when using the App Router, and ensure you are calling it inside a Client Component \(marked with 'use client'\).
Journey Context:
Developer is migrating from Next.js Pages Router to App Router, or simply starts using App Router. They write a component that needs programmatic navigation. They import \`useRouter\` from \`next/router\` out of habit. When they call \`router.push\('/path'\)\`, they get an error that push is undefined or the router object is null/undefined. They check the import and realize the docs say to import from \`next/navigation\` in App Router. They change the import, but now get a different error about hooks rules. They realize they are trying to use it in a Server Component. They add \`'use client'\` to the file. Now it works. They understand that \`next/navigation\` provides the App Router navigation APIs \(useRouter, usePathname, useSearchParams\) and these only work in client contexts, whereas \`next/router\` is the legacy Pages Router API.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T02:15:23.056881+00:00— report_created — created