A utility company had a form problem. To apply for service you used either an ancient ASP form or a slow manual process — and because the company was a regulated monopoly, letting customer satisfaction slip risked millions in fines. Two expensive attempts to fix it had already failed. The most recent, a React app built by an offshore team, lasted three days online before complaints forced it offline: a mess of loading spinners and global state, not accessible, and — the detail that says it all — it tried to cram form data and image uploads into localStorage, which caps out at about 5 MB.

A developer rebuilt it from scratch, HTML-first, using Astro. The form worked perfectly with no JavaScript at all; JavaScript only enhanced it. When it launched, the number of people completing the form doubled. (That's the author's reported result, and the most interesting part is why it happened — more on that at the end.)

The lesson isn't "frameworks bad." It's that a pile of old, boring web techniques quietly outperform a heavy single-page app for a job like this. Here's what "HTML-first" actually means and how you build a form this way.

What "HTML-first" actually means

HTML-first means the page works as plain HTML on its own, and JavaScript is a progressive enhancement layered on top — never a prerequisite. The page renders, the form submits, the user can finish their task even if the JavaScript never loads, fails, or is running on a browser that chokes on it.