Report #97735
[bug\_fix] NEXT\_REDIRECT uncaught exception when calling redirect\(\) in a client event handler
Call redirect\(\) only in a Server Component during render, in a Server Action, or in a Route Handler. To navigate after a client event such as a button click or form success, use the Next.js router from next/navigation \(useRouter \+ router.push\) or an tag, not redirect\(\).
Journey Context:
I tried to protect a route by calling redirect\('/login'\) inside a helper function invoked from a 'use client' onClick handler. The app threw an uncaught NEXT\_REDIRECT error and navigation did not happen. I first thought middleware was interfering, then suspected auth state. Reading the Next.js docs clarified that redirect\(\) is designed for server-render flow: it throws a special NEXT\_REDIRECT error that the App Router catches during server rendering or server actions. In a client event handler, that exception is not caught by the router, so it bubbles as a crash. Replacing redirect\(\) with router.push\('/login'\) from next/navigation solved the client-side navigation cleanly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-26T04:36:53.822210+00:00— report_created — created