Справочник по Astro 6 — фреймворку для контент-ориентированных сайтов. Архитектура островов, серверные острова, Content Layer API, сравнение с Next.js и Nuxt.
Я выбрал Astro для своих проектов не из-за хайпа, а из-за одной конкретной идеи: на клиент уходит ровно столько JavaScript, сколько нужно для интерактива, и ни байтом больше. Страница генерируется в чистый HTML, а интерактивные компоненты подключаются точечно — там, где они действительно нужны. В 2026 году этот подход стал дефолтом для контентных сайтов.
Astro — это JavaScript-фреймворк для блогов, портфолио, маркетинговых страниц и баз знаний. По данным HTTP Archive, сайты на Astro стабильно лидируют по доле прохождения Core Web Vitals среди популярных фреймворков, заметно опережая Next.js, Nuxt и Gatsby. В опросе State of JS 2025 Astro занял 1-е место по удовлетворённости среди мета-фреймворков. Версия 6.4.x — стабильная, ветка 7 — в alpha-превью. Лицензия MIT. Сайт — astro.build.
Главное событие 2026 года: в январе 2026 Astro вошёл в состав Cloudflare. Это долгосрочные инвестиции в фреймворк и тесная интеграция с edge-инфраструктурой — адаптер Cloudflare в Astro 6 переписан с нуля.
Что это
Astro — это мета-фреймворк для контент-ориентированных сайтов, который собирает страницы в статический HTML по умолчанию. Не «ещё один React-альтернатива», а принципиально другая архитектурная философия: HTML генерируется на этапе билда (или на сервере по запросу), а в браузер уходит только то, что нужно для интерактива. Это даёт скорость загрузки, которую Next.js и Nuxt физически не могут дать при прочих равных — потому что они генерируют JavaScript-бандл по умолчанию.
Четыре принципа, на которых стоит Astro:
- Server-First. Компоненты рендерятся на сервере, в браузер отправляется чистый HTML.
- Zero JS by Default. По умолчанию никакого JavaScript на клиенте — вы сами решаете, где он нужен.
- Content-Driven. Спроектирован для работы с контентом из любых источников: файлы, API, CMS.
- Customizable. Поддержка React, Vue, Svelte и других фреймворков в одном проекте.
Зачем нужно
Если вы делаете сайт, где главное — контент (статьи, услуги, описания, документация), а не сложные интерфейсы вроде Figma или Notion, Astro даст лучшую скорость загрузки среди всех популярных фреймворков. Три типичных сценария, где Astro выигрывает:
- Контент-сайты и блоги. Десятки и сотни страниц, основная работа — текст и картинки. Минимальный JavaScript в браузере = моментальная отрисовка.
- Документация. Тот же подход: контент + структура, интерактив нужен точечно (поиск, переключатель темы).
- Лендинги и маркетинговые страницы. Каждая миллисекунда загрузки влияет на конверсию. Astro отдаёт страницу за десятки миллисекунд.
- Базы знаний и справочные порталы. Структурированный контент, минимум динамики, нужны быстрые переходы между страницами.
Astro не подходит для полноценных SaaS-приложений с богатой клиентской логикой — там Next.js или Nuxt дадут больше пользы. Но для всего, где контент важнее интерфейса, Astro — лучший выбор в 2026 году.
Как устроено
Архитектура Astro строится вокруг двух идей: острова (Islands) и выбор режима рендеринга на уровне отдельных страниц. Эти две идеи дают вам скорость статического сайта и гибкость серверного приложения одновременно.
Острова (Islands) — главная архитектурная идея
Astro Islands — интерактивные UI-компоненты на статической HTML-странице. Каждый «остров» загружается и работает независимо, остальная страница остаётся чистым HTML.
На практике это значит: у вас статическая страница с текстом и картинками, а посередине — интерактивный калькулятор на React. Только калькулятор загружает JavaScript, остальная страница моментально отображается. Это не SPA, где каждая страница тянет весь бандл фреймворка. Это MPA с точечным интерактивом.
Вы сами решаете, когда загружать интерактивный компонент, через директивы гидрации:
| Директива | Когда загружается | Когда применять |
|---|---|---|
client:load | Сразу при загрузке страницы | Критичные элементы (навигация, поиск) |
client:idle | Когда браузер свободен | Некритичные виджеты, метрики, аналитика |
client:visible | Когда элемент появляется на экране | Компоненты ниже по странице |
client:media | При совпадении media query | Мобильные/десктопные версии одного компонента |
client:only | Только на клиенте, без серверного HTML | Компоненты, завязанные на браузерные API (геолокация, canvas) |
Правило простое: чем позже загружается компонент, тем меньше он мешает первому рендеру. client:visible для блока «оставить отзыв» в конце страницы — идеальный кандидат. client:load для основного меню — обязателен.
Серверные острова (Server Islands) — динамика без потери скорости
Server Islands — техника, которую Astro развивает с ветки 4.x: статическая страница отдаётся мгновенно, а отдельные «острова» с динамикой дорисовываются с сервера уже после загрузки, не блокируя первый рендер.
Если клиентские острова решают вопрос интерактивности в браузере, то серверные острова решают вопрос динамического контента без потери скорости. Персональное приветствие, аватар авторизованного пользователя, цены по региону, счётчик просмотров — всё это можно вынести с сервера, не задерживая отрисовку остальной страницы.
Чтобы превратить компонент в серверный остров, достаточно директивы server:defer (нужен установленный адаптер):
---
import Avatar from '../components/Avatar.astro';
---
<Avatar server:defer>
<GenericAvatar slot="fallback" />
</Avatar>
Страница рендерится сразу с заглушкой (fallback), а содержимое острова подгружается параллельно и появляется, как только готово. В отличие от обычного SSR, где всю страницу держит ответ сервера, здесь ждёт только сам остров.
Три режима рендеринга
Astro позволяет комбинировать подходы на уровне отдельных страниц:
1. SSG — Static Site Generation (по умолчанию). Все страницы генерируются в HTML на этапе билда. Максимальная скорость, сервер просто отдаёт готовые файлы. Идеален для контентных сайтов — блогов, документации, лендингов.
2. SSR — Server-Side Rendering. Страницы рендерятся при каждом запросе. Нужен серверный рантайм. Подходит для страниц с авторизацией или персонализацией.
3. Hybrid Rendering. Комбинация SSG и SSR в одном проекте. Основная часть сайта — статика, отдельные страницы — динамические. Самый частый production-режим в 2026 году.
Пример проекта с гибридным рендерингом:
---
// pages/about.astro — статическая страница (по умолчанию)
const data = await fetch('...');
---
<h1>About</h1>
---
// pages/dashboard.astro — динамическая страница
export const prerender = false;
const user = await getUser();
---
<h1>Welcome, {user.name}</h1>
Когда использовать
Выбор между Astro и конкурентами зависит от типа сайта и того, что важнее — контент или интерактив. Сравнение с главными альтернативами в 2026 году:
| Критерий | Astro | Hugo | Next.js | Gatsby |
|---|---|---|---|---|
| JS на клиенте | Минимум (острова) | Нет | Много (React) | Много (React) |
| UI-фреймворки | Любые | Нет | Только React | Только React |
| Content Collections | Встроенные | Встроенные | Нет (плагины) | GraphQL |
| Кастомные лоадеры | Да (Content Layer API) | Нет | Нет | Через плагины |
| Core Web Vitals | 62% | ~55% | 29% | 45% |
| Для контент-сайтов | Идеален | Идеален | Избыточен | Устарел |
Когда брать Astro:
- Контентный сайт, блог, документация, лендинг — Astro выигрывает по скорости и простоте.
- Нужен гибридный рендеринг — несколько статических страниц и одна-две динамические.
- Команда хочет использовать разные UI-фреймворки в одном проекте (React + Vue + Svelte).
- Важна интеграция с Notion или другими CMS через Content Layer API.
Когда НЕ брать Astro:
- Полноценное SaaS-приложение с богатой клиентской логикой — Next.js или Nuxt подойдут лучше.
- Сложный роутинг и stateful-интерфейсы на уровне всего приложения — это не про Astro.
- Команда не готова разбираться с островной архитектурой и директивами гидрации.
Пример
Установка и первый запуск
Установка нового проекта — одна команда:
# Создание нового проекта
npm create astro@latest
# Добавление интеграций
npx astro add tailwind
npx astro add react
# Разработка
npm run dev
# Билд
npm run build
Требования: Node.js 22+ (в Astro 6 поддержка Node 18 и 20 прекращена).
Деплой на VPS
Astro поддерживает деплой на любую платформу: VPS с nginx (статика), Node.js, Cloudflare Workers, Vercel, Netlify, Deno, AWS. Для статического сайта деплой максимально прост:
# Билд
npm run build
# Выход: ./dist/ — готовые HTML/CSS/JS
# Копирование на сервер
rsync -avz ./dist/ user@server:/var/www/site/
Content Collections с кастомным лоадером
Встроенная система управления контентом с типобезопасностью через Zod. Контент может загружаться из файлов или через кастомный лоадер из любого источника — например, из Notion API:
// src/content.config.ts
import { defineCollection, z } from 'astro:content';
const articles = defineCollection({
loader: async () => {
const response = await fetch('https://api.notion.com/v1/databases/...', {
headers: { 'Authorization': 'Bearer ...' }
});
const data = await response.json();
return data.results.map(page => ({
id: page.id,
title: page.properties.Name.title[0].plain_text,
content: page.properties.Content.rich_text[0].plain_text,
}));
},
schema: z.object({
title: z.string(),
content: z.string(),
}),
});
export const collections = { articles };
Так контент хранится в Notion (где с ним удобно работать редактору), а при билде автоматически подтягивается в Astro с проверкой типов.
Поддержка UI-фреймворков в одном проекте
Astro позволяет использовать компоненты из любого фреймворка в одном проекте — React, Vue, Svelte, Solid, Preact, Angular. Можно даже комбинировать:
---
import ReactCounter from '../components/Counter.jsx';
import VueHeader from '../components/Header.vue';
import SvelteFooter from '../components/Footer.svelte';
---
<VueHeader />
<main>
<ReactCounter client:visible />
</main>
<SvelteFooter />
Это уникальная возможность Astro: вы не привязаны к одному фреймворку и можете выбирать лучший инструмент под каждую задачу.
Что нового в Astro 6 (2026)
Astro 6 — это не косметика, а серьёзная техническая модернизация. Что стоит знать:
- Переработанный dev-сервер на Vite 7. Быстрее сборка и горячая перезагрузка, меньше различий между dev и production.
- Встроенный Fonts API. Управление шрифтами (локальными и из Google Fonts) переехало внутрь фреймворка, с автоматической оптимизацией.
- Live Content Collections. Коллекции, которые подтягивают данные не на этапе билда, а в момент запроса. Удобно для контента, который часто меняется.
- Content Security Policy (CSP). Встроенная поддержка политик безопасности контента.
- Переписанная интеграция с Cloudflare. Адаптер собрали с нуля, логичное следствие покупки Astro компанией Cloudflare.
- Экспериментальный Rust-компилятор. Преемник прежнего Go-компилятора
.astro: быстрее и в ряде случаев надёжнее. Команда развивает его на протяжении всей ветки 6.x.
Важно: Если мигрируете с Astro 5: главные ломающие изменения — удаление legacy Content Collections (остаётся только Content Layer API), переход на Zod 4 и отказ от старых версий Node. Используйте автоматический апгрейд:
npx @astrojs/upgrade.
Content Collections и Content Layer API — управление контентом
Мощная система с типобезопасностью и валидацией через Zod. Позволяет организовать контент из любого источника — файлы, API, CMS.
Важно для Astro 6: старый (legacy) API коллекций полностью удалён. Все коллекции теперь работают только через Content Layer API — с лоадерами (
glob(),file()или кастомный лоадер). Если переносите проект с Astro 5, это обязательный шаг миграции.
Как это работает:
- Определяете коллекцию в
src/content.config.ts— источник данных и схема валидации. - Данные загружаются через встроенные лоадеры (
glob(),file()) или кастомный лоадер (API, CMS). - Запрашиваете через
getCollection()иgetEntry()— с автокомплитом и проверкой типов.
Это позволяет хранить контент в привычных инструментах (Notion, Sanity, Strapi, файлы), но при этом получать строгую типизацию в коде — TypeScript подсказывает структуру данных прямо в IDE.
Встроенные возможности
Помимо архитектуры островов, Astro из коробки даёт всё, что нужно для продакшн-сайта:
- Файловый роутинг. Структура
src/pages/= структура URL.src/pages/blog/\[slug\].astro→ динамические маршруты. - View Transitions. Плавные переходы между страницами на нативных браузерных API, без SPA и без React Router.
- Оптимизация изображений. Встроенная, с автоконвертацией в WebP/AVIF.
- Prefetching. Автоматическая предзагрузка страниц при наведении на ссылки — клик по ссылке открывает страницу мгновенно.
- Middleware. Перехват запросов для аутентификации и обработки данных.
- Sitemap и RSS. Официальные интеграции для SEO.
Ограничения
Ограничения
Что учитывать
Astro не заменяет React для сложных интерфейсов — если приложение требует богатого stateful-интерфейса (drag-and-drop, сложные формы с реактивной валидацией, real-time обновления), островная архитектура становится сложнее, чем обычный SPA.
В таких случаях Astro уступает Next.js или Nuxt.
Требует Node.js 22+ — в Astro 6 прекращена поддержка Node 18 и 20.
На старых серверах нужно обновить рантайм до 22 или 24.
Content Layer API обязателен в Astro 6 — если у вас большой проект на legacy Content Collections, миграция потребует времени.
Используйте npx @astrojs/upgrade для автоматической миграции.
Rust-компилятор экспериментален
даёт прирост скорости в ряде случаев, но для production-критичных проектов лучше оставаться на стабильном Go-компиляторе до выхода Astro 7.
Cloudflare-интеграция переписана
если у вас был кастомный Cloudflare Worker, миграция на новый адаптер потребует тестирования edge-логики.
Документация английская — большая часть официальной документации и гайдов на английском.
Русскоязычные материалы появляются, но их меньше.
Антипаттерны
Антипаттерны
Чего не делать
Делать SPA на Astro — островная архитектура не предполагает, что вся страница — интерактивный остров.
Если вам нужен полноценный SPA, возьмите Next.js или Nuxt, не мучайте Astro.
Использовать `client:load` для всего подряд — каждый такой компонент блокирует рендер страницы до загрузки.
Используйте client:visible, client:idle, client:media для всего, что не критично при первом открытии.
Хранить API-ключи в коде Astro-проекта — даже в приватном репозитории.
Используйте .env файлы (которые в .gitignore) или переменные окружения платформы деплоя.
Игнорировать Content Layer API в Astro 6 — legacy Content Collections удалены.
Если проект был на старом API, миграция потребуется перед обновлением до Astro 6.
Гонять Rust-компилятор в production без тестов — экспериментальный статус означает, что поведение может меняться.
Используйте его в dev, в production оставайтесь на Go-компиляторе.
Деплоить через `npm run dev` на сервере — это dev-сервер, не production.
Для production используйте npm run build + npm run preview или настройте свой сервер (nginx + Node SSR-адаптер).
Чеклист
Чеклист
Проверка перед запуском
Тип сайта определён
понятно, контентный это сайт (Astro подходит) или SaaS-приложение (лучше Next.js/Nuxt).
Версия Node.js проверена
на сервере и в окружении разработчика установлен Node.js 22+ или 24.
Astro CLI установлен
npm create astro@latest отрабатывает без ошибок.
Dev-сервер запускается
npm run dev поднимает сайт на http://localhost:4321, страницы рендерятся.
Один интерактивный компонент работает
выбрана правильная директива гидрации (client:load, client:visible и т.д.), компонент загружается только когда нужно.
Content Collections настроены
схема Zod описана в src/content.config.ts, данные загружаются через лоадер.
Build проходит без ошибок
npm run build создаёт ./dist/ с готовыми файлами.
Контент типобезопасен
TypeScript проверяет структуру данных из коллекций, автокомплит работает в IDE.
Sitemap и RSS генерируются
интеграции @astrojs/sitemap и @astrojs/rss подключены, файлы появляются в ./dist/.
Деплой настроен
определён хостинг (VPS, Cloudflare Pages, Vercel, Netlify), команда деплоя задокументирована.
CSP-политика настроена
если используется встроенная поддержка CSP в Astro 6, заголовки проставляются правильно.
Производительность проверена
Lighthouse или PageSpeed Insights показывают зелёные Core Web Vitals на representative странице.
Ссылки
Ссылки
- Документация Astro официальная документация по всем разделам фреймворка.
- Анонс Astro 6 что нового в шестой версии.
- Гайд по миграции на Astro 6 официальная инструкция по апгрейду с Astro 5.
- Server Islands — документация отдельный гайд по серверным островам.
- Каталог тем Astro 500+ готовых тем для быстрого старта.
- Каталог интеграций официальные и community-интеграции для Tailwind, MDX, React, Vue, Svelte.
- GitHub Astro исходный код, issue tracker, обсуждения.
- Discord-сообщество Astro официальный Discord для вопросов и поддержки.