Vercel نسخهٔ 16.3 از Next.js را عرضه کرد؛ به‌روزرسانی بزرگ با دو هدف اصلی: تسریع ساخت‌ها و سبک‌تر کردن تجربهٔ توسعه. مهم‌ترین ویژگی جدید مجموعهٔ اختیاری Instant Navigations است که حس ناوبری آنی در اپ‌های تک‌صفحه‌ای را به مدل سرور-محور Next.js می‌آورد.

کاهش چشمگیر مصرف حافظه در حالت توسعه

Turbopack در هنگام اجرای next dev تا 90٪ حافظهٔ کمتری مصرف می‌کند. این بهبود ناشی از فعال‌سازی پیش‌فرض کش دیسک و مکانیزم جدید آزادسازی حافظه (memory eviction) است. Vercel گزارش کرده مصرف برخی داشبوردها از 21.5 گیگابایت به 2 گیگابایت کاهش یافته و نمونه‌هایی که پیش‌تر حدود ~4 گیگابایت مصرف می‌کردند اکنون نزدیک ~1.5 گیگابایت شده‌اند.

تأثیرهای عملی شامل موارد زیر است:

  • کاهش شدید مصرف حافظه در محیط توسعه و ماشین‌های CI،
  • افزایش سرعت ساخت‌های تکراری در CI تا 5.5 برابر به‌دلیل کش دیسک،
  • ارتقای تجربهٔ توسعه در پروژه‌های بزرگ و monorepoها.

سریع‌تر شدن بررسی نوع (Type Checking) و ساخت

next build اکنون از TypeScript 7 پشتیبانی می‌کند؛ نسخهٔ بومی که مایکروسافت ادعا می‌کند تا حدود 10 برابر سریع‌تر است. برای ارتقا در محیط توسعه:

pnpm add -D typescript@^7

در پروژهٔ جدید کافی است آخرین نسخهٔ Next.js را نصب کنید:

npm install next@latest

بازسازی رندر سمت سرور با استریم‌های بومی Node.js

Next.js رندر سمت سرور را از web streams به استریم‌های بومی Node.js منتقل کرده است. طبق گزارش Vercel، این تغییر می‌تواند تا 22٪ بار درخواست بیشتری را مدیریت کند — بدون نیاز به تغییر در کد اپلیکیشن. این تحول همچنین بر جهت‌گیری runtimeها تأثیر گذاشته و نقش برخی runtimeهای edge را کمرنگ‌تر می‌کند.

Instant Navigations: ناوبری آنی با مدل سرور

Instant Navigations مجموعه‌ای اختیاری است که واکنش‌پذیری ناوبری را با حفظ مزایای رندر سرور تأمین می‌کند. این قابلیت مبتنی بر دستور use cache است و برای فعال‌سازی از دو فلگ استفاده می‌شود.

چطور فعال شود

const nextConfig: NextConfig = {
  cacheComponents: true,
  partialPrefetching: true,
};

اجزای کلیدی و نحوهٔ کار

  • Partial Prefetching: پیش‌بارگذاری‌های کوچک را در قالب یک شِل قابل استفادهٔ مجدد برای هر مسیر تجمیع می‌کند. مثلاً Roboto Studio نشان داده 20 لینک کناری می‌تواند به‌جای 20 درخواست جداگانه، از یک شِل کش‌شده استفاده کند که تأخیر اولین نمایش را به‌طور محسوسی کاهش می‌دهد.
  • cacheComponents: مؤلفه‌ها را در کش نگهداری می‌کند تا رندر مجدد سریع‌تر صورت گیرد.
  • Instant Insights: ابزار توسعه‌ای که به‌صورت خودکار ناوبری‌هایی را که فوری نیستند شناسایی می‌کند.
  • Playwright helper — instant(): امکان نوشتن تست‌هایی را فراهم می‌کند که افت تجربهٔ ناوبری را پیش از انتشار پیدا کنند.

محدودیت‌ها و هشدارهای فعلی

فعال‌سازی فلگ‌ها با شرایطی همراه است؛ گزارش‌ها در GitHub و ردیت موارد زیر را نشان داده‌اند:

  • خروجی‌های استاتیک (static exports) با Partial Prefetching ناسازگارند،
  • استایل‌های سراسری styled-jsx ممکن است بین مسیرها نشت پیدا کنند،
  • خودمیزبانی روی برخی پلتفرم‌ها مانند SST همراه با cacheComponents می‌تواند رندر سمت سرور را مختل کند.

پیشنهاد عملی: به‌روزرسانی به نسخهٔ 16.3 را برای بهبودهای کلی عملکرد در نظر بگیرید، اما Instant Navigations را به‌صورت مرحله‌ای و مسیر به مسیر فعال کنید تا ریسک برگشت تجربهٔ کاربری کاهش یابد.

تصویری از داشبورد و نمودارهای مصرف حافظه پس از ارتقای Next.js 16.3

چگونه مهاجرت کنیم

برای پروژه‌های موجود، مراحل زیر مفید است:

  • راهنمای migrating to Cache Components را دنبال کنید،
  • Instant Navigations را ابتدا روی مسیرهای کم‌خطر و بخش‌های با ترافیک پایین تست کنید،
  • از ابزارهایی مثل Instant Insights و تست‌های Playwright (با instant()) برای ارزیابی تجربهٔ ناوبری استفاده کنید،
  • تست‌های استایل و خروجی‌های استاتیک را پس از فعال‌سازی فلگ‌ها به‌دقت اجرا کنید،
  • در محیط‌های CI/Caching بررسی کنید که کش دیسک به‌درستی پیکربندی شده باشد تا از مزایای سرعت و صرفه‌جویی حافظه بهره‌مند شوید.

اهمیت تغییرات

این نسخه به یکی از نقدهای پیشین پاسخ می‌دهد: Server Components گاهی در مقایسه با SPAها کند به‌نظر می‌رسید. Instant Navigations شِل‌های بارگذاری فوری را وارد مدل سرور می‌کند و در عین حال مزایای SEO و امنیت رندر سمت سرور را حفظ می‌نماید. هم‌زمان، تغییرات نشان‌دهندهٔ گرایش اکوسیستم به سمت سناریوهای عامل‌محور و فراهم شدن انتخاب‌های بیشتر برای تیم‌هاست.

منابع و لینک‌های مفید

نسخهٔ 16.3 ترکیبی از بهبودهای عملکردی و ابزارهایی است که تجربهٔ کاربری را به ناوبری آنی در وب نزدیک‌تر می‌کند. به‌منظور بهره‌مندی کامل، تیم‌ها باید قابلیت‌ها را آزمایش و به‌صورت مرحله‌ای پیاده‌سازی کنند تا تداخل با ویژگی‌های فعلی به حداقل برسد.