Voydevich
Astro

Що нового в Astro 7.4

В Astro 7.4 з'явилися прапорець --timings для аналізу збірки, експериментальний паралельний пререндеринг та гнучкі сервіси для зображень.

Реліз від 15 жовтня 2026 · оновлено 9 листопада 2026

Головне

  • Прапорець --timings для пошуку повільних етапів збірки в astro build
  • Експериментальний паралельний пререндеринг на кількох ядрах процесора
  • Підтримка роздільних сервісів build та runtime для оптимізації зображень
  • Експериментальна сторінка редиректів src/pages/3xx.astro для статичних збірок
  • Підвищення мінімальної версії Node.js до 22.23.4 (з підтримкою 22.22.0 у WebContainers)

Коротко

Реліз Astro 7.4 зосереджений на продуктивності збірок та гнучкості конфігурації. До команди astro build додано інструменти діагностики часу виконання, а також представлено експериментальну генерацію статичних сторінок паралельно на кількох ядрах процесора. Крім того, оновлення принесло роздільні сервіси обробки зображень для збірки та рантайму, покращення для провайдерів шрифтів і свіжі виправлення стабільності.

Нові можливості

Продуктивність та оптимізація збірки

  • Прапорець --timings для команди astro build: дозволяє виявити причини тривалої збірки (інтеграції, плагіни Markdown, генерація зображень або підсвічування синтаксису). Після завершення процесу виводиться підсумковий звіт із часом кожного етапу:
    astro build --timings
    
  • Експериментальний паралельний пререндеринг (experimental.parallelPrerender): дає змогу рендерити статичні сторінки за допомогою кількох ядер процесора одночасно. За замовчуванням задіюються всі ядра CPU, крім одного. Кількість потоків можна налаштувати параметром workers:
    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      experimental: {
        parallelPrerender: {
          workers: 4,
        },
      },
    });
    
    Кожен воркер обробляє кількість сторінок відповідно до build.concurrency. Прапорець ігнорується, якщо адаптер використовує власний підхід до пререндерингу (наприклад, @astrojs/cloudflare).

Зображення та інтеграції

  • Роздільні сервіси build та runtime для зображень: властивість image.service тепер підтримує розділення. Сервіс build обробляє зображення на етапі пререндерингу та в режимі розробки, а runtime — для динамічних сторінок і кінцевої точки зображень:
    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
      image: {
        service: {
          build: { entrypoint: 'astro/assets/services/sharp' },
          runtime: { entrypoint: 'my-image-cdn-service' },
        },
      },
    });
    
  • Керування каталогами виводу та звітність про зображення для пререндерерів: інтеграції можуть контролювати розміщення результатів збірки клієнта, сервера й пререндерингу через новий контекст outputDirectories у setPrerenderer. Також користувацькі пререндерери тепер можуть повертати дані про зображення у getStaticPaths() та render().
  • Покращення провайдерів шрифтів:
    • Додано необов'язковий колбек getFontProperties(), що описує доступні насиченості (weights), стилі (styles), підмножини (subsets) і формати (formats) шрифту. В Astro 8 цей метод стане обов'язковим.
    • У контекст init() додано функцію fetch(), яка підтримує повторні спроби запитів у разі тимчасових збоїв під час взаємодії з API провайдерів.

Маршрутизація та обробка помилок

  • Кастомні сторінки редиректів (experimental.redirectPage): прапорець дозволяє замінити автоматично згенеровані HTML-файли редиректів власним шаблоном src/pages/3xx.astro. Сторінка отримує властивості from, to, status, delay і обов'язково повинна містити тег <meta http-equiv="refresh">:
    ---
    // src/pages/3xx.astro
    import type { RedirectPageProps as Props } from 'astro';
    
    const { from, to, status, delay } = Astro.props;
    ---
    
    <html lang="en">
      <head>
        <meta http-equiv="refresh" content={`${delay};url=${to}`} />
        <meta name="robots" content="noindex" />
        <title>Redirecting…</title>
      </head>
      <body>
        <p>This page has moved. <a href={to}>Continue to {to}</a>.</p>
      </body>
    </html>
    
  • Обробник notFound() для astro/fetch та astro/hono: рендерить власну сторінку 404 (включно з пререндереною 404.astro) у точках входу нестандартних серверів чи воркерів (наприклад, у застосунках Hono на Cloudflare Workers без App.render).

Виправлення та покращення

  • Системні вимоги: мінімальну підтримувану версію Node.js підвищено до 22.23.4 (для виправлення вразливостей платформи), водночас робота CLI дозволена на Node.js >=22.22.0 всередині WebContainers (StackBlitz).
  • Збірка та оптимізація:
    • Збереження дат останньої модифікації кешованих оптимізованих зображень, шрифтів та публічних файлів при копіюванні у фінальний білд.
    • Прискорено синхронізацію контенту з опцією experimental.collectionStorage: "chunked" завдяки розрахунку ширини символів UTF-8 безпосередньо за кодовими точками.
    • Виправлено витік пам'яті під час редагування конфігурації Astro при запущеному сервері розробки.
    • Усунено помилку DataCloneError під час роботи experimental.parallelPrerender з імпортованими SVG через <Image /> або getImage().
    • Запобігання потраплянню невикористаних стилів у збірку, якщо компоненти повторно експортувалися через barrel-файли.
  • Маршрутизація та навігація:
    • Виправлено обробку i18n fallback для сторінок на вимогу (SSR), які раніше могли повертати статус 302 без заголовка Location.
    • У компоненті <ClientRouter /> відновлення позиції прокручування під час переходів вперед/назад тепер відбувається миттєво, навіть якщо задано scroll-behavior: smooth.
    • Запити зі спотвореним percent-encoding (як-от /%C0%AF або незакритий %) тепер коректно повертають статус 400.
  • Безпека та CSP: директиви CSP більше не створюють хеші порожніх рядків для зовнішніх стилів і скриптів, а також коректно враховують хеші з Astro.csp для компонентів усередині <body> у статичних збірках.
  • CLI та середовище:
    • astro check тепер повертає код завершення 1, якщо @astrojs/check або typescript відсутні в системі, або коли конвеєр виводу закрито передчасно.
    • astro add отримав підтримку налаштування версій офіційних адаптерів за тегами (tagged versions).
    • Виправлено некоректне пошкодження змінних середовища в astro:env/server та import.meta.env, якщо значення містили символи $.

Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо