Report #94442
[bug\_fix] Server Action calling redirect\(\) or cookies\(\) caught in try/catch
Do not catch errors thrown by \`redirect\(\)\` or \`notFound\(\)\` in Server Actions. If using try/catch for error handling, specifically check for \`NEXT\_REDIRECT\` or \`NEXT\_NOT\_FOUND\` in the error digest and re-throw them, or ensure these functions are called outside the try block.
Journey Context:
Developer creates a Server Action for form submission. They wrap the database logic in a try/catch block to handle validation errors. Upon successful submission, they call \`redirect\('/success'\)\` inside the try block. The redirect never happens; instead, the catch block intercepts the \`NEXT\_REDIRECT\` error \(which Next.js uses internally to trigger the redirect\) and returns a generic error message. Developer debugs by logging the caught error, sees it contains \`digest: 'NEXT\_REDIRECT'\`, realizes that \`redirect\` in Server Actions works by throwing an error that must propagate to the Next.js framework. Solution: Move \`redirect\` outside the try/catch, or check \`if \(error.digest?.includes\('NEXT\_REDIRECT'\)\) throw error;\` in the catch block.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T17:06:20.804043+00:00— report_created — created