← Усі статті

З Next.js на Astro: коли блог не потребує React у браузері

Розробник переніс портфоліо з Next.js 15 на Astro 6: ~230 KB JS на сторінці поста стало ~0 KB, Lighthouse 99–100.

З Next.js на Astro: коли блог не потребує React у браузері
Зміст

Коротко

На Dev.to автор описав міграцію особистого сайту з Next.js 15 (React 19, Framer Motion, GSAP) на Astro 6: для контентного блогу React-рантайм і гідратація виявилися зайвими — сторінка поста перестала відвантажувати JS у браузер.

Що сталося

v1 був «портфоліо-флексом»: анімації, dual design modes, markdown через content-collections, next-mdx-remote, react-markdown, starry-night. Коли фокус змістився на щотижневий блог, стало видно: ~180 KB framework + ~45 KB React + ~60 KB Framer Motion + ~30 KB GSAP — заради статичного тексту.

Next.js вміє SSG, але гідратує сторінки: браузер качає, парсить і виконує JS для абзаців і code blocks.

Astro за замовчуванням віддає HTML + CSS; JS лише там, де потрібна інтерактивність (islands). У автора на всьому сайті — маленький inline-скрипт для dark mode.

Міграція зайняла ~день: MDX-пости скопіювали, Tailwind v4 і теми зберегли, Shiki з коробки замість starry-night, View Transitions API замість Framer Motion.

Чому це важливо

Вибір фреймворку — не «Astro vs Next.js назавжди», а fit під задачу:

Сценарій Розумний вибір
SaaS, дашборди, e-commerce Next.js / повноцінний React
Контентний блог, документація Astro / аналоги zero-JS за замовчуванням

Цифри зі статті: Lighthouse Performance 85–90 → 99–100, build ~15s → ~5s, залежності 30+ → ~10.

На практиці

  1. Оцініть, скільки JS реально потрібно на типовій сторінці блогу — якщо лише typography і підсвітка коду, React може бути надмірним.
  2. В Astro content collections і Shiki закривають 80% потреб без content-collections + rehype-ланцюжків.
  3. React-компоненти залишаються доступними через client:load для рідких віджетів.
  4. Не викидайте «шоу»-анімації портфоліо заради блогу — автор свідомо пожертвував morphing layout заради швидкості публікацій.
  5. Старий Next-сайт можна залишити архівом — міграція не зобов’язана бути «все або нічого».

Підсумок

Матеріал — здоровий framework fit: Next.js чудовий для застосунків, Astro — для контенту. Якщо ваша головна робота — віддавати markdown швидко, zero-JS за замовчуванням часто перемагає «бензопилу для масла».