Vercel 近期發布了 Next.js 16.3 版本,這是自去年 16.0 版本以來最重要的一次更新。此次更新的核心目標在於解決開發者長期以來對伺服器元件(Server Components)反應速度的疑慮,同時大幅降低開發環境的資源消耗,並提升整體建置速度。Next.js 作為一個基於 React 的開源框架,透過提供檔案路由、伺服器端渲染(Server-side Rendering, SSR)以及 App Router 等功能,已成為開發從靜態網站到大規模動態應用程式的主流選擇。
開發環境的資源優化
針對開發者最常抱怨的資源佔用問題,Next.js 16.3 對其增量編譯工具 Turbopack 進行了深度優化。透過導入預設開啟的磁碟快取(Disk Caching)與全新的記憶體逐出機制(Memory Eviction),Turbopack 在執行 next dev 指令時的記憶體使用量最高可降低 90%。
這種優化在大型專案中尤為顯著。根據 Vercel 的內部測試,其管理後台的記憶體佔用從 21.5GB 驟降至 2GB。而早期採用者的回饋也顯示,記憶體使用量從 4GB 降至 1.5GB,讓開發環境回歸到正常的資源消耗水準。除了記憶體降低,相同的磁碟快取機制也被應用於 next build 建置流程,使得在持續整合(CI)環境下的重複建置速度最高可提升 5.5 倍。此外,透過將本地依賴項升級至 TypeScript 7,該版本利用微軟開發的原生移植版本,使型別檢查的速度提升了約十倍。
伺服器效能與運行時調整
在伺服器端渲染的底層實作上,Next.js 16.3 將原先基於 Web Streams 的實作改為使用 Node.js 的原生串流(Native Node.js Streams)。這項變更旨在提高伺服器在高負載下的處理能力。Vercel 指出,在不需要修改任何程式碼的情況下,伺服器處理請求的能力提升了約 22%。
伴隨此項變更,Vercel 同時宣布廢棄 Edge Runtime(邊緣運行時)。這顯示出 Next.js 正將重心重新移回 Node.js 生態系,以追求更穩定的性能表現與更深度的原生整合。
Instant Navigations 與使用者體驗
本次更新最受關注的功能是 Instant Navigations(即時導覽),這是一套可選用的工具集,旨在讓 Next.js 在保留伺服器驅動模型(Server Model)的同時,獲得如同客戶端驅動單頁應用程式(Single-Page App, SPA)般的極速反應。該功能基於去年推出的 use cache 指令,開發者可透過在設定檔中開啟 cacheComponents 與 partialPrefetching 兩個旗標來啟用。
其中 Partial Prefetching(部分預取)技術將原本分散的多次請求整合為單一的可重複使用外殼(Shell)。例如,當頁面有二十個側邊欄連結時,原本需要發送二十次請求,現在則能將其整合為單個快取的 Shell,大幅減少網路往返次數。為了確保導覽品質,Vercel 同時推出了 Instant Insights 開發工具,能自動偵測並標記非即時的導覽行為,並提供 Playwright 的 instant() 輔助函式,讓團隊在部署前能透過自動化測試捕捉效能退化問題。
實務限制與遷移建議
儘管效能提升顯著,但 Instant Navigations 目前仍處於選擇性啟用的階段,且存在一些實務限制。根據 GitHub 社群的討論,Partial Prefetching 目前不支援靜態導出(Static Exports);在使用 styled-jsx 的專案中,全域樣式可能會在不同路由之間發生洩漏;而對於使用 SST 進行自我託管的用戶,開啟 cacheComponents 可能會導致伺服器渲染完全失效。
因此,像 Appwrite 等開發團隊建議,目前的升級路徑應分為兩步:首先升級至 16.3 以獲取預設的記憶體與建置速度優化,但對於 Instant Navigations 功能,應採取逐一路由測試、逐步導入的策略。新專案可以直接安裝最新版本,而既有專案則需參考快取元件(Cache Components)的遷移指南,在正式啟用新行為前完成適配,因為這些功能預計將在未來的重大版本中成為預設設定。
此外,為了應對 AI 驅動開發的趨勢,Next.js 16.3 開始提供與版本匹配的 AGENTS.md 區塊,旨在為程式碼生成代理人(Coding Agents)提供精準的上下文資訊,以在與 Astro 或 TanStack Start 等輕量級框架的競爭中保持開發效率的領先。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。