React-приложение сняли через 3 дня. Простой HTML удвоил число завершённых форм
У регулируемого ЖКХ-монополиста за плечами были две провальные попытки, включая React-приложение, снятое через 72 часа жалоб клиентов. Спасением оказался не фреймворк, а форма, работающая с выключенным JavaScript.
Сайту грозили штрафы в миллионы фунтов, если удовлетворённость клиентов упадёт ниже 96%. Переписали на Astro, каждый шаг мастера рендерили на сервере отдельной страницей, а прогресс хранили в бэкенде — один пользователь завершил форму спустя месяц после начала.
Штатный инженер в треде рассказал об обратной миграции: он выдрал React из внутреннего приложения и обнаружил, что сборка больше вообще не нужна.
Две провальные версии, а потом форма, переживающая обрыв связи

Исходная ситуация жёстче, чем в большинстве постов «мы всё переписали». В оригинальной статье автор описывает регулируемого ЖКХ-монополиста, которому нужно было, чтобы клиенты подавали заявку на услугу. Две прежние попытки провалились — включая React-приложение, снятое всего через три дня из-за жалоб клиентов. Ставки были регуляторные: если удовлетворённость упадёт ниже 96%, компании грозят «штрафы в миллионы фунтов».
Принцип переписывания был такой: JavaScript должен улучшать, но никогда не быть пропуском на вход. Собрали на Astro, и «JavaScript существовал, в веб-компонентах, но только чтобы прогрессивно улучшать сайт, который и без него работал прекрасно». Каждый шаг мастера формы был отдельной страницей с серверным рендерингом и валидацией на бэкенде, так что прогресс сохранялся независимо от поведения браузера — один пользователь «завершил форму через месяц после того, как начал её». Весь слой клиентской валидации был веб-компонентом меньше 1 КБ, который при сбое загрузки откатывался на встроенную валидацию браузера. Итог: «число людей, завершающих форму, удвоилось», а аналитика даже не могла найти новых посетителей, потому что старое отслеживание на JS их молча теряло.
«Я не смог придумать ни одной веской причины, зачем этому приложению React»
Тред наполнился инженерами, которые ставили тот же эксперимент на своих кодовых базах. Штатный инженер описал миграцию, которая закончилась там, где он не ожидал:
«Я не смог придумать ни одной веской причины, зачем этому приложению нужен React. Я переписал фронтенд на чистом HTML с капелькой JavaScript … Но знаете, что мне не понадобилось? ПРОЦЕСС СБОРКИ! Никаких npm-зависимостей. Никаких vite/rsbuild/и т.д. Будто я забыл, что так вообще МОЖНО.» — штатный инженер
Человек, который делает сайты именно этой категории на жизнь, добавил исторической глубины: мастер форм с акцентом на доступность — не новинка, его переоткрывают:
«Я делал такие приложения на GOV.UK больше 10 лет назад для Министерства юстиции. Мы написали собственную библиотеку мастера форм, которая позволяла валидировать длинные формы по шагам … Это был очень важный принцип … что каждый должен иметь возможность пользоваться этими цифровыми сервисами независимо от того, чем именно он заходит.» — основатель Teller, API для банковских счетов
Контрголос: дело не в React
Несогласие, которое стоит сохранить, отказалось делать тему племенной. Завсегдатай с высокой кармой оспорил саму рамку:
«Люди, которые сделали кривой сайт на React, ровно с той же вероятностью сделают кривой сайт на Astro, HTML-first-подходе или любой другой технологии.» — entropichorse
А пользователь React заметил, что ради этого выигрыша даже не нужно покидать экосистему: «можно рендерить компоненты в HTML и отдавать его пользователю … браузер получает чистый HTML с нулём JS по умолчанию», — написал инженер, сделавший ровно это в схожих условиях.
Один читатель заметил подмену в заголовке, которую автор и сам наполовину признаёт:
«Меня немного смутило ‘удвоили число пользователей’, ведь это скорее про входящий трафик … Видимо, это сокращение для ‘вдвое снизили отказы от формы’, что всё равно очень круто.» — tootie
Правило не в том, что «HTML хорошо, React плохо»
Честный вывод уже и полезнее, чем развязанная им война фреймворков. Для формы, чьи пользователи — обычные люди на каком угодно устройстве и соединении, проектирование под сбойный сценарий (без JS, старый браузер, нестабильная сеть) дало и лучший основной сценарий. Как сформулировал один комментатор, «проектирование под сбойные сценарии … часто ведёт к лучшим системам даже в благополучном случае». Удвоение не было магией: это люди, которых старая версия молча теряла, наконец-то дошли до конца.
Получайте такие разборы каждый день
Главные истории Hacker News — на email, в Telegram или RSS.
Модель безопасности Anthropic блокирует тех исследователей, ради которых её и сделали
Исследователь IBM X-Force не смог заставить Fable прочитать пост в блоге — фильтр пометил запрос как «кибер». Модель, которая должна помогать защитникам, раз за разом захлопывает перед ними дверь.