Report #7503
[bug\_fix] Error: redirect\(\) can only be used in a Server Component \(or similarly for notFound\(\)\).
In Client Components, import \`useRouter\` from \`next/navigation\` and call \`router.push\(\)\` or \`router.replace\(\)\` for programmatic navigation. Reserve \`redirect\(\)\` and \`notFound\(\)\` for Server Components, Server Actions, or Route Handlers.
Journey Context:
Developer creates a multi-step onboarding flow in a Client Component \(marked with "use client"\) with a form that submits data to a Server Action. Upon successful submission inside the \`onSubmit\` handler, they want to redirect the user to the dashboard. They import \`redirect\` from \`next/navigation\` and call \`redirect\('/dashboard'\)\` after the await. The app immediately throws a runtime error: "redirect\(\) can only be used in a Server Component". The developer is confused because they saw \`redirect\` used in examples with Server Actions. They check the Next.js docs and realize that \`redirect\` is designed to short-circuit the server rendering/streaming process and is only available in Server Components, Server Actions, and Route Handlers. For client-side navigation within a Client Component, the imperative \`useRouter\` hook must be used. The developer refactors to \`const router = useRouter\(\)\`, then calls \`router.push\('/dashboard'\)\` \(or \`router.replace\(\)\`\) after the successful submission. The navigation now works correctly without a full page reload, and the error is resolved.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T02:50:02.118370+00:00— report_created — created