Voydevich
Nuxt

Що нового в Nuxt 4.6

Реліз приніс новий інтерфейс імпорту nuxt/server, оновлений @nuxt/cli v4, системний appSecret та перебудовану типізацію $fetch.

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

Головне

  • Новий шар імпорту nuxt/server для серверного коду на базі портативного RequestEvent
  • Реліз @nuxt/cli v4 з інтерактивним термінальним UI та прискореним запуском nuxt dev
  • Кореневий секрет runtimeConfig.appSecret та вбудовані session helpers без серверного сховища
  • Перебудована типізація $fetch на базі бібліотеки fetchdts для масштабних наборів маршрутів
  • Експериментальна підтримка збірки сервера через @nuxt/vite-server на базі Vite Environment API

Коротко

Nuxt 4.6 фокусується на переході до server-agnostic архітектури завдяки виокремленню незалежного шару nuxt/server та власних типів сервера. Оновлення постачається разом із новою мажорною версією @nuxt/cli v4 з інтерактивним термінальним інтерфейсом і прискореним стартом розробки. Крім того, додано механізм appSecret із вбудованими утилітами для роботи з сесіями та повністю переписано генерацію типів для $fetch.

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

Серверний шар nuxt/server

  • Власний простір імен для серверного коду: Додано джерело імпорту nuxt/server, призначене для хендлерів, middleware та серверних утиліт, на противагу клієнтському nuxt/app. Воно не прив'язує код застосунку до прямих імпортів із h3 чи nitropack.
  • Портативний RequestEvent: Утиліти побудовані на вебстандартах. Об'єкт event надає поля event.req (Request), event.url (URL), event.res ({ status, statusText, headers }), event.res.headers (Headers) та event.context.
  • Набір серверних утиліт: До складу nuxt/server входять defineEventHandler, createError/isNuxtError, методи читання URL, заголовків, query, cookies, редиректів, статусів відповідей, getRouterParam(s), getRequestIP, handleCors, getRouteRules, useRuntimeConfig, useAppConfig, читання тіла запиту (включно з валідацією через бібліотеки на базі Standard Schema або функції), а також хелпери сесій.
  • Експериментальний @nuxt/vite-server: Окрім стандартного Nitro, представлено альтернативну реалізацію @nuxt/vite-server, яка забезпечує чисті збірки сервера за допомогою Vite Environment API.
  • Відмінності в поведінці API: У nuxt/server хелпер sendRedirect повертає відповідь, а не відправляє її напряму, createError приймає параметри status та statusText, а заголовки відповіді встановлюються через event.res.headers.

@nuxt/cli v4

  • Інтерактивний UI в nuxt dev: Термінал відображає адреси URL, прогрес запуску, гарячі клавіші, а також панелі для перегляду логів помилок, маршрутів і мережевих запитів.
  • Деталізація стану сервера: Сервер розробки повідомляє причини перезавантаження чи перезапуску, змінені ключі в nuxt.config, витрати часу під час старту та тривалість ініціалізації кожного модуля.
  • Канал помилок на рівні CLI: Реалізовано канал помилок на базі my-bad, що автоматично перезавантажує процес після виправлення синтаксичних помилок у nuxt.config.ts.
  • Блокування через lock-файл: У каталозі .nuxt/ створюється lock-файл, що запобігає конфліктам між процесами nuxt dev, а також забезпечує роботу нових команд nuxt curl та nuxt task для взаємодії з активним сервером.
  • Нові команди: Додано nuxt docs "<query>" для пошуку за документацією, а прапорець nuxt preview --takeover дозволяє замінити запущений сервер попереднього перегляду.
  • Вимоги середовища: Для CLI потрібні версії Node.js v22.21+, v24.11+ або v26+. Команду nuxt init вилучено на користь npm create nuxt@latest, а підтримку Nuxt 2 та @nuxt/bridge повністю припинено.

Системний appSecret і сесії

  • Єдиний корінь секретів: Додано runtimeConfig.appSecret, значення якого встановлюється через змінну оточення NUXT_APP_SECRET. Специфічні секрети генеруються функцією deriveSecret(purpose).
  • Поведінка в dev-режимі: Якщо значення не задано в розробці, Nuxt автоматично генерує та зберігає секрет; під час production-збірок секрет автоматично не створюється.
  • Сесії без бази даних: У nuxt/server додано хелпер useSession, який запечатує сесії в cookies за допомогою бібліотеки iron, не потребуючи окремого серверного сховища.

Перебудований typed $fetch

  • Інтеграція з fetchdts: Механізм типізації $fetch і useFetch переписано на базі бібліотеки fetchdts, замінивши інтерфейс InternalApi з Nitro.
  • Таблиця статичних маршрутів: Nuxt компілює серверні маршрути в дерево з таблицею точних збігів для статичних шляхів, що усуває помилку TS2589 на проєктах із сотнями маршрутів і зменшує кількість інстанціювань типів.

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

  • Безпека: Заборонено доступ dev-сервера до вихідних файлів збірки Nitro dev та згенерованого dev-секрету. Закрито витік файлів через клієнтські звіти про помилки у Vite. У схемі налаштовано ігнорування директорії .wrangler.
  • Обробка помилок у продакшені: У production-режимі сторінка помилки та payload передають повідомлення і дані виключно для помилок, створених через createError; інші деталі вирізаються.
  • Захист dev-серверів: Сервери розробки Webpack та Rspack відхиляють несанкціоновані заголовки Host; додано конфігурацію devServer.allowedHosts.
  • Правила маршрутизації (Route Rules): Правила cache, swr та isr тепер кешують лише запити GET і HEAD та ігнорують відповіді, що встановлюють cookies або мають заголовки Cache-Control: private чи no-store. Додано підтримку шляхів із закодованими слешами.
  • Визначення робочого простору: За відсутності налаштування workspaceDir Nuxt розширює контекст далі rootDir тільки за наявності явного кореня workspace або найближчого git-репозиторію.
  • Продуктивність збірки: Пропускається компіляція звичайних блоків стилів під час серверної збірки Vite, оптимізовано перевірки вкладених директорій у fs.allow, а виклик $fetch глобально типізовано через TypedFetch.

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