[{"data":1,"prerenderedAt":399},["ShallowReactive",2],{"blog-2026-02-02-nuxt-4-3-release":3},{"id":4,"title":5,"author":6,"body":7,"date":382,"description":383,"extension":384,"language":385,"meta":386,"navigation":387,"path":388,"seo":389,"stem":390,"tags":391,"__hash__":398},"blog/blog/2026-02-02-nuxt-4-3-release.md","Nuxt 4.3 Released: Route Rule Layouts, ISR Payload Extraction, and Developer Experience Improvements","NeoAI",{"type":8,"value":9,"toc":373},"minimark",[10,14,18,23,40,130,137,141,148,161,164,220,224,231,242,246,249,287,291,298,305,309,312,333,340,344,369],[11,12,5],"h1",{"id":13},"nuxt-43-released-route-rule-layouts-isr-payload-extraction-and-developer-experience-improvements",[15,16,17],"p",{},"The Nuxt team shipped version 4.3 on January 22, 2026, bringing a solid set of features that improve both developer experience and runtime performance. If you're building with the Nuxt ecosystem, here's what matters in this release.",[19,20,22],"h2",{"id":21},"centralized-layout-management-with-route-rules","Centralized Layout Management with Route Rules",[15,24,25,26,30,31,35,36,39],{},"The standout feature is ",[27,28,29],"strong",{},"route rule layouts",". Instead of scattering ",[32,33,34],"code",{},"definePageMeta"," calls across dozens of page components, you can now declare layouts centrally in your ",[32,37,38],{},"nuxt.config.ts",":",[41,42,47],"pre",{"className":43,"code":44,"language":45,"meta":46,"style":46},"language-typescript shiki shiki-themes github-light github-dark","export default defineNuxtConfig({\n  routeRules: {\n    '/admin/**': { appLayout: 'admin' },\n    '/dashboard/**': { appLayout: 'dashboard' },\n    '/auth/**': { appLayout: 'minimal' }\n  }\n})\n","typescript","",[32,48,49,69,75,91,104,118,124],{"__ignoreMap":46},[50,51,54,58,61,65],"span",{"class":52,"line":53},"line",1,[50,55,57],{"class":56},"szBVR","export",[50,59,60],{"class":56}," default",[50,62,64],{"class":63},"sScJk"," defineNuxtConfig",[50,66,68],{"class":67},"sVt8B","({\n",[50,70,72],{"class":52,"line":71},2,[50,73,74],{"class":67},"  routeRules: {\n",[50,76,78,82,85,88],{"class":52,"line":77},3,[50,79,81],{"class":80},"sZZnC","    '/admin/**'",[50,83,84],{"class":67},": { appLayout: ",[50,86,87],{"class":80},"'admin'",[50,89,90],{"class":67}," },\n",[50,92,94,97,99,102],{"class":52,"line":93},4,[50,95,96],{"class":80},"    '/dashboard/**'",[50,98,84],{"class":67},[50,100,101],{"class":80},"'dashboard'",[50,103,90],{"class":67},[50,105,107,110,112,115],{"class":52,"line":106},5,[50,108,109],{"class":80},"    '/auth/**'",[50,111,84],{"class":67},[50,113,114],{"class":80},"'minimal'",[50,116,117],{"class":67}," }\n",[50,119,121],{"class":52,"line":120},6,[50,122,123],{"class":67},"  }\n",[50,125,127],{"class":52,"line":126},7,[50,128,129],{"class":67},"})\n",[15,131,132,133,136],{},"This is particularly useful for admin panels, marketing sites, or any application where route patterns map cleanly to layout needs. The ",[32,134,135],{},"setPageLayout"," composable also now accepts a second parameter for passing props to layouts—useful for dynamic theming or conditional UI elements.",[19,138,140],{"id":139},"isr-and-swr-get-payload-extraction","ISR and SWR Get Payload Extraction",[15,142,143,144,147],{},"Incremental Static Regeneration (ISR) and Stale-While-Revalidate (SWR) pages can now generate ",[32,145,146],{},"_payload.json"," files, just like pre-rendered pages. This means:",[149,150,151,155,158],"ul",{},[152,153,154],"li",{},"Client-side navigation can leverage cached payloads instead of hitting your API",[152,156,157],{},"CDNs (including Cloudflare, Vercel, and Netlify) can cache payload files alongside HTML",[152,159,160],{},"Reduced server load during navigation, as data is prefetched from static assets",[15,162,163],{},"The configuration is straightforward:",[41,165,167],{"className":43,"code":166,"language":45,"meta":46,"style":46},"export default defineNuxtConfig({\n  routeRules: {\n    '/products/**': {\n      isr: 3600, // Revalidate every hour\n    }\n  }\n})\n",[32,168,169,179,183,191,207,212,216],{"__ignoreMap":46},[50,170,171,173,175,177],{"class":52,"line":53},[50,172,57],{"class":56},[50,174,60],{"class":56},[50,176,64],{"class":63},[50,178,68],{"class":67},[50,180,181],{"class":52,"line":71},[50,182,74],{"class":67},[50,184,185,188],{"class":52,"line":77},[50,186,187],{"class":80},"    '/products/**'",[50,189,190],{"class":67},": {\n",[50,192,193,196,200,203],{"class":52,"line":93},[50,194,195],{"class":67},"      isr: ",[50,197,199],{"class":198},"sj4cs","3600",[50,201,202],{"class":67},", ",[50,204,206],{"class":205},"sJ8bj","// Revalidate every hour\n",[50,208,209],{"class":52,"line":106},[50,210,211],{"class":67},"    }\n",[50,213,214],{"class":52,"line":120},[50,215,123],{"class":67},[50,217,218],{"class":52,"line":126},[50,219,129],{"class":67},[19,221,223],{"id":222},"developer-experience-improvements","Developer Experience Improvements",[15,225,226,227,230],{},"The error overlay introduced in Nuxt 4.2 is now ",[27,228,229],{},"draggable and minimizable",". You can snap it to screen edges or collapse it to a small pill when you need to see the page underneath while debugging. Your position preference persists across reloads.",[15,232,233,234,237,238,241],{},"A new ",[32,235,236],{},"#server"," alias provides clean imports within your server directory, eliminating the relative path traversal (",[32,239,240],{},"../../../../utils/helper",") that often plagues larger projects. It includes import protection to prevent accidental client-side usage.",[19,243,245],{"id":244},"performance-under-the-hood","Performance Under the Hood",[15,247,248],{},"Several internal optimizations landed in this release:",[149,250,251,257,267,281],{},[152,252,253,256],{},[27,254,255],{},"Hook filters"," prevent plugins from running hooks unnecessarily",[152,258,259,262,263,266],{},[27,260,261],{},"SSR styles optimization"," significantly speeds up the ",[32,264,265],{},"nuxt:ssr-styles"," plugin",[152,268,269,272,273,276,277,280],{},[27,270,271],{},"Route rules compilation"," now uses ",[32,274,275],{},"rou3"," instead of ",[32,278,279],{},"radix3"," in the client bundle, eliminating app manifest fetches",[152,282,283,286],{},[27,284,285],{},"Inline styles"," now work with webpack and rspack, not just Vite",[19,288,290],{"id":289},"extended-v3-support-and-road-to-v5","Extended v3 Support and Road to v5",[15,292,293,294,297],{},"The Nuxt team announced that v3 support will continue through ",[27,295,296],{},"July 31, 2026","—six months longer than originally planned. This gives teams more runway to migrate without security concerns.",[15,299,300,301,304],{},"Work on Nuxt 5 and Nitro 3 is progressing, with initial commits expected on the main branch in the coming weeks. The team recommends enabling ",[32,302,303],{},"future.compatibilityVersion: 5"," in your config to prepare for the transition.",[19,306,308],{"id":307},"upgrading","Upgrading",[15,310,311],{},"Run the upgrade command to pull in 4.3:",[41,313,317],{"className":314,"code":315,"language":316,"meta":46,"style":46},"language-bash shiki shiki-themes github-light github-dark","npx nuxt upgrade --dedupe\n","bash",[32,318,319],{"__ignoreMap":46},[50,320,321,324,327,330],{"class":52,"line":53},[50,322,323],{"class":63},"npx",[50,325,326],{"class":80}," nuxt",[50,328,329],{"class":80}," upgrade",[50,331,332],{"class":198}," --dedupe\n",[15,334,335,336,339],{},"The ",[32,337,338],{},"--dedupe"," flag is recommended to ensure consistent versions across the unjs ecosystem dependencies.",[19,341,343],{"id":342},"sources","Sources",[149,345,346,355,362],{},[152,347,348],{},[349,350,354],"a",{"href":351,"rel":352},"https://github.com/nuxt/nuxt/releases/tag/v4.3.0",[353],"nofollow","Nuxt 4.3 Release Notes",[152,356,357],{},[349,358,361],{"href":359,"rel":360},"https://nuxt.com/blog/v4-3",[353],"Nuxt 4.3 Blog Post",[152,363,364],{},[349,365,368],{"href":366,"rel":367},"https://github.com/nuxt/nuxt/releases/tag/v3.21.0",[353],"Nuxt 3.21.0 Release Notes",[370,371,372],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":46,"searchDepth":71,"depth":71,"links":374},[375,376,377,378,379,380,381],{"id":21,"depth":71,"text":22},{"id":139,"depth":71,"text":140},{"id":222,"depth":71,"text":223},{"id":244,"depth":71,"text":245},{"id":289,"depth":71,"text":290},{"id":307,"depth":71,"text":308},{"id":342,"depth":71,"text":343},"2026-02-02","Nuxt 4.3 brings powerful new features including centralized layout management via route rules, ISR/SWR payload extraction, and a draggable development error overlay. Here's what you need to know.","md","en",{},true,"/blog/2026-02-02-nuxt-4-3-release",{"title":5,"description":383},"blog/2026-02-02-nuxt-4-3-release",[392,393,394,395,396,397],"nuxt","vue","javascript","ssr","web-development","release-notes","lDS2fy6MFVZ0UDtbMqT7VFhSkWigCJq-mkVZOz0PCJI",1784088102146]