Release·  

Nuxt 3.15

Вышел Nuxt 3.15 — Vite 6, улучшенный HMR и более быстрая работа.
Daniel Roe

Daniel Roe

@danielroe.dev

Мы продолжаем работать над Nitro v3, Nuxt v4 и другими релизами. И рады выпустить Nuxt v3.15 как раз к праздникам.

❄️ Снегопад!

С наступающим! При запуске Nuxt (если вы в Северном полушарии) на экране загрузки появится снег (#29871).

⚡️ Vite 6 в комплекте

В Nuxt v3.15 впервые включён Vite 6. Несмотря на мажорную версию, для пользователей Nuxt это не должен быть breaking change (см. руководство по миграции). Осторожнее с зависимостями, завязанными на конкретную версию Vite.

Одно из главных изменений в Vite 6 — новый Environment API; мы планируем использовать его вместе с Nitro для улучшения серверного dev-окружения. Следите за обновлениями!

Полный список изменений — в changelog Vite 6.

🪵 Улучшения Chromium DevTools

В v3.15 улучшена интеграция в dev-режиме с инструментами разработчика браузеров на Chromium.

Используется Chrome DevTools extensibility API для вывода таймингов хуков Nuxt в панели Performance.

🗺️ Режим navigation для callOnce

callOnce — встроенный composable Nuxt для однократного выполнения кода (например, на сервере — и не повторять на клиенте). Иногда нужно выполнять код при каждой навигации, но без двойного запуска при первой загрузке. Для этого добавлена опция mode: 'navigation': код выполняется один раз за навигацию. (Подробнее: #30260.)

await callOnce(() => counter.value++, { mode: 'navigation' })

🥵 HMR для шаблонов, страниц и метаданных

Включён hot module reload для виртуальных файлов Nuxt (маршруты, плагины, сгенерированные файлы) и для содержимого метаданных страниц в макросе definePageMeta (#30113).

В dev изменения в маршрутах применяются быстрее, без полной перезагрузки страницы.

📋 Расширенные метаданные страниц

Добавлено извлечение дополнительных ключей мета (для авторов модулей) через experimental.extraPageMetaExtractionKeys (#30015) — их можно использовать на этапе сборки в хуке pages:resolved.

В definePageMeta теперь поддерживаются локальные функции (#30241). Например:

function validateIdParam(route) {
  return !!(route.params.id && !isNaN(Number(route.params.id)))
}

definePageMeta({
  validate: validateIdParam,
})

🔥 Производительность

Манифест приложения предзагружается в браузере, если он нужен при гидрации (#30017).

История vue-router в hash mode вырезается из бандла tree-shaking'ом, если не кастомизирован app/router.options.ts (#30297).

🐣 Подготовка к v4

Несколько изменений по умолчанию для v4: в том числе инлайнятся стили по умолчанию только для Vue-компонентов (#30305).

✅ Обновление

По-прежнему рекомендуем выполнить:

npx nuxi@latest upgrade --force

Команда обновит lockfile и подтянет зависимости Nuxt, в том числе из экосистемы unjs.

Полный список изменений

Читать полный список изменений Nuxt v3.15.0.

Большое спасибо всем, кто участвовал в релизе. ❤️

Если есть замечания или проблемы — напишите нам! 🙏

← Вернуться в блог
Nuxt on LinkedInNuxt on BlueskyNuxt on X