mirror of
https://github.com/cloudflare/vinext.git
synced 2026-09-14 19:04:59 +08:00
765a18a565
* fix: prevent useActionState state becoming undefined when redirect() is called Fixes issue #589 where useActionState receives undefined state when a Server Action calls redirect() from next/navigation. Root Cause: When a server action calls redirect(), the server sends redirect headers with empty body. RSC navigation expects a valid RSC payload but receives empty body, causing navigation to fail. Solution: Use hard redirect (location.assign/replace) for all action redirects. This matches Next.js's completeHardNavigation behavior and ensures navigation always completes. Changes: - packages/vinext/src/server/app-browser-entry.ts: Use location.assign/replace for action redirects - tests/e2e/app-router/server-actions.spec.ts: Add waitForHydration to test - tests/fixtures/app-basic/app/actions/actions.ts: Add redirectWithActionState test action - tests/fixtures/app-basic/app/action-state-redirect/page.tsx: Add test page Note: This is a known parity gap - Next.js pre-renders the redirect target's RSC payload for soft navigation, while vinext currently sends empty body requiring hard redirect. Signed-off-by: Md Yunus <admin@yunuscollege.eu.org> Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * Apply suggestion from @ask-bonk[bot] Co-authored-by: ask-bonk[bot] <249159057+ask-bonk[bot]@users.noreply.github.com> --------- Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Co-authored-by: James Anderson <james@eli.cx> Co-authored-by: ask-bonk[bot] <249159057+ask-bonk[bot]@users.noreply.github.com>