Astro vs Next.js: что выбрать для российского B2B
Next.js — индустриальный стандарт для React-разработки. Astro — относительно молодой фреймворк с островной архитектурой. На каком из них собирать B2B-сайт в 2026 — разбираем по шести критериям, которые реально влияют на проект, не на холивар в твиттере.
В 2026 для нового B2B-сайта на JavaScript-стеке выбор практически сводится к двум фреймворкам: Astro и Next.js. SvelteKit и SolidStart остаются нишевыми, Nuxt 3 — выбор Vue-команд, но его я в этой статье не рассматриваю (отдельная стать для Vue-стека).
В Raylet Studio мы используем оба фреймворка, и наш дефолтный выбор — Astro. В этой статье — почему, и в каких сценариях мы всё-таки берём Next.js.
Краткая разница
| Параметр | Astro 5 | Next.js 15 |
|---|---|---|
| Архитектура | Multi-page app + Islands | Single-page app + RSC |
| Дефолтный JS на клиенте | 0 KB | ~50 KB (RSC framework) |
| UI-фреймворк | Любой (Vue/React/Svelte/Solid через интеграции) | React (через React Server Components) |
| Routing | File-based, MPA | File-based, App Router (RSC) |
| SSR / SSG | Static первичен, SSR опционален | SSR/RSC первичен, static опционален |
| Изображения | <Image /> с автооптимизацией | next/image |
| Content management | Content Collections (Astro 5) | Filesystem или CMS |
| Кривая обучения | Низкая | Средне-высокая (RSC сложно) |
Шесть критериев выбора
Холивары на тему «какой фреймворк лучше» обычно бесполезны, потому что не учитывают контекст. Я опишу шесть критериев, по которым реально различаются проекты.
1. Что делает сайт на клиенте
Это самый важный критерий. Сайты делятся на три категории:
- Контентный сайт. Лендинги, корпоративные сайты, блоги, документация, портфолио. Клиентский JS — минимальный (мобильное меню, форма контактов, иногда галерея). 90% сайтов в моём опыте подходят сюда.
- Сайт с фрагментами интерактивности. Калькуляторы, фильтры, чат, dashboard’ы. Клиентский JS есть, но он не основа сайта — это «островки» внутри статических страниц.
- Полноценное SPA. SaaS-приложение, internal tool, complex web app. Клиентский JS — основа, статика — обёртка.
Astro идеально подходит для первых двух категорий. Третья — это Next.js, потому что роутинг, состояние, оптимизация re-renders — всё заточено под SPA.
В нашей студии большинство проектов — категория 1-2: B2B-сайты с калькуляторами, портфолио, корпоративные блоги. Поэтому Astro.
2. Что критичнее: TTFB и LCP или Time to Interactive
Astro по умолчанию даёт 0 KB клиентского JS на странице, если не используются Islands. Это означает мгновенный TTFB и LCP — браузер получает готовый HTML и сразу его отрисовывает.
Next.js с App Router и RSC лучше предыдущих версий, но всё равно отгружает RSC-фреймворк (~50 KB) и hydratable React tree даже для статических страниц. На быстром интернете это незаметно, на 4G в регионе — вполне.
Если ваш PageSpeed Mobile ниже 70 на текущем сайте — Astro почти гарантированно вытащит вас в 90+. Next.js потребует больше усилий по оптимизации.
3. UI-фреймворк команды
Astro поддерживает Vue, React, Svelte, Solid, Lit — выбирайте под команду. Можно даже комбинировать (хотя это избыточно). Next.js — только React.
Если ваша команда уже работает на Vue — Astro даёт возможность собрать сайт на Astro + Vue Islands без переписывания всего на React. Если у вас уже React-стек и React-разработчики — Next.js будет более естественным.
В Raylet мы выбрали Astro + Vue 3 как основной стек: Vue даёт нам Single File Components, простую реактивность через Composition API и хорошую DX. Astro даёт нам производительность и MPA-структуру.
4. Сложность routing’а
Astro — file-based MPA. Каждая страница — отдельный HTML, переходы — обычные ссылки. Никакого client-side routing’а, никаких state managers «между страницами», никакого «View Transitions» сложности по умолчанию (есть как опция).
Next.js App Router — это современный паттерн с RSC, layouts, parallel routes, intercepting routes, route groups. Мощно, но сложно для команды без опыта Next.js. Документация на 200 страниц, debug requires reading source code.
Для контентного сайта избыточно. Для SaaS-дашборда — оправдано.
5. Контент-менеджмент
Astro 5 ввёл Content Layer API — централизованный способ загружать контент из markdown, JSON, headless CMS, баз данных. Schema-валидация через Zod. Type-safe коллекции. Это лучшее, что есть в JS-фреймворках сегодня для контентных сайтов.
Next.js предлагает чтение файлов вручную (fs.readFileSync), либо CMS-интеграцию через GraphQL/REST. Контент-валидация — самостоятельно (можно тоже через Zod, но без интеграции с роутингом).
Для блога, документации, knowledge base, портфолио — Astro выигрывает с большим отрывом.
6. Деплой и инфраструктура
Astro по умолчанию собирает статический сайт. Это значит — деплой на любой статический хостинг (Cloudflare Pages, Netlify, Vercel, GitLab Pages, S3, или просто nginx на собственном VPS). Никаких runtime-зависимостей, никаких холодных стартов serverless-функций.
Next.js предполагает Node.js-runtime для SSR/RSC. Деплой — Vercel (где Next.js «родной»), либо Node-сервер на собственной инфре, либо edge-runtime. Cold start на serverless — реальная проблема для нечасто посещаемых страниц.
Для российского B2B (часто self-hosted на VPS, без доверия к западным cloud-провайдерам после санкций) Astro проще. SSG-сайт — это просто папка с HTML, любой админ её разместит.
В нашей инфраструктуре Raylet и проекты клиентов хостятся на собственном VPS под nginx — для Astro это копирование папки dist/. Next.js потребовал бы Node.js-процесс с PM2 и reverse proxy.
Когда мы берём Next.js
Несмотря на дефолтный Astro, мы используем Next.js в нескольких сценариях:
- Когда у клиента уже есть Next.js-стек и интеграция с существующей кодовой базой важнее технологического выбора.
- SaaS-проекты с complex routing. Когда нужны nested layouts, parallel routes, server actions с form-validation — это естественные паттерны Next.js, переизобретать их в Astro+Vue избыточно.
- Когда нужны RSC. Server Components с partial rendering — мощная фича для динамического дашборда. В Astro есть
server:deferдля server islands, но это не на том же уровне.
Когда Astro выигрывает безусловно
- Лендинги, портфолио, блоги, документация, корпоративные сайты. 0 KB клиентского JS — это не маркетинг, а реальное преимущество для PageSpeed.
- Сайты с фрагментами интерактивности. Островная архитектура позволяет добавить Vue/React/Svelte-компонент только там, где нужно, не превращая весь сайт в SPA.
- Контент-driven projects. Content Layer API — лучшее в индустрии.
- Проекты с критичной TTFB/LCP-метрикой. Astro даёт baseline, который Next.js просто не достигает архитектурно.
Финальный совет
Если вы выбираете для нового проекта и не уверены — возьмите Astro. С 90% вероятностью вам не понадобится сложность Next.js, а production-метрики будут лучше «из коробки».
Если у вас уже Next.js и оно работает — нет смысла переписывать ради переписывания. Пейн «у Next.js большой клиентский JS» решается оптимизацией бандлинга, partial hydration через Islands-подобные библиотеки и грамотным использованием RSC.
Если хотите обсудить ваш конкретный кейс — у нас на сайте есть калькулятор для предварительной оценки стоимости и сроков. Заходите.