303 redirect for browser submissions, so you should prevent the browser from following it and handle the result manually.
There are two recommended patterns:
- Client-side fetch with
redirect: 'manual' - Server-side submit (API route or server action)
1
Client-side fetch
- React
- Vue
- Svelte
redirect: 'manual' prevents the browser from following the redirect and failing CORS checks.2
Server-side submit
Post to Formbase from your backend (API route, server action, or serverless function). This returns JSON and avoids browser redirects entirely.
If you use a server action (Next.js, Remix), you get a JSON response from Formbase and can return a clean success state to the client.