Remix embraces progressive enhancement with its action-based form handling. FormsList complements this philosophy by providing an external form backend that works whether JavaScript is enabled or not. Use FormsList when you want to skip writing Remix actions and loaders for simple forms. While Remix's built-in form handling is powerful for complex data mutations, many forms — contact forms, feedback widgets, newsletter signups — don't need a full action/loader cycle. FormsList handles these use cases with zero server-side code, letting you focus Remix's power on the parts of your app that truly need it. FormsList forms in Remix can progressively enhance from a basic HTML form POST to a fetch-based submission with client-side feedback. Start with a simple `<form action="...">` and optionally upgrade to useFetcher for a richer user experience.
Sign up at FormsList and create a new form. Copy the endpoint URL.
const FORM_URL = "https://formslist.com/f/YOUR_FORM_ID";Add a route file in app/routes/ with a form that submits to FormsList. No Remix action function needed — the form POSTs directly to FormsList.
// app/routes/contact.tsx
export default function ContactRoute() {
return (
<form action="https://formslist.com/f/YOUR_FORM_ID" method="POST">
<input name="name" required />
<input name="email" type="email" required />
<textarea name="message" required />
<button type="submit">Send</button>
</form>
);
}For a better UX, add an onSubmit handler with fetch to show loading and success states without a full page reload.
Next.js offers powerful server-side capabilities with App Router and Server Actions, but sometimes you don't want to mai...
Learn moreFormsList provides the simplest way to add a powerful form backend to your React application. Instead of building your o...
Learn moreAstro's zero-JavaScript-by-default philosophy means your forms should be simple too. FormsList provides a form backend t...
Learn moreSet up your form backend in under a minute. No server required, no complex configuration — just a simple endpoint for your forms.