Nuxt 4.5 اومد: Vite 8، استریم SSR و کدهای خطای پایدار
خلاصهٔ کاملتر
دنیل رو، سرپرست تیم Nuxt، Nuxt 4.5 رو بزرگترین انتشار مدتی اخیر توصیف میکنه: سه ارتقای عمده تو لایهٔ بیلد (Vite 8، Rspack 2 و یک خط لولهٔ تازه بر پایهٔ Rsbuild برای بیلدر Rspack)، یک حالت آزمایشی استریم SSR، سیستم کد خطای پایدار، چند composable و قرارداد تازه، و کلی کار زیرساختی که فاصله رو با Nuxt 5 کم میکنه.
بخش خوبی از این انتشار، به گفتهٔ نویسنده، لولهکشی نامرئی برای نسخهٔ ۵ ـه: رفتن روی آخرین نسخهٔ عمدهٔ چند وابستگی هستهٔ پروژه، عوض شدن بیلد خود فریمورک به tsdown و یک قرارداد پایدار برای خروجی بیلد. اگه بخوای، همین حالا میتونی با future.compatibilityVersion: 5 تغییرات شکننده رو امتحان کنی. نکتهٔ مهم دیگه: Nuxt 3 روی ۳۱ جولای ۲۰۲۶ به پایان عمر میرسه و همراه این نسخه، وصلهٔ نگهداری v3.21.9 هم با بکپورت رفع باگهای سازگار منتشر شده.
روی بیلد، Nuxt حالا روی Vite 8 میگرده که استارت سرد سریعتر و درونیات تازهٔ مبتنی بر Rolldown رو میآره؛ برای بیشتر اپها نامحسوسه، ولی اگه پلاگین Vite سفارشی داری راهنمای مهاجرت رو نگاه کن. برای بیلدر Rspack ارتقا اساسیتره: حرکت به Rspack 2 سریعتر و سبکتر، بههمراه بازسازی کل بیلدر روی @rsbuild/core. سطح عمومی دستنخورده مونده — همون builder: 'rspack' و همون هوکها — ولی زیر پوسته، سرور توسعه از طریق Rsbuild تو حالت middleware اجرا میشه.
هیجانانگیزترین بخش برای خود نویسنده استریم SSR ـه. بهجای این که کل صفحهٔ رندرشده بافر و یکجا فرستاده بشه، Nuxt پوستهٔ HTML — یعنی head و استایلها و هینتهای preload و اسکریپت ورودی — رو فوری فلاش میکنه و بعد بدنه رو همونطور که Vue رندر میکنه استریم میکنه؛ نتیجهاش بهبود چشمگیر TTFB ـه. فعال کردنش سادهست:
export default defineNuxtConfig({
experimental: {
ssrStreaming: true,
},
})یک نکتهٔ مهم قبل از روشن کردنش: چون استریم، وضعیت و هدرهای HTTP رو با همون بایت اول قطعی میکنه، هر چیزی که بعد از شروع رندر جواب رو تغییر بده — مثل ست کردن وضعیت پاسخ یا نوشتن کوکی تو میدلور — به کلاینت نمیرسه. Nuxt حالتهای رایج رو خودش مدیریت میکنه: مسیرهایی با قاعدههای تغییرمسیر، cache، isr، swr یا ssr: false خودکار به رندر بافرشده برمیگردن و تو محیط توسعه هشدار میده. استریم برای خزندهها هم خاموشه تا موتورهای جستوجو HTML کامل بگیرن.
قابلیت دوم که نویسنده ازش راضیه، سیستم کد خطای پایداره. هشدارها و خطاهای زمان بیلد و زمان اجرا حالا یک کد پایدار مثل NUXT_E1001 دارن، بههمراه توضیح کوتاهِ «چرا» و یک «راهحل» مشخص؛ کدها greppable و قابل بوکمارک کردنن و مواردی که یکخطی حل نمیشن به صفحهٔ مستند اختصاصی لینک میدن. مثلاً خطای کلاسیک «composable بیرون از کانتکست Nuxt صدا زده شد» حالا با همون کد و راهنمای runWithContext() ظاهر میشه. متن پرحرف چرا/راهحل هم از بیلد پروداکشن حذف میشه تا خروجی سبک بمونه.
از قابلیتهای تجربهٔ توسعه: composable تازهٔ useLayout یک ref فقطخواندنی میده که بگه لایهٔ فعلی این مسیر کدومه؛ named views با قرارداد نامگذاری فایل name@view.vue اجازه میده یک صفحهٔ والد چند خروجی NuxtPage داشته باشه؛ و useFetch و useAsyncData گزینهٔ واکنشی enabled گرفتن که تا شرطش برقرار نشه هیچ اجرایی — نه فتچ اولیه، نه refresh و نه تریگر watch — انجام نمیشه:
const query = ref('')
const { data } = await useFetch('/api/search', {
query: { q: query },
enabled: () => query.value.length > 2,
})بقیهٔ فهرست هم کوتاه ولی پرمغزه: اسلات custom در NuxtLink حالا خودِ prefetch و prefetched و shouldPrefetch رو بیرون میده؛ گزینهٔ آزمایشی prefetchPreloadTags هینتهای preload صفحهٔ بعدی رو — با تنزل به prefetch — به سند فعلی میآره تا ناوبری فوری حس بشه؛ و کانالهای diagnostics-channel برای رندر و island و داده و پلاگین منتشر میشن که روی Node و Deno و Bun و Cloudflare Workers کار میکنن. سمت CLI هم nuxt module remove و حالت غیرتعاملی nuxt init اضافه شده.
نکات کلیدی:
- Vite 8 با استارت سرد سریعتر، و Rspack 2 با بیلدر بازسازیشده روی Rsbuild
- استریم آزمایشی SSR برای بهبود TTFB، با بازگشت خودکار به رندر بافرشده در موارد خاص
- کدهای خطای پایدار بههمراه توضیح «چرا» و «راهحل»، حذفشده از بیلد پروداکشن
- useLayout، named views با قرارداد name@view.vue و گزینهٔ enabled در useFetch
- پایان عمر Nuxt 3 در ۳۱ جولای ۲۰۲۶ و تمرکز تیم روی پایدارسازی Nuxt 5




