Представлен Proa — Rust-фреймворк с серверным рендерингом и выводом в разные форматы

На Hacker News представили Proa — веб-фреймворк на Rust для серверного рендеринга и вывода компонентов в HTML и Markdown. Авторы предлагают проверить его на одном маршруте действующего проекта.

· 4 мин чтения · 3 комментария

15 октября 2026 года на Hacker News появилась публикация Show HN о Proa — веб-фреймворке на Rust для серверного рендеринга и вывода компонентов в разные форматы. Описание возможностей и заявления о скорости взяты с сайта Proa, на который ведёт публикация. Команде, заинтересованной в фреймворке, авторы предлагают начать с одного маршрута, не перенося сразу всё приложение.

Один компонент для разных форматов

В Proa интерфейс описывается типизированными компонентами на Rust. В примере с карточкой товара один компонент выводит название и ссылку на покупку как HTML для веб-страницы или как Markdown. Данные остаются общими, но правила отображения для каждого формата разработчик задаёт отдельно. Речь именно о форматах вывода, а не о работе одного интерфейса на разных платформах.

Компоненты получают типизированный WebContext. Через него доступны данные текущего запроса, состояние маршрута, метаданные ответа и кэш загрузки данных. В компонентную модель авторы также включили маршруты, макеты страниц, статические файлы, формы и изменения данных. Proa таким образом описывается как фреймворк для приложения, а не только как средство генерации разметки.

HTML можно отдавать потоком двумя способами: сохраняя порядок элементов документа или отправляя готовые части вне этого порядка через границы Suspense. Второй вариант предусмотрен для случаев, когда отдельные данные загружаются медленно и не должны задерживать остальные части страницы. Что именно увидит посетитель первым, зависит от того, как разработчик устроит страницу.

Интерактивность и заявленные возможности

По замыслу авторов, основой страницы остаётся HTML с сервера. Клиентское поведение добавляют выборочно через RSJS islands: сигналы, привязку значений и обработчики событий задают на Rust, а компилятор преобразует их в JavaScript. Каждый такой участок получает небольшой модуль и начальное состояние. Для общего runtime указан размер около 1,3 КБ в сжатом gzip-виде.

В наборе Proa UI компоненты поставляются исходным кодом на Rust, который можно хранить и изменять в своём репозитории. Среди примеров — таблицы, кнопки, поля форм и карточки. Аккордеон показан без JavaScript: он работает на радиокнопках и CSS. В каталоге заявлены 58 компонентов с примерами, описанием свойств и кодом для копирования; часть из них помечена как Pro. Подход с проверками ещё при сборке напоминает типобезопасные HTML-шаблоны для Zig, хотя это другой инструмент.

Сайт Proa перечисляет проверки доступности во время cargo build, автоматическое экранирование вывода, защиту запросов между источниками и защитные заголовки. Это функции фреймворка, но они не отменяют проверки готовых страниц, форм и действий пользователя.

На сайте также показаны независимые демонстрации интерфейсов, похожих на GitHub, Sentry и Airbnb; авторы указывают, что эти сервисы не участвовали в их создании. Для одного из замеров времени рендеринга указан сервер с 8 виртуальными ядрами AMD EPYC-Milan. Раздел с графиками отдельно подписан Apple M4 Max и сентябрём 2026 года. Эти данные описывают представленные тесты, но не показывают, какой будет скорость конкретного приложения.

Как проверить Proa на действующем проекте

Для разработчиков в анонсе описаны два пути: использовать Proa с Axum для маршрутов и ответов либо вызывать его через FFI из Node, Go, Python, Ruby или Java. Авторы предлагают направить на Proa один маршрут, оставив остальную часть приложения на прежнем стеке. Затем в рабочей среде можно сравнить задержку и стоимость этого маршрута с текущим решением — без решения о переносе всего проекта заранее.

Владельцу сайта или маркетологу такой пробный маршрут даёт предмет для разговора с командой: как быстро приходит серверный HTML, сколько JavaScript получает посетитель и работают ли нужные элементы страницы. Демонстрации и бенчмарки на сайте Proa не отвечают на вопросы о сроках разработки конкретного проекта или его поисковом трафике. Для этих выводов нужны данные самого проекта, а не только показатели из анонса.

Моё мнение: начать с одной страницы

Мне как начинающей веб-дизайнерке нравится, что пример с HTML и Markdown заставляет подумать отдельно о содержании и его представлении. Но проверять Proa я бы стала на одной настоящей странице: посмотрела бы на адаптивную шапку, формы и вывод данных, прежде чем обсуждать цифры рендеринга. Базовая вёрстка всё равно помогает увидеть, почему аккуратный макет не всегда переносится на экран телефона.

На мой взгляд, новый фреймворк нужен не каждому проекту. Для портфолио или простого события конструктор может быть хорошим выбором. Если же команда уже развивает приложение и хочет проверить серверный рендеринг без полной миграции, опыт с одним маршрутом кажется мне разумным началом.

Источники

Откуда новость. Текст — пересказ своими словами, факты — из источника, мнение — автора.

  1. Show HN: Proa – a Rust web framework with fast SSR and multi-target rendering proa.so

Об авторе

Филипа Сантуш

начинающая веб-дизайнерка

Собираю первые сайты для небольших проектов в Порту и учусь переводить макеты в адаптивные страницы. На прошлой неделе впервые сама исправила сломавшуюся мобильную шапку.

Все публикации автора

Фронтенд 3 мин чтения

Bez генерирует браузерный движок по веб-спецификациям и тестам

Bez создаёт браузерный движок по веб-спецификациям, сверяя результат с Chromium, Firefox и WebKit. Проект пока на ранней стадии, а опубликованные показатели не означают готовность движка.

Инструменты 4 мин чтения

PaperPilot представил локальный PDF-движок на Rust с поддержкой WASM и MCP

PaperPilot объединяет локальные инструменты для работы с PDF: браузерный движок на WASM, CLI, настольное приложение, REST API и MCP-сервер. В версии v0.6 доступны операции со страницами, сжатие и извлечение текста.

Скорость 4 мин чтения

Автор блога убрал Next.js и получил 100 баллов во всех категориях Lighthouse

Автор Bloffy заменил Next.js на Hono в публичной части блога и получил 100 баллов Lighthouse во всех категориях. Объясняем, почему кеша и оптимизации изображений оказалось недостаточно.

Написать комментарий

Не публикуется. Пришлём ссылку, чтобы подтвердить комментарий.

Без ссылок и рекламы. Первый комментарий публикуется после проверки. Отправляя комментарий, вы соглашаетесь с политикой конфиденциальности.

  1. Я бы не принимала предложение «проверить на одном маршруте» за достаточную оценку применимости. Карточка товара в HTML и Markdown показывает общий компонент, но не отвечает на важный вопрос: как Proa ведёт себя с реальными данными запроса, ошибками и интерактивностью на маршруте, где эти вещи связаны. Для проверки я бы взяла не самый простой экран, а маршрут с формой или состоянием пользователя и заранее сравнила результат с текущей реализацией — иначе можно подтвердить лишь то, что генерация двух форматов работает на демонстрационном примере.

    1. Уточню: в предложении авторов один маршрут — это способ начать проверку, а не достаточное доказательство применимости. Для такого маршрута важно отдельно проверить, как типизированный WebContext передаёт данные запроса и состояние, и как обрабатываются ошибки; у вас интерактивность тоже входит в критерии или вы рассматриваете её отдельно?

      1. Филипа Сантуш Автор публикации

        Интерактивность проверяла бы отдельным сценарием: отправка формы, сохранение состояния пользователя и реакция на ошибку. Но в итоговой оценке маршрута её всё равно нужно учитывать — иначе получится тест только серверного вывода.