cloudflare/vinext

`next/form` (`<Form>`) soft navigation not implemented

Fechada

#1.355 aberto em 20 de mai. de 2026

 (1 comentário) (0 reação) (0 responsável)TypeScript (383 forks)github user discovery
adapter-api-e2ehelp wanted

Métricas do repositório

Stars
 (8.624 estrelas)
Métricas de merge de PR
 (Mesclagem média 1d 1h) (462 fundiu PRs em 30d)

Description

This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext main vs Next.js v16.2.6, 2026-05-20).

Problem

The next/form <Form> component does not perform client-side soft navigation. Form submissions fall through to the browser's default behavior (full MPA page navigation) instead of being intercepted for SPA-style transitions.

Tests verify that after a form submission, the page did NOT do a full MPA navigation (didMpaNavigate() should return false). In vinext, it returns true because the form submit causes a full page reload.

Additionally, client action functions passed to action/formAction props do not execute.

Estimated Impact

~14 test failures.

Affected Test Suites

  • test/e2e/next-form/default/pages-dir.test.ts (9 failures)
  • test/e2e/next-form/default/app-dir.test.ts (5 failures)
  • test/e2e/next-form/basepath/next-form-basepath.test.ts (1 failure)

Recommendation

  1. Reproduce first in vinext's own test suite. Add a test with a <Form> component from next/form and verify that submission performs soft navigation. Confirm it currently does a full page reload.

  2. Study the Next.js <Form> implementation. Search .nextjs-ref/packages/next/src/client/form.tsx to understand how form submissions are intercepted and converted to client-side navigations using the router.

  3. Implement <Form> in the next/form shim. The component needs to: (a) intercept the submit event, (b) serialize form data, (c) use router.push() or router.replace() for the navigation, (d) support client action functions via action/formAction props.

  4. Handle both App Router and Pages Router. The Form component should work in both contexts.

Guia do colaborador