CINXE.COM

Next.js 12.1 | Next.js

<!DOCTYPE html><html class="__variable_0d0188 __variable_4d318d" lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" imageSrcSet="/_next/image?url=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Fv1714730590%2Ffront%2Fnextjs%2Fuwu%2Fnext-uwu-logo.png&amp;w=64&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Fv1714730590%2Ffront%2Fnextjs%2Fuwu%2Fnext-uwu-logo.png&amp;w=128&amp;q=75 2x"/><link rel="stylesheet" href="/_next/static/css/9b86c142f8048a63.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/5841d5fe2bea84d3.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/93d6a97e20faf20d.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/7b0dc059936e156c.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/de848c1722f89916.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/935a0b934d2099ee.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/905e2617510d2adb.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/ca88c4ca37434c71.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/024d05917fd5421b.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3f075e35768c0271.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/a0d401486824442c.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-e74c950b75986237.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW"/><script src="/_next/static/chunks/c1e5578e-4249cfdffce07cba.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/342-998d9e0085e1cafc.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/main-app-93dd5e50a637890d.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/48-7b677a80cd6a0a65.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/2833-1590919011b84c66.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/3019-0aab816a3eb93998.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/app/(next-site)/page-531fd6c2d3655097.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/5121-49e260c818cf8ced.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><script src="/_next/static/chunks/app/(next-site)/blog/%5Bslug%5D/page-90b226e16691002a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><meta name="next-size-adjust" content=""/><style>.uwu-flex { display: none; } .uwu .uwu-flex { display: flex; } .uwu .uwu-hidden { display: none; }</style><script>try { if (['', 'true', '1'].includes(new URLSearchParams(document.location.search).get('uwu'))) { document.documentElement.classList.add('uwu'); console.log('Next.js uwu logo by SAWARATSUKI: https://github.com/SAWARATSUKI'); } } catch (e) {}</script><title>Next.js 12.1 | Next.js</title><meta name="description" content="Next.js 12.1 introduces on-demand ISR, support for styled-components and Relay, zero-config Jest support, and more!"/><link rel="canonical" href="https://nextjs.org/blog/next-12-1"/><meta property="og:title" content="Next.js 12.1"/><meta property="og:description" content="Next.js 12.1 introduces on-demand ISR, support for styled-components and Relay, zero-config Jest support, and more!"/><meta property="og:url" content="https://nextjs.org/blog/next-12-1"/><meta property="og:image" content="https://h8dxkfmaphn8o0p3.public.blob.vercel-storage.com/static/blog/next-12-1/twitter-card.png"/><meta property="og:type" content="article"/><meta property="article:published_time" content="2022-02-17T16:00:00.507Z"/><meta property="article:author" content="Bal谩zs Orb谩n"/><meta property="article:author" content="DongYoon Kang"/><meta property="article:author" content="Gerald Monaco"/><meta property="article:author" content="Javi Velasco"/><meta property="article:author" content="Jiachi Liu"/><meta property="article:author" content="JJ Kasper"/><meta property="article:author" content="Joe Haddad"/><meta property="article:author" content="Kara Erickson"/><meta property="article:author" content="Maia Teegarden"/><meta property="article:author" content="Shu Ding"/><meta property="article:author" content="Steven"/><meta property="article:author" content="Tim Neutkens"/><meta property="article:author" content="Tobias Koppers"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Next.js 12.1"/><meta name="twitter:description" content="Next.js 12.1 introduces on-demand ISR, support for styled-components and Relay, zero-config Jest support, and more!"/><meta name="twitter:image" content="https://h8dxkfmaphn8o0p3.public.blob.vercel-storage.com/static/blog/next-12-1/twitter-card.png"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="48x48"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" noModule=""></script></head><body><!--$--><!--/$--><!--$--><!--/$--><!--$--><!--$--><!--/$--><!--/$--><header class="header_header__zJOD0 header_sticky__2ak2z"><a class="skip-nav-link_skipLink__M2lut" href="#geist-skip-nav" tabindex="0">Skip to content</a><nav class="navbar_nav__dCdXi"><div class="navbar_mobileTop__yLNXQ"><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:row;--stack-align:center;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:4px"><a rel="noopener noreferrer" target="_blank" data-testid="navbar/vercel-logo" href="https://vercel.com/home?utm_source=next-site&amp;utm_medium=banner&amp;utm_campaign=blog_next-12-1" aria-label="Go to Vercel homepage" title="Go to Vercel homepage"><svg aria-label="Vercel logomark" height="22" role="img" style="width:auto;overflow:visible" viewBox="0 0 74 64"><path d="M37.5896 0.25L74.5396 64.25H0.639648L37.5896 0.25Z" fill="var(--geist-foreground)"></path></svg></a><svg height="32" viewBox="0 0 32 32" width="32"><path d="M22 5L9 28" stroke="var(--accents-2)" stroke-linecap="round" stroke-linejoin="round"></path></svg><div class="uwu-flex"><a class="navbar_uwuMobileLogo__zHGR_" title="Go to the homepage" data-zone="same" href="/?uwu=true"><img alt="Next.js uwu logo by SAWARATSUKI" width="54" height="34" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Fv1714730590%2Ffront%2Fnextjs%2Fuwu%2Fnext-uwu-logo.png&amp;w=64&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Fv1714730590%2Ffront%2Fnextjs%2Fuwu%2Fnext-uwu-logo.png&amp;w=128&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Fv1714730590%2Ffront%2Fnextjs%2Fuwu%2Fnext-uwu-logo.png&amp;w=128&amp;q=75"/></a></div><div class="uwu-hidden"><a class="navbar_mobileLogo__Q5KxZ" title="Go to the homepage" data-zone="same" href="/"><svg aria-label="Next.js logotype" height="18" role="img" viewBox="0 0 394 79"><path d="M261.919 0.0330722H330.547V12.7H303.323V79.339H289.71V12.7H261.919V0.0330722Z" fill="var(--geist-foreground)"></path><path d="M149.052 0.0330722V12.7H94.0421V33.0772H138.281V45.7441H94.0421V66.6721H149.052V79.339H80.43V12.7H80.4243V0.0330722H149.052Z" fill="var(--geist-foreground)"></path><path d="M183.32 0.0661486H165.506L229.312 79.3721H247.178L215.271 39.7464L247.127 0.126654L229.312 0.154184L206.352 28.6697L183.32 0.0661486Z" fill="var(--geist-foreground)"></path><path d="M201.6 56.7148L192.679 45.6229L165.455 79.4326H183.32L201.6 56.7148Z" fill="var(--geist-foreground)"></path><path clip-rule="evenodd" d="M80.907 79.339L17.0151 0H0V79.3059H13.6121V16.9516L63.8067 79.339H80.907Z" fill="var(--geist-foreground)" fill-rule="evenodd"></path><path d="M333.607 78.8546C332.61 78.8546 331.762 78.5093 331.052 77.8186C330.342 77.1279 329.991 76.2917 330 75.3011C329.991 74.3377 330.342 73.5106 331.052 72.8199C331.762 72.1292 332.61 71.7838 333.607 71.7838C334.566 71.7838 335.405 72.1292 336.115 72.8199C336.835 73.5106 337.194 74.3377 337.204 75.3011C337.194 75.9554 337.028 76.5552 336.696 77.0914C336.355 77.6368 335.922 78.064 335.377 78.373C334.842 78.6911 334.252 78.8546 333.607 78.8546Z" fill="var(--geist-foreground)"></path><path d="M356.84 45.4453H362.872V68.6846C362.863 70.8204 362.401 72.6472 361.498 74.1832C360.585 75.7191 359.321 76.8914 357.698 77.7185C356.084 78.5364 354.193 78.9546 352.044 78.9546C350.079 78.9546 348.318 78.6001 346.75 77.9094C345.182 77.2187 343.937 76.1826 343.024 74.8193C342.101 73.456 341.649 71.7565 341.649 69.7207H347.691C347.7 70.6114 347.903 71.3838 348.29 72.0291C348.677 72.6744 349.212 73.1651 349.895 73.5105C350.586 73.8559 351.38 74.0286 352.274 74.0286C353.243 74.0286 354.073 73.8286 354.746 73.4196C355.419 73.0197 355.936 72.4199 356.296 71.6201C356.646 70.8295 356.831 69.8479 356.84 68.6846V45.4453Z" fill="var(--geist-foreground)"></path><path d="M387.691 54.5338C387.544 53.1251 386.898 52.0254 385.773 51.2438C384.638 50.4531 383.172 50.0623 381.373 50.0623C380.11 50.0623 379.022 50.2532 378.118 50.6258C377.214 51.0075 376.513 51.5164 376.033 52.1617C375.554 52.807 375.314 53.5432 375.295 54.3703C375.295 55.061 375.461 55.6608 375.784 56.1607C376.107 56.6696 376.54 57.0968 377.103 57.4422C377.656 57.7966 378.274 58.0874 378.948 58.3237C379.63 58.56 380.313 58.76 380.995 58.9236L384.14 59.6961C385.404 59.9869 386.631 60.3778 387.802 60.8776C388.973 61.3684 390.034 61.9955 390.965 62.7498C391.897 63.5042 392.635 64.413 393.179 65.4764C393.723 66.5397 394 67.7848 394 69.2208C394 71.1566 393.502 72.8562 392.496 74.3285C391.491 75.7917 390.043 76.9369 388.143 77.764C386.252 78.582 383.965 79 381.272 79C378.671 79 376.402 78.6002 374.493 77.8004C372.575 77.0097 371.08 75.8463 370.001 74.3194C368.922 72.7926 368.341 70.9294 368.258 68.7391H374.235C374.318 69.8842 374.687 70.8386 375.314 71.6111C375.95 72.3745 376.78 72.938 377.795 73.3197C378.819 73.6923 379.962 73.8832 381.226 73.8832C382.545 73.8832 383.707 73.6832 384.712 73.2924C385.708 72.9016 386.492 72.3564 387.055 71.6475C387.627 70.9476 387.913 70.1206 387.922 69.1754C387.913 68.312 387.654 67.5939 387.156 67.0304C386.649 66.467 385.948 65.9944 385.053 65.6127C384.15 65.231 383.098 64.8856 381.899 64.5857L378.081 63.6223C375.323 62.9225 373.137 61.8592 371.541 60.4323C369.937 59.0054 369.143 57.115 369.143 54.7429C369.143 52.798 369.678 51.0894 370.758 49.6261C371.827 48.1629 373.294 47.0268 375.148 46.2179C377.011 45.4 379.114 45 381.456 45C383.836 45 385.92 45.4 387.719 46.2179C389.517 47.0268 390.929 48.1538 391.952 49.5897C392.976 51.0257 393.511 52.6707 393.539 54.5338H387.691Z" fill="var(--geist-foreground)"></path></svg></a></div></div><div class="navbar_mobileTopRight__p4VGF"><button class="navbar_search__dZT2b" data-variant="large" type="button">Search documentation...</button><button class="navbar_search__dZT2b" data-variant="medium" type="button">Search...<kbd>鈱楰</kbd></button><button aria-label="Search documentation" class="navbar_search__dZT2b" data-variant="small" type="button"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0Z" fill="currentColor"/></svg></button><button aria-label="open menu" class="navbar_menuButton__BJwt4" type="button"><div class="menu-toggle_wrap__qevaX "></div></button></div></div><div class="navbar_links__jysVN"><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:row;--stack-align:center;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:4px"><a rel="noopener noreferrer" target="_blank" data-testid="navbar/vercel-logo" href="https://vercel.com/home?utm_source=next-site&amp;utm_medium=banner&amp;utm_campaign=blog_next-12-1" aria-label="Go to Vercel homepage" title="Go to Vercel homepage"><svg aria-label="Vercel logomark" height="22" role="img" style="width:auto;overflow:visible" viewBox="0 0 74 64"><path d="M37.5896 0.25L74.5396 64.25H0.639648L37.5896 0.25Z" fill="var(--geist-foreground)"></path></svg></a><svg height="32" viewBox="0 0 32 32" width="32"><path d="M22 5L9 28" stroke="var(--accents-2)" stroke-linecap="round" stroke-linejoin="round"></path></svg><div class="navbar_uwuDesktopLogoWrapper__VynOK uwu-flex"><a aria-label="Go to the homepage" class="navbar_uwuDesktopLogo__MHsxN" title="Go to the homepage" data-state="closed" style="-webkit-touch-callout:none" data-zone="same" href="/?uwu=true"><img alt="Next.js uwu logo by SAWARATSUKI" width="54" height="34" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Fv1714730590%2Ffront%2Fnextjs%2Fuwu%2Fnext-uwu-logo.png&amp;w=64&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Fv1714730590%2Ffront%2Fnextjs%2Fuwu%2Fnext-uwu-logo.png&amp;w=128&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Fv1714730590%2Ffront%2Fnextjs%2Fuwu%2Fnext-uwu-logo.png&amp;w=128&amp;q=75"/></a></div><div class="uwu-hidden"><a aria-label="Go to the homepage" class="navbar_logo__wXwXy" title="Go to the homepage" data-state="closed" style="-webkit-touch-callout:none" data-zone="same" href="/"><svg aria-label="Next.js logotype" height="18" role="img" viewBox="0 0 394 79"><path d="M261.919 0.0330722H330.547V12.7H303.323V79.339H289.71V12.7H261.919V0.0330722Z" fill="var(--geist-foreground)"></path><path d="M149.052 0.0330722V12.7H94.0421V33.0772H138.281V45.7441H94.0421V66.6721H149.052V79.339H80.43V12.7H80.4243V0.0330722H149.052Z" fill="var(--geist-foreground)"></path><path d="M183.32 0.0661486H165.506L229.312 79.3721H247.178L215.271 39.7464L247.127 0.126654L229.312 0.154184L206.352 28.6697L183.32 0.0661486Z" fill="var(--geist-foreground)"></path><path d="M201.6 56.7148L192.679 45.6229L165.455 79.4326H183.32L201.6 56.7148Z" fill="var(--geist-foreground)"></path><path clip-rule="evenodd" d="M80.907 79.339L17.0151 0H0V79.3059H13.6121V16.9516L63.8067 79.339H80.907Z" fill="var(--geist-foreground)" fill-rule="evenodd"></path><path d="M333.607 78.8546C332.61 78.8546 331.762 78.5093 331.052 77.8186C330.342 77.1279 329.991 76.2917 330 75.3011C329.991 74.3377 330.342 73.5106 331.052 72.8199C331.762 72.1292 332.61 71.7838 333.607 71.7838C334.566 71.7838 335.405 72.1292 336.115 72.8199C336.835 73.5106 337.194 74.3377 337.204 75.3011C337.194 75.9554 337.028 76.5552 336.696 77.0914C336.355 77.6368 335.922 78.064 335.377 78.373C334.842 78.6911 334.252 78.8546 333.607 78.8546Z" fill="var(--geist-foreground)"></path><path d="M356.84 45.4453H362.872V68.6846C362.863 70.8204 362.401 72.6472 361.498 74.1832C360.585 75.7191 359.321 76.8914 357.698 77.7185C356.084 78.5364 354.193 78.9546 352.044 78.9546C350.079 78.9546 348.318 78.6001 346.75 77.9094C345.182 77.2187 343.937 76.1826 343.024 74.8193C342.101 73.456 341.649 71.7565 341.649 69.7207H347.691C347.7 70.6114 347.903 71.3838 348.29 72.0291C348.677 72.6744 349.212 73.1651 349.895 73.5105C350.586 73.8559 351.38 74.0286 352.274 74.0286C353.243 74.0286 354.073 73.8286 354.746 73.4196C355.419 73.0197 355.936 72.4199 356.296 71.6201C356.646 70.8295 356.831 69.8479 356.84 68.6846V45.4453Z" fill="var(--geist-foreground)"></path><path d="M387.691 54.5338C387.544 53.1251 386.898 52.0254 385.773 51.2438C384.638 50.4531 383.172 50.0623 381.373 50.0623C380.11 50.0623 379.022 50.2532 378.118 50.6258C377.214 51.0075 376.513 51.5164 376.033 52.1617C375.554 52.807 375.314 53.5432 375.295 54.3703C375.295 55.061 375.461 55.6608 375.784 56.1607C376.107 56.6696 376.54 57.0968 377.103 57.4422C377.656 57.7966 378.274 58.0874 378.948 58.3237C379.63 58.56 380.313 58.76 380.995 58.9236L384.14 59.6961C385.404 59.9869 386.631 60.3778 387.802 60.8776C388.973 61.3684 390.034 61.9955 390.965 62.7498C391.897 63.5042 392.635 64.413 393.179 65.4764C393.723 66.5397 394 67.7848 394 69.2208C394 71.1566 393.502 72.8562 392.496 74.3285C391.491 75.7917 390.043 76.9369 388.143 77.764C386.252 78.582 383.965 79 381.272 79C378.671 79 376.402 78.6002 374.493 77.8004C372.575 77.0097 371.08 75.8463 370.001 74.3194C368.922 72.7926 368.341 70.9294 368.258 68.7391H374.235C374.318 69.8842 374.687 70.8386 375.314 71.6111C375.95 72.3745 376.78 72.938 377.795 73.3197C378.819 73.6923 379.962 73.8832 381.226 73.8832C382.545 73.8832 383.707 73.6832 384.712 73.2924C385.708 72.9016 386.492 72.3564 387.055 71.6475C387.627 70.9476 387.913 70.1206 387.922 69.1754C387.913 68.312 387.654 67.5939 387.156 67.0304C386.649 66.467 385.948 65.9944 385.053 65.6127C384.15 65.231 383.098 64.8856 381.899 64.5857L378.081 63.6223C375.323 62.9225 373.137 61.8592 371.541 60.4323C369.937 59.0054 369.143 57.115 369.143 54.7429C369.143 52.798 369.678 51.0894 370.758 49.6261C371.827 48.1629 373.294 47.0268 375.148 46.2179C377.011 45.4 379.114 45 381.456 45C383.836 45 385.92 45.4 387.719 46.2179C389.517 47.0268 390.929 48.1538 391.952 49.5897C392.976 51.0257 393.511 52.6707 393.539 54.5338H387.691Z" fill="var(--geist-foreground)"></path></svg></a></div></div><a class="" data-zone="same" href="/showcase">Showcase</a><a class="" title="Documentation" data-zone="same" href="/docs">Docs</a><a class="navbar_selected__XbA4W" data-zone="same" href="/blog">Blog</a><a rel="noopener noreferrer" target="_blank" href="https://vercel.com/templates/next.js?utm_source=next-site&amp;utm_medium=navbar&amp;utm_campaign=next_site_nav_templates">Templates<svg aria-hidden="true" class="navbar_externalArrow___VWBd" height="7" viewBox="0 0 6 6" width="7"><path d="M1.25215 5.54731L0.622742 4.9179L3.78169 1.75597H1.3834L1.38936 0.890915H5.27615V4.78069H4.40513L4.41109 2.38538L1.25215 5.54731Z" fill="var(--accents-3)"></path></svg></a><a rel="noopener noreferrer" target="_blank" href="https://vercel.com/contact/sales/nextjs?utm_source=next-site&amp;utm_medium=navbar&amp;utm_campaign=next_site_nav_enterprise">Enterprise<svg aria-hidden="true" class="navbar_externalArrow___VWBd" height="7" viewBox="0 0 6 6" width="7"><path d="M1.25215 5.54731L0.622742 4.9179L3.78169 1.75597H1.3834L1.38936 0.890915H5.27615V4.78069H4.40513L4.41109 2.38538L1.25215 5.54731Z" fill="var(--accents-3)"></path></svg></a></div><div class="navbar_headerButtons__m6ZFa"><button class="navbar_search__dZT2b" data-variant="large" type="button">Search documentation...</button><button class="navbar_search__dZT2b" data-variant="medium" type="button">Search...<kbd>鈱楰</kbd></button><button aria-label="Search documentation" class="navbar_search__dZT2b" data-variant="small" type="button"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0Z" fill="currentColor"/></svg></button><a role="link" tabindex="0" href="https://vercel.com/new/clone?utm_source=next-site&amp;utm_medium=banner&amp;b=main&amp;s=https%3A%2F%2Fgithub.com%2Fvercel%2Fvercel%2Ftree%2Fmain%2Fexamples%2Fnextjs&amp;showOptionalTeamCreation=false&amp;template=nextjs&amp;teamCreateStatus=hidden&amp;utm_campaign=blog_next-12-1" type="submit" class="button_base__BjwbK reset_reset__KRyvc button_button__81573 reset_reset__KRyvc navbar_deploy__IKZN3 button_secondary__kMMNc button_small__iQMBm button_invert__YNhnn" data-geist-button="" data-prefix="true" data-suffix="false" data-version="v1" style="--geist-icon-size:16px"><span class="button_prefix__2XlwH"><svg aria-label="Vercel logomark" height="13" role="img" style="width:auto;overflow:visible" viewBox="0 0 74 64"><path d="M37.5896 0.25L74.5396 64.25H0.639648L37.5896 0.25Z" fill="var(--geist-foreground)"></path></svg></span><span class="button_content__1aE1_">Deploy</span></a><a role="link" tabindex="0" href="/learn" type="submit" class="button_base__BjwbK reset_reset__KRyvc button_button__81573 reset_reset__KRyvc geist-new-themed geist-new-default geist-new-default-fill button_small__iQMBm button_invert__YNhnn" data-geist-button="" data-prefix="false" data-suffix="false" data-version="v1" style="--geist-icon-size:16px"><span class="button_content__1aE1_">Learn</span></a></div></nav></header><script>((e,t,r,n,o,i,a,s)=>{let l=document.documentElement,u=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&i?o.map(e=>i[e]||e):o;r?(l.classList.remove(...n),l.classList.add(i&&i[t]?i[t]:t)):l.setAttribute(e,t)}),r=t,s&&u.includes(r)&&(l.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","zeit-theme","system",null,["light","dark"],{"light":"light-theme","dark":"dark-theme"},true,true)</script><!--$--><!--/$--><main><div class="relative mx-auto max-w-screen-xl gap-x-6 px-4 py-10 md:flex md:flex-row md:py-10"><div id="geist-skip-nav" style="grid-row:1 / 1" tabindex="-1"></div><article class="detail_root__DU4wZ pb-20"><a class="detail_back__6w4Dy" href="/blog"><svg class="text-current" data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.46966 13.7803L6.99999 14.3107L8.06065 13.25L7.53032 12.7197L3.56065 8.75001H14.25H15V7.25001H14.25H3.56065L7.53032 3.28034L8.06065 2.75001L6.99999 1.68935L6.46966 2.21968L1.39644 7.2929C1.00592 7.68342 1.00592 8.31659 1.39644 8.70711L6.46966 13.7803Z" fill="currentColor"/></svg>Back to Blog</a><p class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.875rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">Thursday, February 17th 2022</p><h1 class="text_wrapper__i87JK font-semibold" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:3rem;--text-line-height:3.5rem;--text-letter-spacing:-0.066875rem;--text-weight:700">Next.js 12.1</h1><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:400">Posted by</span><div class="stack_stack__iZkUS stack detail_authors__59UPR mb-8 mt-3 pb-4" data-version="v1" style="--stack-flex:initial;--stack-direction:row;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:16px"><a class="detail_author__AvoLc" href="https://twitter.com/balazsorban44" target="_blank" rel="noopener noreferrer"><img alt="Bal谩zs Orb谩n" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fbalazs.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fbalazs.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fbalazs.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Bal谩zs Orb谩n</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->balazsorban44</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/kdy1dev" target="_blank" rel="noopener noreferrer"><img alt="DongYoon Kang" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fkdy.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fkdy.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fkdy.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">DongYoon Kang</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->kdy1dev</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/devknoll" target="_blank" rel="noopener noreferrer"><img alt="Gerald Monaco" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fgerald.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fgerald.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fgerald.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Gerald Monaco</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->devknoll</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/javivelasco" target="_blank" rel="noopener noreferrer"><img alt="Javi Velasco" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fjavi.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fjavi.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fjavi.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Javi Velasco</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->javivelasco</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/huozhi" target="_blank" rel="noopener noreferrer"><img alt="Jiachi Liu" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fjiachi.png&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fjiachi.png&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fjiachi.png&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Jiachi Liu</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->huozhi</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/_ijjk" target="_blank" rel="noopener noreferrer"><img alt="JJ Kasper" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fjj.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fjj.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fjj.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">JJ Kasper</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->_ijjk</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/timer150" target="_blank" rel="noopener noreferrer"><img alt="Joe Haddad" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Ftimer.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Ftimer.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Ftimer.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Joe Haddad</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->timer150</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/karaforthewin" target="_blank" rel="noopener noreferrer"><img alt="Kara Erickson" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fkara.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fkara.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fkara.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Kara Erickson</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->karaforthewin</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/padmaia" target="_blank" rel="noopener noreferrer"><img alt="Maia Teegarden" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fmaia.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fmaia.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fmaia.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Maia Teegarden</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->padmaia</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/shuding_" target="_blank" rel="noopener noreferrer"><img alt="Shu Ding" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fshu.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fshu.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fshu.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Shu Ding</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->shuding_</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/styfle" target="_blank" rel="noopener noreferrer"><img alt="Steven" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fstyfle.png&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fstyfle.png&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fstyfle.png&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Steven</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->styfle</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/timneutkens" target="_blank" rel="noopener noreferrer"><img alt="Tim Neutkens" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Ftim.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Ftim.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Ftim.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Tim Neutkens</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->timneutkens</span></div></a><a class="detail_author__AvoLc" href="https://twitter.com/wSokra" target="_blank" rel="noopener noreferrer"><img alt="Tobias Koppers" loading="lazy" width="28" height="28" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="/_next/image?url=%2Fstatic%2Fteam%2Fsokra.jpg&amp;w=48&amp;q=75 1x, /_next/image?url=%2Fstatic%2Fteam%2Fsokra.jpg&amp;w=64&amp;q=75 2x" src="/_next/image?url=%2Fstatic%2Fteam%2Fsokra.jpg&amp;w=64&amp;q=75"/><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px"><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-1000);--text-size:0.875rem;--text-line-height:1.25rem;--text-letter-spacing:initial;--text-weight:500">Tobias Koppers</span><span class="text_wrapper__i87JK" data-version="v1" style="--text-color:var(--ds-gray-900);--text-size:0.75rem;--text-line-height:1rem;--text-letter-spacing:initial;--text-weight:400">@<!-- -->wSokra</span></div></a></div><div class="prose prose-vercel max-w-none"><p>We&#x27;re excited to release one of our most requested features with Next.js 12.1:</p> <ul> <li><a href="#on-demand-incremental-static-regeneration-beta"><strong>On-demand ISR (Beta):</strong></a> Revalidate pages using <code>getStaticProps</code> instantly.</li> <li><a href="#improved-swc-support"><strong>Expanded Support for SWC:</strong></a> <code>styled-components</code>, Relay, and more.</li> <li><a href="#zero-configuration-jest-plugin"><strong><code>next/jest</code> Plugin:</strong></a> Zero-configuration Jest support using SWC.</li> <li><a href="#faster-minification-with-swc"><strong>Faster Minification with SWC (RC):</strong></a> 7x faster minification than Terser.</li> <li><a href="#self-hosted-nextjs-improvements"><strong>Self-Hosting Improvements:</strong></a> ~80% smaller Docker images.</li> <li><a href="#react-18-server-components-and-ssr-streaming-alpha"><strong>React 18 &amp; Server Components (Alpha):</strong></a> Improved stability and support.</li> <li><a href="#nextjs-developer-survey"><strong>Developer Survey:</strong></a> Help us improve Next.js with your feedback.</li> </ul> <p>Update today by running <code>npm i next@latest</code>.</p> <h2 id="on-demand-incremental-static-regeneration-beta" data-docs-heading=""><a href="#on-demand-incremental-static-regeneration-beta">On-demand Incremental Static Regeneration (Beta)<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>Next.js now exposes a function <code>unstable_revalidate()</code> allowing you to revalidate individual pages that use <code>getStaticProps</code>. This was one of our most requested features since we introduced <a href="/docs/pages/building-your-application/data-fetching/incremental-static-regeneration">Incremental Static Regeneration</a> (ISR) in Next.js 9.5.</p> <p>Since ISR was released, we&#x27;ve seen companies like <a href="https://vercel.com/customers/cruise-critic" rel="noopener noreferrer" target="_blank">Tripadvisor<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>, <a href="https://vercel.com/customers/parachute" rel="noopener noreferrer" target="_blank">Parachute<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>, HashiCorp, and more drastically improve their build times while retaining incredible performance. However, we&#x27;ve heard your feedback on interval-based revalidations and are excited to provide more flexibility.</p> <p>Currently, if you set a <code>revalidate</code> time of <code>60</code>, all visitors will see the same generated version of your site for one minute. The only way to invalidate the cache was from someone visiting that page after the minute had passed. You can now manually purge the Next.js cache for a specific page on-demand.</p> <p>This makes it easier to update your site when:</p> <ul> <li>Content from your headless CMS is created or updated</li> <li>Ecommerce metadata changes (price, description, category, reviews, etc.)</li> </ul> <div class="relative code-block_wrapper__t6FCO code-block_hasFileName__ezlBD not-prose" data-geist-code-block=""><div class="code-block_header__t3NRd"><div class="code-block_fileName__HmSv1"><div aria-hidden="true" class="code-block_iconWrapper__TuHFk"><svg height="17" style="margin-left:-1.5px" viewBox="0 0 50 50" width="17" xmlns="http://www.w3.org/2000/svg"><path d="M 43.335938 4 L 6.667969 4 C 5.195313 4 4 5.195313 4 6.667969 L 4 43.332031 C 4 44.804688 5.195313 46 6.667969 46 L 43.332031 46 C 44.804688 46 46 44.804688 46 43.335938 L 46 6.667969 C 46 5.195313 44.804688 4 43.335938 4 Z M 27 36.183594 C 27 40.179688 24.65625 42 21.234375 42 C 18.140625 42 15.910156 39.925781 15 38 L 18.144531 36.097656 C 18.75 37.171875 19.671875 38 21 38 C 22.269531 38 23 37.503906 23 35.574219 L 23 23 L 27 23 Z M 35.675781 42 C 32.132813 42 30.121094 40.214844 29 38 L 32 36 C 32.816406 37.335938 33.707031 38.613281 35.589844 38.613281 C 37.171875 38.613281 38 37.824219 38 36.730469 C 38 35.425781 37.140625 34.960938 35.402344 34.199219 L 34.449219 33.789063 C 31.695313 32.617188 29.863281 31.148438 29.863281 28.039063 C 29.863281 25.179688 32.046875 23 35.453125 23 C 37.878906 23 39.621094 23.84375 40.878906 26.054688 L 37.910156 27.964844 C 37.253906 26.789063 36.550781 26.328125 35.453125 26.328125 C 34.335938 26.328125 33.628906 27.039063 33.628906 27.964844 C 33.628906 29.109375 34.335938 29.570313 35.972656 30.28125 L 36.925781 30.691406 C 40.171875 32.078125 42 33.496094 42 36.683594 C 42 40.117188 39.300781 42 35.675781 42 Z" fill="currentColor"></path></svg></div><span class="code-block_filenameP__02nok">pages/api/revalidate.js</span></div><div class="code-block_actions__yphRf"><button aria-label="Copy code" class="code-block_copyButton__uo5Yu" type="button"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z" fill="currentColor"/></svg><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z" fill="currentColor"/></svg></button></div></div><pre class="code-block_pre___OLfy"><code class="code-block_code__isn_V"><span class="line"><span style="color:var(--shiki-token-keyword)">export</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">default</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">async</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">function</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-function)">handler</span><span style="color:var(--shiki-color-text)">(req</span><span style="color:var(--shiki-token-punctuation)">,</span><span style="color:var(--shiki-color-text)"> res) {</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-comment)">// Check for secret to confirm this is a valid request</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">if</span><span style="color:var(--shiki-color-text)"> (</span><span style="color:var(--shiki-token-constant)">req</span><span style="color:var(--shiki-color-text)">.</span><span style="color:var(--shiki-token-constant)">query</span><span style="color:var(--shiki-color-text)">.secret </span><span style="color:var(--shiki-token-keyword)">!==</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-constant)">process</span><span style="color:var(--shiki-color-text)">.</span><span style="color:var(--shiki-token-constant)">env</span><span style="color:var(--shiki-color-text)">.</span><span style="color:var(--shiki-token-constant)">MY_SECRET_TOKEN</span><span style="color:var(--shiki-color-text)">) {</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">return</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-constant)">res</span><span style="color:var(--shiki-token-function)">.status</span><span style="color:var(--shiki-color-text)">(</span><span style="color:var(--shiki-token-constant)">401</span><span style="color:var(--shiki-color-text)">)</span><span style="color:var(--shiki-token-function)">.json</span><span style="color:var(--shiki-color-text)">({ message</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-string-expression)">&#x27;Invalid token&#x27;</span><span style="color:var(--shiki-color-text)"> });</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> }</span></span> <span class="line"> </span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">try</span><span style="color:var(--shiki-color-text)"> {</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">await</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-constant)">res</span><span style="color:var(--shiki-token-function)">.unstable_revalidate</span><span style="color:var(--shiki-color-text)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;/path-to-revalidate&#x27;</span><span style="color:var(--shiki-color-text)">);</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">return</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-constant)">res</span><span style="color:var(--shiki-token-function)">.json</span><span style="color:var(--shiki-color-text)">({ revalidated</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-constant)">true</span><span style="color:var(--shiki-color-text)"> });</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> } </span><span style="color:var(--shiki-token-keyword)">catch</span><span style="color:var(--shiki-color-text)"> (err) {</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-comment)">// If there was an error, Next.js will continue</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-comment)">// to show the last successfully generated page</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">return</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-constant)">res</span><span style="color:var(--shiki-token-function)">.status</span><span style="color:var(--shiki-color-text)">(</span><span style="color:var(--shiki-token-constant)">500</span><span style="color:var(--shiki-color-text)">)</span><span style="color:var(--shiki-token-function)">.send</span><span style="color:var(--shiki-color-text)">(</span><span style="color:var(--shiki-token-string-expression)">&#x27;Error revalidating&#x27;</span><span style="color:var(--shiki-color-text)">);</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> }</span></span> <span class="line"><span style="color:var(--shiki-color-text)">}</span></span></code></pre></div> <p>Inside <code>getStaticProps</code>, you do not need to specify <code>revalidate</code> to use on-demand revalidation. If <code>revalidate</code> is omitted, Next.js will use the default value of <code>false</code> (no revalidation) and only revalidate the page on-demand when <code>unstable_revalidate()</code> is called.</p> <p>Incremental Static Regeneration works for any providers supporting the <a href="/docs/pages/building-your-application/deploying#nextjs-build-api">Next.js Build API</a> (<code>next build</code>). Starting today when deployed to Vercel, on-demand revalidation propagates globally in ~300ms when pushing pages to the edge.</p> <p><a href="https://on-demand-isr.vercel.app/" rel="noopener noreferrer nofollow" target="_blank">View our demo<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> to see on-demand revalidation in action and provide feedback. Svix (enterprise-ready webhooks) and Clerk (authentication) have also <a href="https://www.svix.com/blog/vercel-on-demand-isr-and-svix" rel="noopener noreferrer nofollow" target="_blank">created a demo<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> of on-demand ISR.</p> <h2 id="improved-swc-support" data-docs-heading=""><a href="#improved-swc-support">Improved SWC support<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>We want to make every Next.js application build faster for production and get instant feedback in local development. <a href="https://nextjs.org/blog/next-12" rel="noopener noreferrer" target="_blank">Next.js 12<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> introduced a new <a href="/docs/architecture/nextjs-compiler">Rust-based compiler</a> that takes advantage of native compilation.</p> <p>With 12.1, we&#x27;ve added support to the Next.js Compiler for:</p> <ul> <li><a href="/docs/architecture/nextjs-compiler#styled-components">styled-components</a></li> <li><a href="/docs/architecture/nextjs-compiler#importsource">importSource</a></li> <li><a href="/docs/architecture/nextjs-compiler#legacy-decorators">legacy-decorators</a></li> <li><a href="/docs/architecture/nextjs-compiler#relay">relay</a></li> <li><a href="/docs/architecture/nextjs-compiler#remove-react-properties">remove-react-properties</a></li> <li><a href="/docs/architecture/nextjs-compiler#remove-console">remove-console</a></li> </ul> <p>With the above six transforms added, we have now ported the most common Babel plugins to Rust using the new compiler. If there are other plugins you&#x27;d like to see, <a href="https://github.com/vercel/next.js/discussions/30174" rel="noopener noreferrer" target="_blank">let us know on the discussion<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>. Further, we&#x27;re working on a system for <a href="https://twitter.com/swc_rs/status/1492454606118752257" rel="noopener noreferrer nofollow" target="_blank">high-performance WebAssembly plugins<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> enabled through SWC.</p> <h2 id="zero-configuration-jest-plugin" data-docs-heading=""><a href="#zero-configuration-jest-plugin">Zero-configuration Jest plugin<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>Next.js now automatically configures Jest for you (<code>next/jest</code>) using the Rust-based Next.js Compiler to transform files, including:</p> <ul> <li>Auto mocking stylesheets (<code>.css</code>, <code>.module.css</code>, and their <code>.scss</code> variants) and image imports</li> <li>Loading <code>.env</code> (and all variants) into <code>process.env</code></li> <li>Ignoring <code>node_modules</code> from test resolving and transforms</li> <li>Ignoring <code>.next</code> from test resolving</li> <li>Loading <code>next.config.js</code> for flags that enable Next.js compiler transforms</li> </ul> <p><a href="/docs/pages/building-your-application/optimizing/testing#setting-up-jest-with-the-rust-compiler">Check out the documentation</a> to learn more or <a href="https://github.com/vercel/next.js/tree/canary/examples/with-jest" rel="noopener noreferrer" target="_blank">get started from our Jest example<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>.</p> <h2 id="faster-minification-with-swc" data-docs-heading=""><a href="#faster-minification-with-swc">Faster minification with SWC<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>With <a href="https://nextjs.org/blog/next-12" rel="noopener noreferrer" target="_blank">Next.js 12<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>, we introduced minification using SWC as part of the Next.js Compiler. Early results showed it was <strong>7x faster than Terser.</strong> Minification with SWC is now in Release Candidate (RC) with 12.1 and will become the default in 12.2.</p> <p>You can opt-in to using SWC for minification in <code>next.config.js</code>:</p> <div class="relative code-block_wrapper__t6FCO code-block_hasFileName__ezlBD not-prose" data-geist-code-block=""><div class="code-block_header__t3NRd"><div class="code-block_fileName__HmSv1"><div aria-hidden="true" class="code-block_iconWrapper__TuHFk"><svg height="17" style="margin-left:-1.5px" viewBox="0 0 50 50" width="17" xmlns="http://www.w3.org/2000/svg"><path d="M 43.335938 4 L 6.667969 4 C 5.195313 4 4 5.195313 4 6.667969 L 4 43.332031 C 4 44.804688 5.195313 46 6.667969 46 L 43.332031 46 C 44.804688 46 46 44.804688 46 43.335938 L 46 6.667969 C 46 5.195313 44.804688 4 43.335938 4 Z M 27 36.183594 C 27 40.179688 24.65625 42 21.234375 42 C 18.140625 42 15.910156 39.925781 15 38 L 18.144531 36.097656 C 18.75 37.171875 19.671875 38 21 38 C 22.269531 38 23 37.503906 23 35.574219 L 23 23 L 27 23 Z M 35.675781 42 C 32.132813 42 30.121094 40.214844 29 38 L 32 36 C 32.816406 37.335938 33.707031 38.613281 35.589844 38.613281 C 37.171875 38.613281 38 37.824219 38 36.730469 C 38 35.425781 37.140625 34.960938 35.402344 34.199219 L 34.449219 33.789063 C 31.695313 32.617188 29.863281 31.148438 29.863281 28.039063 C 29.863281 25.179688 32.046875 23 35.453125 23 C 37.878906 23 39.621094 23.84375 40.878906 26.054688 L 37.910156 27.964844 C 37.253906 26.789063 36.550781 26.328125 35.453125 26.328125 C 34.335938 26.328125 33.628906 27.039063 33.628906 27.964844 C 33.628906 29.109375 34.335938 29.570313 35.972656 30.28125 L 36.925781 30.691406 C 40.171875 32.078125 42 33.496094 42 36.683594 C 42 40.117188 39.300781 42 35.675781 42 Z" fill="currentColor"></path></svg></div><span class="code-block_filenameP__02nok">next.config.js</span></div><div class="code-block_actions__yphRf"><button aria-label="Copy code" class="code-block_copyButton__uo5Yu" type="button"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z" fill="currentColor"/></svg><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z" fill="currentColor"/></svg></button></div></div><pre class="code-block_pre___OLfy"><code class="code-block_code__isn_V"><span class="line"><span style="color:var(--shiki-token-constant)">module</span><span style="color:var(--shiki-color-text)">.</span><span style="color:var(--shiki-token-constant)">exports</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-color-text)"> {</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> swcMinify</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-constant)">true</span><span style="color:var(--shiki-token-punctuation)">,</span></span> <span class="line"><span style="color:var(--shiki-color-text)">};</span></span></code></pre></div> <p>Let us know your feedback on the <a href="https://github.com/vercel/next.js/discussions/30237" rel="noopener noreferrer" target="_blank">discussion<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>.</p> <h2 id="faster-image-optimization" data-docs-heading=""><a href="#faster-image-optimization">Faster Image Optimization<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>The built-in Image Optimization API has been updated to support the same pattern as <a href="/docs/pages/building-your-application/data-fetching/incremental-static-regeneration">ISR pages</a>, where images are served stale and <em>revalidate</em> in the background (also known as <code>stale-while-revalidate</code>).</p> <p>This is a significant performance improvement for optimizing images. See <a href="/docs/pages/api-reference/components/image#caching-behavior">Image Caching Behavior</a> to learn more.</p> <h2 id="self-hosted-nextjs-improvements" data-docs-heading=""><a href="#self-hosted-nextjs-improvements">Self-hosted Next.js improvements<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>Next.js can now automatically create a <code>standalone</code> folder that copies <em>only</em> the necessary files for production deployments. This has resulted in <strong>~80% smaller Docker images</strong> for self-hosted Next.js applications.</p> <p>To leverage this automatic copying you can enable it in your <code>next.config.js</code>:</p> <div class="relative code-block_wrapper__t6FCO code-block_hasFileName__ezlBD not-prose" data-geist-code-block=""><div class="code-block_header__t3NRd"><div class="code-block_fileName__HmSv1"><div aria-hidden="true" class="code-block_iconWrapper__TuHFk"><svg height="17" style="margin-left:-1.5px" viewBox="0 0 50 50" width="17" xmlns="http://www.w3.org/2000/svg"><path d="M 43.335938 4 L 6.667969 4 C 5.195313 4 4 5.195313 4 6.667969 L 4 43.332031 C 4 44.804688 5.195313 46 6.667969 46 L 43.332031 46 C 44.804688 46 46 44.804688 46 43.335938 L 46 6.667969 C 46 5.195313 44.804688 4 43.335938 4 Z M 27 36.183594 C 27 40.179688 24.65625 42 21.234375 42 C 18.140625 42 15.910156 39.925781 15 38 L 18.144531 36.097656 C 18.75 37.171875 19.671875 38 21 38 C 22.269531 38 23 37.503906 23 35.574219 L 23 23 L 27 23 Z M 35.675781 42 C 32.132813 42 30.121094 40.214844 29 38 L 32 36 C 32.816406 37.335938 33.707031 38.613281 35.589844 38.613281 C 37.171875 38.613281 38 37.824219 38 36.730469 C 38 35.425781 37.140625 34.960938 35.402344 34.199219 L 34.449219 33.789063 C 31.695313 32.617188 29.863281 31.148438 29.863281 28.039063 C 29.863281 25.179688 32.046875 23 35.453125 23 C 37.878906 23 39.621094 23.84375 40.878906 26.054688 L 37.910156 27.964844 C 37.253906 26.789063 36.550781 26.328125 35.453125 26.328125 C 34.335938 26.328125 33.628906 27.039063 33.628906 27.964844 C 33.628906 29.109375 34.335938 29.570313 35.972656 30.28125 L 36.925781 30.691406 C 40.171875 32.078125 42 33.496094 42 36.683594 C 42 40.117188 39.300781 42 35.675781 42 Z" fill="currentColor"></path></svg></div><span class="code-block_filenameP__02nok">next.config.js</span></div><div class="code-block_actions__yphRf"><button aria-label="Copy code" class="code-block_copyButton__uo5Yu" type="button"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z" fill="currentColor"/></svg><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z" fill="currentColor"/></svg></button></div></div><pre class="code-block_pre___OLfy"><code class="code-block_code__isn_V"><span class="line"><span style="color:var(--shiki-token-constant)">module</span><span style="color:var(--shiki-color-text)">.</span><span style="color:var(--shiki-token-constant)">exports</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-keyword)">=</span><span style="color:var(--shiki-color-text)"> {</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> experimental</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-color-text)"> {</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> outputStandalone</span><span style="color:var(--shiki-token-keyword)">:</span><span style="color:var(--shiki-color-text)"> </span><span style="color:var(--shiki-token-constant)">true</span><span style="color:var(--shiki-token-punctuation)">,</span></span> <span class="line"><span style="color:var(--shiki-color-text)"> }</span><span style="color:var(--shiki-token-punctuation)">,</span></span> <span class="line"><span style="color:var(--shiki-color-text)">};</span></span></code></pre></div> <p>This will create a folder at <code>.next/standalone</code> which can then be deployed on its own without installing <code>node_modules</code>.</p> <p><a href="/docs/pages/api-reference/next-config-js/output#automatically-copying-traced-files-experimental">Check out the documentation</a> or get started from the <a href="https://github.com/vercel/next.js/tree/canary/examples/with-docker" rel="noopener noreferrer" target="_blank">Docker example<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>. We now also have a <a href="https://github.com/vercel/next.js/tree/canary/examples/with-docker-multi-env" rel="noopener noreferrer" target="_blank">multi-env Docker example<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> with support for loading different <code>.env</code> files based on the environment.</p> <h2 id="react-18-server-components-and-ssr-streaming-alpha" data-docs-heading=""><a href="#react-18-server-components-and-ssr-streaming-alpha">React 18, Server Components, and SSR Streaming (Alpha)<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>As shown at <a href="https://www.youtube.com/watch?v=WlP2TB2ORL4" rel="noopener noreferrer nofollow" target="_blank">Next.js Conf<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>, we&#x27;ve been working to bring React 18, Server-Side Suspense, Streaming SSR, and eventually Server Components to Next.js.</p> <p>Server Components are a new feature in React that let you reduce your JavaScript bundle size by separating server and client-side code. Server Components allow developers to build apps that span the server and client, combining the rich interactivity of client-side apps with the improved performance of traditional server rendering.</p> <p>For developers <a href="https://github.com/vercel/next.js/discussions/31263" rel="noopener noreferrer" target="_blank">following along<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> on the Server Components path from alpha to beta in Next.js, here are some of the recent updates:</p> <ul> <li><a href="https://github.com/vercel/next.js/issues/30994" rel="noopener noreferrer" target="_blank">Inline Server Component responses in the HTML to avoid a second request<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a></li> <li><a href="https://github.com/vercel/next.js/issues/31338" rel="noopener noreferrer" target="_blank">Improved script loading when streaming to enable partial hydration with React 18<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a></li> <li><a href="https://github.com/vercel/next.js/pull/31102" rel="noopener noreferrer" target="_blank">Support for the new <code>useId</code> API in React 18<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a></li> <li><a href="https://github.com/vercel/next.js/issues/30996" rel="noopener noreferrer" target="_blank">Support for <code>_app</code> as a Server Component<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a></li> <li><a href="https://github.com/vercel/next.js/pull/31968" rel="noopener noreferrer" target="_blank">Improved code splitting for Server Components<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a></li> <li><a href="https://github.com/vercel/next.js/pull/30585" rel="noopener noreferrer" target="_blank">Improved streaming performance<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a></li> <li><a href="https://github.com/vercel/next.js/pull/34068" rel="noopener noreferrer" target="_blank">Ability to change the default runtime between Node.js and Edge<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> (<a href="https://github.com/vercel/next.js/discussions/34179" rel="noopener noreferrer" target="_blank">RFC<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>)</li> </ul> <p>We&#x27;re working to enable you to run your entire Next.js application server-rendered at the Edge. You can choose which pages should opt into the Edge Runtime, so you can incrementally migrate pages from Node.js as you&#x27;re ready.</p> <p>We&#x27;ll be releasing another post going more in-depth on the Edge Runtime soon. Both of our demos (<a href="https://github.com/vercel/next-server-components" rel="noopener noreferrer" target="_blank">next-server-components<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> and <a href="https://github.com/vercel/next-rsc-demo" rel="noopener noreferrer" target="_blank">next-rsc-demo<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>) have been updated with the latest changes.</p> <h2 id="other-bug-fixes-and-improvements" data-docs-heading=""><a href="#other-bug-fixes-and-improvements">Other bug fixes and improvements<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <ul> <li>Using <code>&lt;a&gt;</code> with <code>target=&quot;blank&quot;</code> no longer warns to use <code>next/link</code> with ESLint.</li> <li><code>.d.ts</code> files are no longer considered Pages.</li> <li><code>document.title</code> now takes priority over <code>h1</code> when announcing page changes to screen readers.</li> <li>Creating <code>pages/index/[...dynamic].js</code> now works, which previously was not possible due to <code>index</code> being a reserved keyword.</li> <li>When using <code>dynamic(() =&gt; import(&#x27;./some-component&#x27;), { ssr: false })</code> the import will be automatically treeshaken from the server code.</li> <li>To create a smaller installation size and improve security, we&#x27;re working to precompile more dependencies. The latest addition was <code>node-fetch</code>.</li> <li>Improvements for Fast Refresh when using <a href="/docs/pages/building-your-application/routing/middleware">Middleware</a>.</li> <li>Support for ESLint 8 with our <a href="/docs/pages/building-your-application/configuring/eslint">built-in ESLint Integration</a>.</li> <li><code>styled-jsx</code> has been upgraded to 5.0, including new helpful error links for all <code>styled-jsx</code> compilation errors.</li> <li>Edge Runtime: Support for <code>AbortController</code> and <code>AbortSignal</code></li> <li>Edge Runtime: <code>CryptoKey</code> and <code>globalThis.CryptoKey</code> added.</li> <li>Large Next.js applications are seeing ~60% improvements on Fast Refresh times with recent improvements (over 1,000 modules being reloaded).</li> <li>A notification is now shown if Fast Refresh fails and causes a full page reload.</li> <li>Announced routes now correctly skip announcing the initial page load when using React 18 strict mode.</li> <li>We have lowered the number of open issues <a href="https://nextjs-issue-tracker.vercel.app/" rel="noopener noreferrer nofollow" target="_blank">by almost 300<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> on the Next.js repository compared to December 2021 (resolved almost 1000 issues).</li> </ul> <h2 id="nextjs-developer-survey" data-docs-heading=""><a href="#nextjs-developer-survey">Next.js Developer Survey<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>Share your feedback and help us improve Next.js with our <a href="https://vercel.link/nextjs-survey" rel="noopener noreferrer nofollow" target="_blank">first Developer Survey<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a>.</p> <p>There are two parts to this survey: a quick survey of eight questions and an extended survey that dives into feedback for individual features. We&#x27;d love it if you could fill out both sections if you have time, but if not, feel free to submit your answers after the first section.</p> <p>Your answers will be completely anonymous, though you can choose to share your app URLs with us if you like.</p> <p>Thanks for helping us improve Next.js!</p> <h2 id="thank-you-contributors" data-docs-heading=""><a href="#thank-you-contributors">Thank you, contributors<span><svg viewBox="0 0 16 16" height="0.7em" width="0.7em"> <g stroke-width="1.2" fill="none" stroke="currentColor"> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698"></path> <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698"></path> </g> </svg></span></a></h2> <p>Next.js is the result of the combined work of <strong>over 2,000 individual developers</strong>, industry partners like Google and Facebook, and our core team.</p> <p>To make contribution easier, we&#x27;ve migrated the Next.js repository to use <a href="https://turbo.build/repo" rel="noopener noreferrer" target="_blank">Turborepo<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> to improve build performance. We&#x27;ve also added scaffolding for tests and error links to make it easier to get started writing tests. Finally, we recorded a <a href="https://www.youtube.com/watch?v=cuoNzXFLitc" rel="noopener noreferrer nofollow" target="_blank">40-minute walkthrough video<span class="inline-flex"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z" fill="currentColor"/></svg></span></a> showing how to contribute to Next.js.</p> <p>This release was brought to you by the contributions of: @MaedahBatool, @mutebg, @sokra, @huozhi, @hanford, @shuding, @sean6bucks, @jameshfisher, @devknoll, @yuta-ike, @zh-lx, @amandeepmittal, @alunyov, @stefanprobst, @leerob, @balazsorban44, @kdy1, @brittanyrw, @jord1e, @kara, @vvo, @ismaelrumzan, @dlindenkreuz, @MohammadxAli, @nguyenyou, @thibautsabot, @hanneslund, @vertti, @KateKate, @stefee, @mikinovation, @Leticijak, @mohsen1, @ncphillips, @ehowey, @lancechentw, @krychaxp, @fmacherey, @pklawansky, @RyanClementsHax, @lakbychance, @sannajammeh, @oliviertassinari, @alexander-akait, @u-yas, @Cheprer, @msp5382, @chrispat, @getspooky, @Ryz0nd, @klaasman, @midgleyc, @kumard3, @jesstelford, @neeraj3029, @glenngijsberts, @pie6k, @wouterraateland, @timneutkens, @11koukou, @thesyedbasim, @aeneasr, @ijjk, @lfades, @JuniorTour, @xavhan, @mattyocode, @padmaia, @Skn0tt, @gwer, @Nutlope, @styfle, @stipsan, @xhoantran, @eolme, @sespinosa, @zenorocha, @hjaber, @benmvp, @T-O-R-U-S, @dburrows, @atcastle, @kiriny, @molebox, @Vienio99, @kyliau, @PepijnSenders, @krystofex, @PizzaPete, @souljuse, @Schniz, @Nelsonfrank, @Mhmdrza, @hideokamoto-stripe, @Emrin, @gr-qft, @delbaoliveira, @redbar0n, @lxy-yz, @Divlo, @kachkaev, @teleaziz, @OgbeniHMMD, @goncy, @bennettdams, @hsynlms, @callumgare, @jonrosner, @karaggeorge, @rpie3, @MartijnHols, @bashunaimiroy, @NOCELL, @rishabhpoddar, @omariosouto, @theMosaad, @javivelasco, @pierrenel, @lobsterkatie, @tharakabimal, @saevarb, @nbouvrette, @paulnbrd, @ecklf, @renbaoshuo, @chozzz, @tbezman, @karlhorky, @j-mendez, @ffan0811, @arthurfiorette, @chimit, @joperron, @moh12594, @rasmusjp, @bryanrsmith, @TrySound, @josharsh, @thecrypticace, @arturparkhisenko, @segheysens, @thevinter, @AryanBeezadhur, @xiaohp, @tknickman, @oriolcp, @smakosh, @jorrit, @mix3d, @Clecio013, @michielvangendt, @intergalacticspacehighway, @jbraithwaite, @marcelocarmona, @benmerckx, @haykerman, @steven-tey, @jaredpalmer, @pi-guy-in-the-sky, @JuanM04, @apollisa, @D-Pagey, @Kikobeats, @ramosbugs, @dan-weaver, @chris-stytch, @MikevPeeren, @janpio, @emw3, @nubpro, @cmdcolin, @joostdecock, @sgallese, @housseindjirdeh, @minervabot, @cjboco, @Ryuurock, @dm430, @mkarkachov, @nvh95, @gfortaine, @zifeo, @vicente-s, @Rohithgilla12, @brookton, @skirsten, @davidfateh, @DavidBabel, @mannybecerra, @pveyes, @kaykdm, @xhiroga, @mzaien, @losfair, @ykzts, @knezevicdev, @yang-feng-yfeng, @xuchaobei, @elkevinwolf, @fabienheureux, @nilskaspersson, @Andarist, @mathcrln, @dferber90, @FranciscoMoretti, @benschwarz, @wendellhu95, @gazdagergo, @imabp, @ljosberinn, @samuliasmala, @ka2jun8, @monsonjeremy, @pqt, @leoortizz, @michel-kraemer, @ntkoopman, @iicdii, @chentsulin, @ericmatthys, @lennym, @balogunkeji, @wnr, @chemicalkosek, @KittyGiraudel, @OKinane, @KonstHardy, @BrandonRomano, @furcan, @dusanralic, @elliottsj, @hi-ogawa, @panva, @genetschneider, @thundermiracle, @stefano-rainieri, @ericbiewener, @vordgi, @stevejarvis, @ihmpavel, @matamatanot, @dyarfaradj, @iheyunfei, @ascorbic, @fytriht, @emzoumpo, @onurtemiz, @a-ursino, @mxschmitt, @bywo, @OArnarsson, @TurekBot, @gish, @vadymshymko, @kamsar, @skhaz, @Prashoon123, @IrisvanOllefen, @evan-bradley, @ntltd, @EzequielDM, @oBusk, @martpie, @BruceRodrigues, @luke-h1, @lucasvazq, @velocity23, @AkiraTsuboi, @mitheelgajare, @JamiesWhiteShirt, @leroydev, @JulienZD, @leotaku, @mattfwood, and @kripod.</p></div></article><!--$?--><template id="B:0"></template><!--/$--><!--$?--><template id="B:1"></template><!--/$--></div></main><!--$?--><template id="B:2"></template><!--/$--><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-e74c950b75986237.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW" async=""></script><div hidden id="S:2"><div class="jsx-4008339588 footer_root__6F7g2"><div class="geist-wrapper"><footer class="footer_footer__mqdak"><div class="footer_grid__yp2LW"><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:row;--stack-align:stretch;--stack-justify:space-between;--stack-padding:0px;--stack-gap:0px" data-logo="true"><a class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:0px" aria-label="Vercel logo" data-logo-link="" href="https://vercel.com/home?utm_source=next-site&amp;utm_medium=footer&amp;utm_campaign=next-website" rel="noopener noreferrer" target="_blank" title="Go to the Vercel website"><svg fill="none" height="20" viewBox="0 0 283 64"><path d="M141.04 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM248.72 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.45 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM200.24 34c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10zm82.48-29v46h-9V5h9zM36.95 0L73.9 64H0L36.95 0zm92.38 5l-27.71 48L73.91 5H84.3l17.32 30 17.32-30h10.39zm58.91 12v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10V51h-9V17h9v9.2c0-5.08 5.91-9.2 13.2-9.2z" fill="var(--geist-foreground)"></path></svg></a><div class="stack_stack__iZkUS stack footer_socialsDesktop__XZ__G" data-version="v1" style="--stack-flex:initial;--stack-direction:row;--stack-align:center;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:12px"><a aria-label="GitHub" href="https://github.com/vercel/next.js" rel="noopener" target="_blank"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="width:16px;height:16px;color:currentColor" viewBox="0 0 16 16" width="16"><g clip-path="url(#clip0_872_3147)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M8 0C3.58 0 0 3.57879 0 7.99729C0 11.5361 2.29 14.5251 5.47 15.5847C5.87 15.6547 6.02 15.4148 6.02 15.2049C6.02 15.0149 6.01 14.3851 6.01 13.7154C4 14.0852 3.48 13.2255 3.32 12.7757C3.23 12.5458 2.84 11.836 2.5 11.6461C2.22 11.4961 1.82 11.1262 2.49 11.1162C3.12 11.1062 3.57 11.696 3.72 11.936C4.44 13.1455 5.59 12.8057 6.05 12.5957C6.12 12.0759 6.33 11.726 6.56 11.5261C4.78 11.3262 2.92 10.6364 2.92 7.57743C2.92 6.70773 3.23 5.98797 3.74 5.42816C3.66 5.22823 3.38 4.40851 3.82 3.30888C3.82 3.30888 4.49 3.09895 6.02 4.1286C6.66 3.94866 7.34 3.85869 8.02 3.85869C8.7 3.85869 9.38 3.94866 10.02 4.1286C11.55 3.08895 12.22 3.30888 12.22 3.30888C12.66 4.40851 12.38 5.22823 12.3 5.42816C12.81 5.98797 13.12 6.69773 13.12 7.57743C13.12 10.6464 11.25 11.3262 9.47 11.5261C9.76 11.776 10.01 12.2558 10.01 13.0056C10.01 14.0752 10 14.9349 10 15.2049C10 15.4148 10.15 15.6647 10.55 15.5847C12.1381 15.0488 13.5182 14.0284 14.4958 12.6673C15.4735 11.3062 15.9996 9.67293 16 7.99729C16 3.57879 12.42 0 8 0Z" fill="currentColor"/> </g> <defs> <clipPath id="clip0_872_3147"> <rect width="16" height="16" fill="white"/> </clipPath> </defs></svg></a><hr/><a aria-label="Twitter" href="https://twitter.com/nextjs" rel="noopener" target="_blank"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="width:16px;height:16px;color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M0.5 0.5H5.75L9.48421 5.71053L14 0.5H16L10.3895 6.97368L16.5 15.5H11.25L7.51579 10.2895L3 15.5H1L6.61053 9.02632L0.5 0.5ZM12.0204 14L3.42043 2H4.97957L13.5796 14H12.0204Z" fill="currentColor" /></svg></a><hr/><a aria-label="Bluesky" href="https://bsky.app/profile/nextjs.org" rel="noopener" target="_blank"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="width:16px;height:16px;color:currentColor" viewBox="0 0 16 16" width="16"><path color="currentColor" fill="currentColor" d="M3.47 1.95A19 19 0 0 1 8 7.62c.73-1.5 2.7-4.3 4.53-5.67C13.86.95 16 .19 16 2.63c0 .5-.28 4.1-.44 4.7-.58 2.03-2.66 2.55-4.5 2.24 3.23.55 4.05 2.38 2.27 4.2-3.37 3.46-4.85-.87-5.23-1.98q-.1-.32-.1-.22 0-.1-.1.22c-.38 1.11-1.86 5.44-5.23 1.98-1.78-1.82-.96-3.65 2.28-4.2C3.1 9.89 1 9.37.45 7.32A48 48 0 0 1 0 2.63C0 .2 2.15.96 3.47 1.95" /></svg></a></div></div><div><h4>Resources</h4><a href="/docs">Docs</a><a data-zone="same" href="/support-policy">Support Policy</a><a data-zone="same" href="/learn">Learn</a><a data-zone="same" href="/showcase">Showcase</a><a data-zone="same" href="/blog">Blog</a><a data-zone="same" href="/team">Team</a><!--$--><a href="https://vercel.com/analytics?utm_source=next-site&amp;utm_medium=footer&amp;utm_campaign=blog_next-12-1" rel="noopener" target="_blank">Analytics</a><!--/$--><a href="/conf" data-zone="nextjs-conf">Next.js Conf</a><!--$--><a href="https://vercel.com/products/previews?utm_source=next-site&amp;utm_medium=footer&amp;utm_campaign=blog_next-12-1" rel="noopener" target="_blank">Previews</a><!--/$--></div><div><h4>More</h4><!--$--><a href="https://vercel.com/templates/next.js/nextjs-commerce?utm_source=next-site&amp;utm_medium=footer&amp;utm_campaign=blog_next-12-1" rel="noopener" target="_blank">Next.js Commerce</a><!--/$--><!--$--><a href="https://vercel.com/contact/sales?utm_source=next-site&amp;utm_medium=footer&amp;utm_campaign=blog_next-12-1" rel="noopener" target="_blank">Contact Sales</a><!--/$--><a href="https://community.vercel.com" rel="noopener noreferrer" target="_blank">Community</a><a href="https://github.com/vercel/next.js" rel="noopener noreferrer" target="_blank">GitHub</a><a href="https://github.com/vercel/next.js/releases" rel="noopener noreferrer" target="_blank">Releases</a><a data-zone="same" href="/telemetry">Telemetry</a><a data-zone="same" href="/governance">Governance</a></div><div><h4>About Vercel</h4><!--$--><a href="https://vercel.com/solutions/nextjs?utm_source=next-site&amp;utm_medium=footer&amp;utm_campaign=blog_next-12-1" rel="noopener" target="_blank">Next.js + Vercel</a><!--/$--><!--$--><a href="https://vercel.com/oss?utm_source=next-site&amp;utm_medium=footer&amp;utm_campaign=blog_next-12-1" rel="noopener" target="_blank">Open Source Software</a><!--/$--><a href="https://github.com/vercel" rel="noopener noreferrer" target="_blank">GitHub</a><a href="https://bsky.app/profile/vercel.com" rel="noopener noreferrer" target="_blank">Bluesky</a><a href="https://twitter.com/vercel" rel="noopener noreferrer" target="_blank">X</a></div><div><h4>Legal</h4><a href="https://vercel.com/legal/privacy-policy" rel="noopener" target="_blank">Privacy Policy</a><button id="fides-modal-link" type="button">Cookie Preferences</button></div><div class="footer_newsletter__GlFxe"><h4>Subscribe to our newsletter</h4><p>Stay updated on new releases and features, guides, and case studies.</p><template id="P:3"></template></div></div><div class="stack_stack__iZkUS stack footer_copyright__z9dsS" data-version="v1" style="--stack-flex:initial;--stack-direction:row;--stack-align:center;--stack-justify:space-between;--stack-padding:0px;--stack-gap:0px"><div class="stack_stack__iZkUS stack" data-version="v1" style="--stack-flex:initial;--stack-direction:column;--stack-align:stretch;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:16px"><p>漏 <!-- -->2025<!-- --> Vercel, Inc.</p><div class="stack_stack__iZkUS stack footer_socials__VfDh3" data-version="v1" style="--stack-flex:initial;--stack-direction:row;--stack-align:center;--stack-justify:flex-start;--stack-padding:0px;--stack-gap:12px"><a aria-label="GitHub" href="https://github.com/vercel/next.js" rel="noopener" target="_blank"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="width:16px;height:16px;color:currentColor" viewBox="0 0 16 16" width="16"><g clip-path="url(#clip0_872_3147)"> <path fill-rule="evenodd" clip-rule="evenodd" d="M8 0C3.58 0 0 3.57879 0 7.99729C0 11.5361 2.29 14.5251 5.47 15.5847C5.87 15.6547 6.02 15.4148 6.02 15.2049C6.02 15.0149 6.01 14.3851 6.01 13.7154C4 14.0852 3.48 13.2255 3.32 12.7757C3.23 12.5458 2.84 11.836 2.5 11.6461C2.22 11.4961 1.82 11.1262 2.49 11.1162C3.12 11.1062 3.57 11.696 3.72 11.936C4.44 13.1455 5.59 12.8057 6.05 12.5957C6.12 12.0759 6.33 11.726 6.56 11.5261C4.78 11.3262 2.92 10.6364 2.92 7.57743C2.92 6.70773 3.23 5.98797 3.74 5.42816C3.66 5.22823 3.38 4.40851 3.82 3.30888C3.82 3.30888 4.49 3.09895 6.02 4.1286C6.66 3.94866 7.34 3.85869 8.02 3.85869C8.7 3.85869 9.38 3.94866 10.02 4.1286C11.55 3.08895 12.22 3.30888 12.22 3.30888C12.66 4.40851 12.38 5.22823 12.3 5.42816C12.81 5.98797 13.12 6.69773 13.12 7.57743C13.12 10.6464 11.25 11.3262 9.47 11.5261C9.76 11.776 10.01 12.2558 10.01 13.0056C10.01 14.0752 10 14.9349 10 15.2049C10 15.4148 10.15 15.6647 10.55 15.5847C12.1381 15.0488 13.5182 14.0284 14.4958 12.6673C15.4735 11.3062 15.9996 9.67293 16 7.99729C16 3.57879 12.42 0 8 0Z" fill="currentColor"/> </g> <defs> <clipPath id="clip0_872_3147"> <rect width="16" height="16" fill="white"/> </clipPath> </defs></svg></a><hr/><a aria-label="Twitter" href="https://x.com/nextjs" rel="noopener" target="_blank"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="width:16px;height:16px;color:currentColor" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M0.5 0.5H5.75L9.48421 5.71053L14 0.5H16L10.3895 6.97368L16.5 15.5H11.25L7.51579 10.2895L3 15.5H1L6.61053 9.02632L0.5 0.5ZM12.0204 14L3.42043 2H4.97957L13.5796 14H12.0204Z" fill="currentColor" /></svg></a><hr/><a aria-label="Bluesky" href="https://bsky.app/profile/nextjs.org" rel="noopener" target="_blank"><svg data-testid="geist-icon" height="16" stroke-linejoin="round" style="width:16px;height:16px;color:currentColor" viewBox="0 0 16 16" width="16"><path color="currentColor" fill="currentColor" d="M3.47 1.95A19 19 0 0 1 8 7.62c.73-1.5 2.7-4.3 4.53-5.67C13.86.95 16 .19 16 2.63c0 .5-.28 4.1-.44 4.7-.58 2.03-2.66 2.55-4.5 2.24 3.23.55 4.05 2.38 2.27 4.2-3.37 3.46-4.85-.87-5.23-1.98q-.1-.32-.1-.22 0-.1-.1.22c-.38 1.11-1.86 5.44-5.23 1.98-1.78-1.82-.96-3.65 2.28-4.2C3.1 9.89 1 9.37.45 7.32A48 48 0 0 1 0 2.63C0 .2 2.15.96 3.47 1.95" /></svg></a></div></div><!--$--><!--/$--></div></footer></div></div></div><div hidden id="S:0"></div><script>$RC=function(b,c,e){c=document.getElementById(c);c.parentNode.removeChild(c);var a=document.getElementById(b);if(a){b=a.previousSibling;if(e)b.data="$!",a.setAttribute("data-dgst",e);else{e=b.parentNode;a=b.nextSibling;var f=0;do{if(a&&8===a.nodeType){var d=a.data;if("/$"===d)if(0===f)break;else f--;else"$"!==d&&"$?"!==d&&"$!"!==d||f++}d=a.nextSibling;e.removeChild(a);a=d}while(a);for(;c.firstChild;)e.insertBefore(c.firstChild,a);b.data="$"}b._reactRetry&&b._reactRetry()}};$RC("B:0","S:0")</script><div hidden id="S:3"><form data-input-wrapper="true" action="" encType="multipart/form-data" method="POST"><input type="hidden" name="$ACTION_REF_1"/><input type="hidden" name="$ACTION_1:0" value="{&quot;id&quot;:&quot;6000bed9c6efe2ec2409f0677779d0e2f38028fe7f&quot;,&quot;bound&quot;:&quot;$@1&quot;}"/><input type="hidden" name="$ACTION_1:1" value="[{&quot;success&quot;:false,&quot;error&quot;:&quot;&quot;}]"/><input type="hidden" name="$ACTION_KEY" value="k3023524167"/><input aria-label="Enter your email" data-1p-ignore="true" placeholder="you@domain.com" required="" type="email" name="email"/><button type="submit">Subscribe</button></form></div><script>$RS=function(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS("S:3","P:3")</script><script>$RC("B:2","S:2")</script><div hidden id="S:1"></div><script>$RC("B:1","S:1")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[33533,[],\"\"]\n3:I[33641,[],\"\"]\n4:I[1364,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"BotRenderCheck\"]\n5:I[23400,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZ"])</script><script>self.__next_f.push([1,"c24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"Analytics\"]\n6:I[27328,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?d"])</script><script>self.__next_f.push([1,"pl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"PrefetchCrossZoneLinksProvider\"]\n7:I[86311,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"Header\"]\n8:I[77667,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079"])</script><script>self.__next_f.push([1,".js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"Provider\"]\n9:I[67403,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chun"])</script><script>self.__next_f.push([1,"ks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"UserProviderClient\"]\nb:I[72483,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"48\",\"static/chunks/48-7b677a80cd6a0a65.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2833\",\"static/chunks/2833-1590919011b84c66.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"3019\",\"static/chunks/3019-0aab816a3eb93998.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"975\",\"static/chunks/app/(next-site)/page-531fd6c2d3655097.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"HydrateMeLater\"]\nc:I[96713,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9"])</script><script>self.__next_f.push([1,"758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"default\"]\ne:I[27328,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\","])</script><script>self.__next_f.push([1,"\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"Link\"]\nf:\"$Sreact.suspense\"\n10:I[34086,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"ExternalFooterLink\""])</script><script>self.__next_f.push([1,"]\n11:I[66230,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"NewsletterForm\"]\n13:I[24321,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3"])</script><script>self.__next_f.push([1,"ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"ThemeSwitcher\"]\n14:I[29787,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\""])</script><script>self.__next_f.push([1,"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"Cmdk\"]\n15:I[11434,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"TrackPageView\"]\n16:I[27328,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunk"])</script><script>self.__next_f.push([1,"s/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"614\",\"static/chunks/614-631950b7df52e866.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5163\",\"static/chunks/5163-fdcd473c25bd3ad5.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"2842\",\"static/chunks/2842-133bd784d7e26fff.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4517\",\"static/chunks/4517-706f86bdeefe2fc2.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"891\",\"static/chunks/891-e2b0f91c42079390.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6322\",\"static/chunks/6322-64f580378e8c327a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1668\",\"static/chunks/1668-2a0b5bdd2705cd50.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6192\",\"static/chunks/6192-acb58c826e450233.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1080\",\"static/chunks/app/(next-site)/layout-f2b0eb0337c6f9db.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"PrefetchCrossZoneLinks\"]\n18:I[3267,[],\"MetadataBoundary\"]\n1a:I[3267,[],\"OutletBoundary\"]\n1d:I[1657,[],\"AsyncMetadataOutlet\"]\n1f:I[3267,[],\"ViewportBoundary\"]\n21:I[68004,[],\"\"]\n22:I[1657,[],\"AsyncMetadata\"]\n24:I[84240,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dp"])</script><script>self.__next_f.push([1,"l_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5121\",\"static/chunks/5121-49e260c818cf8ced.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6532\",\"static/chunks/app/(next-site)/blog/%5Bslug%5D/page-90b226e16691002a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"\"]\n25:I[29497,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5121\",\"static/chunks/5121-49e260c818cf8ced.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6532\",\"static/chunks/app/(next-site)/blog/%5Bslug%5D/page-90b226e16691002a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"Image\"]\n26:I[1934,[\"9434\",\"static/chunks/9434-b2280f6a071f4147.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4240\",\"static/chunks/4240-ecded6e2023b3079.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"4053\",\"static/chunks/4053-65247899d69c381c.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"903\",\"static/chunks/903-2d5567038aefc5f8.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9758\",\"static/chunks/9758-edb13435ac5f5afb.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5303\",\"static/chunks/5303-291832aa2348b2d7.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"1509\",\"static/chunks/1509-8fd73ed734d3fa71.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"9685\",\"static/chunks/9685-2ead27123cfccaaa.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"5121\",\"static/chunks/5121-49e260c818cf8ced.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"6532\",\"static/chunks/app/(next-site)/blog/%5Bsl"])</script><script>self.__next_f.push([1,"ug%5D/page-90b226e16691002a.js?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\"],\"CodeBlock\"]\n:HL[\"/_next/static/media/569ce4b8f30dc480-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/93f479601ee12b01.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/9b86c142f8048a63.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/5841d5fe2bea84d3.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/93d6a97e20faf20d.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/7b0dc059936e156c.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/de848c1722f89916.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/935a0b934d2099ee.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/905e2617510d2adb.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/ca88c4ca37434c71.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/024d05917fd5421b.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/3f075e35768c0271.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\n:HL[\"/_next/static/css/a0d401486824442c.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"style\"]\nd:T4cd,\u003cg clip-path=\"url(#clip0_872_3147)\"\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.57879 0 7.99729C0 11.5361 2.29 14.5251 5.47 15.5847C5.87 15.6547 6.02 15.4148 6.02 15.2049C6.02 15.0149 6.01 14.3851 6.01 13.7154C4 14.0852 3.48 13.2255 3.32 12.7757C3.23 12.5458 2.84 11.836 2.5 11.6461C2.22 11.4961 1.82 11.1262 2.49 11.1162C3.12 11.1062 3.57 11.696 3.72 11.936C4.44 13.1455 5.59 12.8057 6.05 12.5957C6.12 12.0759 6.33 11.726 6.56 11.5261C4.78 11.3262 2.92 10.6364 2.92 7.57743C2.92 6.70773 3.23 5.98797 3.74 5.42816C3.66 5.22823 3.38 4.40851 3.82 3.30888C3.82 3.30888 4.49 3.09895 6.02 4.1286C6.66 3.94866 7.34 3.85869 8.02 3.85869C8.7 3.85869 9.38 3.94866 10.02 4.1286C11.55 3.08895 12.22 3.30888 12.22 3.30888C12.66 4.40851 12.38 5.228"])</script><script>self.__next_f.push([1,"23 12.3 5.42816C12.81 5.98797 13.12 6.69773 13.12 7.57743C13.12 10.6464 11.25 11.3262 9.47 11.5261C9.76 11.776 10.01 12.2558 10.01 13.0056C10.01 14.0752 10 14.9349 10 15.2049C10 15.4148 10.15 15.6647 10.55 15.5847C12.1381 15.0488 13.5182 14.0284 14.4958 12.6673C15.4735 11.3062 15.9996 9.67293 16 7.99729C16 3.57879 12.42 0 8 0Z\" fill=\"currentColor\"/\u003e\n \u003c/g\u003e\n \u003cdefs\u003e\n \u003cclipPath id=\"clip0_872_3147\"\u003e\n \u003crect width=\"16\" height=\"16\" fill=\"white\"/\u003e\n \u003c/clipPath\u003e\n \u003c/defs\u003e12:T4cd,\u003cg clip-path=\"url(#clip0_872_3147)\"\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.57879 0 7.99729C0 11.5361 2.29 14.5251 5.47 15.5847C5.87 15.6547 6.02 15.4148 6.02 15.2049C6.02 15.0149 6.01 14.3851 6.01 13.7154C4 14.0852 3.48 13.2255 3.32 12.7757C3.23 12.5458 2.84 11.836 2.5 11.6461C2.22 11.4961 1.82 11.1262 2.49 11.1162C3.12 11.1062 3.57 11.696 3.72 11.936C4.44 13.1455 5.59 12.8057 6.05 12.5957C6.12 12.0759 6.33 11.726 6.56 11.5261C4.78 11.3262 2.92 10.6364 2.92 7.57743C2.92 6.70773 3.23 5.98797 3.74 5.42816C3.66 5.22823 3.38 4.40851 3.82 3.30888C3.82 3.30888 4.49 3.09895 6.02 4.1286C6.66 3.94866 7.34 3.85869 8.02 3.85869C8.7 3.85869 9.38 3.94866 10.02 4.1286C11.55 3.08895 12.22 3.30888 12.22 3.30888C12.66 4.40851 12.38 5.22823 12.3 5.42816C12.81 5.98797 13.12 6.69773 13.12 7.57743C13.12 10.6464 11.25 11.3262 9.47 11.5261C9.76 11.776 10.01 12.2558 10.01 13.0056C10.01 14.0752 10 14.9349 10 15.2049C10 15.4148 10.15 15.6647 10.55 15.5847C12.1381 15.0488 13.5182 14.0284 14.4958 12.6673C15.4735 11.3062 15.9996 9.67293 16 7.99729C16 3.57879 12.42 0 8 0Z\" fill=\"currentColor\"/\u003e\n \u003c/g\u003e\n \u003cdefs\u003e\n \u003cclipPath id=\"clip0_872_3147\"\u003e\n \u003crect width=\"16\" height=\"16\" fill=\"white\"/\u003e\n \u003c/clipPath\u003e\n \u003c/defs\u003e"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"aoWtSfYbbqelgFm0POsKO\",\"p\":\"\",\"c\":[\"\",\"blog\",\"next-12-1\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"(next-site)\",{\"children\":[\"blog\",{\"children\":[[\"slug\",\"next-12-1\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true]}],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"(next-site)\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/9b86c142f8048a63.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5841d5fe2bea84d3.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/93d6a97e20faf20d.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7b0dc059936e156c.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"4\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/de848c1722f89916.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"5\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/935a0b934d2099ee.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"6\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/905e2617510d2adb.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"7\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ca88c4ca37434c71.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"8\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/024d05917fd5421b.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"9\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3f075e35768c0271.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"className\":\"__variable_0d0188 __variable_4d318d\",\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\".uwu-flex { display: none; } .uwu .uwu-flex { display: flex; } .uwu .uwu-hidden { display: none; }\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"try { if (['', 'true', '1'].includes(new URLSearchParams(document.location.search).get('uwu'))) { document.documentElement.classList.add('uwu'); console.log('Next.js uwu logo by SAWARATSUKI: https://github.com/SAWARATSUKI'); } } catch (e) {}\"}}]],[\"$\",\"$L4\",null,{}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{\"children\":[[\"$\",\"$L7\",null,{}],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$L9\",null,{\"userPromise\":\"$@a\",\"children\":[[\"$\",\"main\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$Lc\",null,{\"className\":\"footer_root__6F7g2\",\"wide\":true,\"children\":[\"$\",\"div\",null,{\"className\":\"geist-wrapper\",\"children\":[\"$\",\"footer\",null,{\"className\":\"footer_footer__mqdak\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer_grid__yp2LW\",\"children\":[[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"row\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"space-between\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"data-logo\":true,\"children\":[[\"$\",\"a\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"aria-label\":\"Vercel logo\",\"data-logo-link\":\"\",\"href\":\"https://vercel.com/home?utm_source=next-site\u0026utm_medium=footer\u0026utm_campaign=next-website\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"title\":\"Go to the Vercel website\",\"children\":[\"$\",\"svg\",null,{\"fill\":\"none\",\"height\":\"20\",\"viewBox\":\"0 0 283 64\",\"children\":[\"$\",\"path\",null,{\"d\":\"M141.04 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM248.72 16c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.45 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zM200.24 34c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10zm82.48-29v46h-9V5h9zM36.95 0L73.9 64H0L36.95 0zm92.38 5l-27.71 48L73.91 5H84.3l17.32 30 17.32-30h10.39zm58.91 12v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10V51h-9V17h9v9.2c0-5.08 5.91-9.2 13.2-9.2z\",\"fill\":\"var(--geist-foreground)\"}]}]}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack footer_socialsDesktop__XZ__G\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"row\",\"--stack-align\":\"center\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"12px\"},\"children\":[[\"$\",\"a\",null,{\"aria-label\":\"GitHub\",\"href\":\"https://github.com/vercel/next.js\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"$d\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":16,\"height\":16,\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}],[\"$\",\"hr\",null,{}],[\"$\",\"a\",null,{\"aria-label\":\"Twitter\",\"href\":\"https://twitter.com/nextjs\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.5 0.5H5.75L9.48421 5.71053L14 0.5H16L10.3895 6.97368L16.5 15.5H11.25L7.51579 10.2895L3 15.5H1L6.61053 9.02632L0.5 0.5ZM12.0204 14L3.42043 2H4.97957L13.5796 14H12.0204Z\\\" fill=\\\"currentColor\\\" /\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":16,\"height\":16,\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}],[\"$\",\"hr\",null,{}],[\"$\",\"a\",null,{\"aria-label\":\"Bluesky\",\"href\":\"https://bsky.app/profile/nextjs.org\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath color=\\\"currentColor\\\" fill=\\\"currentColor\\\" d=\\\"M3.47 1.95A19 19 0 0 1 8 7.62c.73-1.5 2.7-4.3 4.53-5.67C13.86.95 16 .19 16 2.63c0 .5-.28 4.1-.44 4.7-.58 2.03-2.66 2.55-4.5 2.24 3.23.55 4.05 2.38 2.27 4.2-3.37 3.46-4.85-.87-5.23-1.98q-.1-.32-.1-.22 0-.1-.1.22c-.38 1.11-1.86 5.44-5.23 1.98-1.78-1.82-.96-3.65 2.28-4.2C3.1 9.89 1 9.37.45 7.32A48 48 0 0 1 0 2.63C0 .2 2.15.96 3.47 1.95\\\" /\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":16,\"height\":16,\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"children\":\"Resources\"}],[\"$\",\"a\",null,{\"href\":\"/docs\",\"children\":\"Docs\"}],[\"$\",\"$Le\",null,{\"href\":\"/support-policy\",\"prefetch\":false,\"children\":\"Support Policy\"}],[\"$\",\"$Le\",null,{\"href\":\"/learn\",\"prefetch\":false,\"children\":\"Learn\"}],[\"$\",\"$Le\",null,{\"href\":\"/showcase\",\"prefetch\":false,\"children\":\"Showcase\"}],[\"$\",\"$Le\",null,{\"href\":\"/blog\",\"prefetch\":false,\"children\":\"Blog\"}],[\"$\",\"$Le\",null,{\"href\":\"/team\",\"prefetch\":false,\"children\":\"Team\"}],[\"$\",\"$f\",null,{\"fallback\":null,\"children\":[\"$\",\"$L10\",null,{\"path\":\"/analytics\",\"children\":\"Analytics\"}]}],[\"$\",\"$Le\",null,{\"href\":\"/conf\",\"prefetch\":false,\"children\":\"Next.js Conf\"}],[\"$\",\"$f\",null,{\"fallback\":null,\"children\":[\"$\",\"$L10\",null,{\"path\":\"/products/previews\",\"children\":\"Previews\"}]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"children\":\"More\"}],[\"$\",\"$f\",null,{\"fallback\":null,\"children\":[\"$\",\"$L10\",null,{\"path\":\"/templates/next.js/nextjs-commerce\",\"children\":\"Next.js Commerce\"}]}],[\"$\",\"$f\",null,{\"fallback\":null,\"children\":[\"$\",\"$L10\",null,{\"path\":\"/contact/sales\",\"children\":\"Contact Sales\"}]}],[\"$\",\"a\",null,{\"href\":\"https://community.vercel.com\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":\"Community\"}],[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":\"GitHub\"}],[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/releases\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":\"Releases\"}],[\"$\",\"$Le\",null,{\"href\":\"/telemetry\",\"prefetch\":false,\"children\":\"Telemetry\"}],[\"$\",\"$Le\",null,{\"href\":\"/governance\",\"prefetch\":false,\"children\":\"Governance\"}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"children\":\"About Vercel\"}],[\"$\",\"$f\",null,{\"fallback\":null,\"children\":[\"$\",\"$L10\",null,{\"path\":\"/solutions/nextjs\",\"children\":\"Next.js + Vercel\"}]}],[\"$\",\"$f\",null,{\"fallback\":null,\"children\":[\"$\",\"$L10\",null,{\"path\":\"/oss\",\"children\":\"Open Source Software\"}]}],[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":\"GitHub\"}],[\"$\",\"a\",null,{\"href\":\"https://bsky.app/profile/vercel.com\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":\"Bluesky\"}],[\"$\",\"a\",null,{\"href\":\"https://twitter.com/vercel\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":\"X\"}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"children\":\"Legal\"}],[\"$\",\"a\",null,{\"href\":\"https://vercel.com/legal/privacy-policy\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":\"Privacy Policy\"}],[\"$\",\"button\",null,{\"id\":\"fides-modal-link\",\"type\":\"button\",\"children\":\"Cookie Preferences\"}]]}],[\"$\",\"$L11\",null,{}]]}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack footer_copyright__z9dsS\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"row\",\"--stack-align\":\"center\",\"--stack-justify\":\"space-between\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"16px\"},\"children\":[[\"$\",\"p\",null,{\"children\":[\"漏 \",\"2025\",\" Vercel, Inc.\"]}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack footer_socials__VfDh3\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"row\",\"--stack-align\":\"center\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"12px\"},\"children\":[[\"$\",\"a\",null,{\"aria-label\":\"GitHub\",\"href\":\"https://github.com/vercel/next.js\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"$12\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":16,\"height\":16,\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}],[\"$\",\"hr\",null,{}],[\"$\",\"a\",null,{\"aria-label\":\"Twitter\",\"href\":\"https://x.com/nextjs\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M0.5 0.5H5.75L9.48421 5.71053L14 0.5H16L10.3895 6.97368L16.5 15.5H11.25L7.51579 10.2895L3 15.5H1L6.61053 9.02632L0.5 0.5ZM12.0204 14L3.42043 2H4.97957L13.5796 14H12.0204Z\\\" fill=\\\"currentColor\\\" /\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":16,\"height\":16,\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}],[\"$\",\"hr\",null,{}],[\"$\",\"a\",null,{\"aria-label\":\"Bluesky\",\"href\":\"https://bsky.app/profile/nextjs.org\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath color=\\\"currentColor\\\" fill=\\\"currentColor\\\" d=\\\"M3.47 1.95A19 19 0 0 1 8 7.62c.73-1.5 2.7-4.3 4.53-5.67C13.86.95 16 .19 16 2.63c0 .5-.28 4.1-.44 4.7-.58 2.03-2.66 2.55-4.5 2.24 3.23.55 4.05 2.38 2.27 4.2-3.37 3.46-4.85-.87-5.23-1.98q-.1-.32-.1-.22 0-.1-.1.22c-.38 1.11-1.86 5.44-5.23 1.98-1.78-1.82-.96-3.65 2.28-4.2C3.1 9.89 1 9.37.45 7.32A48 48 0 0 1 0 2.63C0 .2 2.15.96 3.47 1.95\\\" /\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":16,\"height\":16,\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}]]}],[\"$\",\"$f\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{}]}]]}]]}]}]}]}],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$L14\",null,{}]}],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$L15\",null,{}]}]]}]}]]}],[\"$\",\"$L16\",null,{}],null]}]]}]]}],{\"children\":[\"blog\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"div\",null,{\"className\":\"relative mx-auto max-w-screen-xl gap-x-6 px-4 py-10 md:flex md:flex-row md:py-10\",\"children\":[[\"$\",\"div\",null,{\"id\":\"geist-skip-nav\",\"ref\":\"$undefined\",\"style\":{\"gridRow\":\"1 / 1\"},\"tabIndex\":-1}],[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]]}],{\"children\":[[\"slug\",\"next-12-1\",\"d\"],[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[\"$L17\",[\"$\",\"$L18\",null,{\"children\":\"$L19\"}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a0d401486824442c.css?dpl=dpl_VNX4zTWiofyGjJKY7egZc24pAzSW\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$L1a\",null,{\"children\":[\"$L1b\",\"$L1c\",[\"$\",\"$L1d\",null,{\"promise\":\"$@1e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"pxWH3LPz4tf6c5N9-k5oO\",{\"children\":[[\"$\",\"$L1f\",null,{\"children\":\"$L20\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$21\",\"$undefined\"],\"s\":false,\"S\":false}\n"])</script><script>self.__next_f.push([1,"19:[\"$\",\"$f\",null,{\"fallback\":null,\"children\":[\"$\",\"$L22\",null,{\"promise\":\"$@23\"}]}]\n27:Td24,"])</script><script>self.__next_f.push([1,"This release was brought to you by the contributions of: @MaedahBatool, @mutebg, @sokra, @huozhi, @hanford, @shuding, @sean6bucks, @jameshfisher, @devknoll, @yuta-ike, @zh-lx, @amandeepmittal, @alunyov, @stefanprobst, @leerob, @balazsorban44, @kdy1, @brittanyrw, @jord1e, @kara, @vvo, @ismaelrumzan, @dlindenkreuz, @MohammadxAli, @nguyenyou, @thibautsabot, @hanneslund, @vertti, @KateKate, @stefee, @mikinovation, @Leticijak, @mohsen1, @ncphillips, @ehowey, @lancechentw, @krychaxp, @fmacherey, @pklawansky, @RyanClementsHax, @lakbychance, @sannajammeh, @oliviertassinari, @alexander-akait, @u-yas, @Cheprer, @msp5382, @chrispat, @getspooky, @Ryz0nd, @klaasman, @midgleyc, @kumard3, @jesstelford, @neeraj3029, @glenngijsberts, @pie6k, @wouterraateland, @timneutkens, @11koukou, @thesyedbasim, @aeneasr, @ijjk, @lfades, @JuniorTour, @xavhan, @mattyocode, @padmaia, @Skn0tt, @gwer, @Nutlope, @styfle, @stipsan, @xhoantran, @eolme, @sespinosa, @zenorocha, @hjaber, @benmvp, @T-O-R-U-S, @dburrows, @atcastle, @kiriny, @molebox, @Vienio99, @kyliau, @PepijnSenders, @krystofex, @PizzaPete, @souljuse, @Schniz, @Nelsonfrank, @Mhmdrza, @hideokamoto-stripe, @Emrin, @gr-qft, @delbaoliveira, @redbar0n, @lxy-yz, @Divlo, @kachkaev, @teleaziz, @OgbeniHMMD, @goncy, @bennettdams, @hsynlms, @callumgare, @jonrosner, @karaggeorge, @rpie3, @MartijnHols, @bashunaimiroy, @NOCELL, @rishabhpoddar, @omariosouto, @theMosaad, @javivelasco, @pierrenel, @lobsterkatie, @tharakabimal, @saevarb, @nbouvrette, @paulnbrd, @ecklf, @renbaoshuo, @chozzz, @tbezman, @karlhorky, @j-mendez, @ffan0811, @arthurfiorette, @chimit, @joperron, @moh12594, @rasmusjp, @bryanrsmith, @TrySound, @josharsh, @thecrypticace, @arturparkhisenko, @segheysens, @thevinter, @AryanBeezadhur, @xiaohp, @tknickman, @oriolcp, @smakosh, @jorrit, @mix3d, @Clecio013, @michielvangendt, @intergalacticspacehighway, @jbraithwaite, @marcelocarmona, @benmerckx, @haykerman, @steven-tey, @jaredpalmer, @pi-guy-in-the-sky, @JuanM04, @apollisa, @D-Pagey, @Kikobeats, @ramosbugs, @dan-weaver, @chris-stytch, @MikevPeeren, @janpio, @emw3, @nubpro, @cmdcolin, @joostdecock, @sgallese, @housseindjirdeh, @minervabot, @cjboco, @Ryuurock, @dm430, @mkarkachov, @nvh95, @gfortaine, @zifeo, @vicente-s, @Rohithgilla12, @brookton, @skirsten, @davidfateh, @DavidBabel, @mannybecerra, @pveyes, @kaykdm, @xhiroga, @mzaien, @losfair, @ykzts, @knezevicdev, @yang-feng-yfeng, @xuchaobei, @elkevinwolf, @fabienheureux, @nilskaspersson, @Andarist, @mathcrln, @dferber90, @FranciscoMoretti, @benschwarz, @wendellhu95, @gazdagergo, @imabp, @ljosberinn, @samuliasmala, @ka2jun8, @monsonjeremy, @pqt, @leoortizz, @michel-kraemer, @ntkoopman, @iicdii, @chentsulin, @ericmatthys, @lennym, @balogunkeji, @wnr, @chemicalkosek, @KittyGiraudel, @OKinane, @KonstHardy, @BrandonRomano, @furcan, @dusanralic, @elliottsj, @hi-ogawa, @panva, @genetschneider, @thundermiracle, @stefano-rainieri, @ericbiewener, @vordgi, @stevejarvis, @ihmpavel, @matamatanot, @dyarfaradj, @iheyunfei, @ascorbic, @fytriht, @emzoumpo, @onurtemiz, @a-ursino, @mxschmitt, @bywo, @OArnarsson, @TurekBot, @gish, @vadymshymko, @kamsar, @skhaz, @Prashoon123, @IrisvanOllefen, @evan-bradley, @ntltd, @EzequielDM, @oBusk, @martpie, @BruceRodrigues, @luke-h1, @lucasvazq, @velocity23, @AkiraTsuboi, @mitheelgajare, @JamiesWhiteShirt, @leroydev, @JulienZD, @leotaku, @mattfwood, and @kripod."])</script><script>self.__next_f.push([1,"17:[\"$\",\"article\",null,{\"className\":\"detail_root__DU4wZ pb-20\",\"children\":[[\"$\",\"$L24\",null,{\"className\":\"detail_back__6w4Dy\",\"href\":\"/blog\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"text-current\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.46966 13.7803L6.99999 14.3107L8.06065 13.25L7.53032 12.7197L3.56065 8.75001H14.25H15V7.25001H14.25H3.56065L7.53032 3.28034L8.06065 2.75001L6.99999 1.68935L6.46966 2.21968L1.39644 7.2929C1.00592 7.68342 1.00592 8.31659 1.39644 8.70711L6.46966 13.7803Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}],\"Back to Blog\"]}],[\"$\",\"p\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":\"Thursday, February 17th 2022\"}],[\"$\",\"h1\",null,{\"className\":\"text_wrapper__i87JK font-semibold\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"3rem\",\"--text-line-height\":\"3.5rem\",\"--text-letter-spacing\":\"-0.066875rem\",\"--text-weight\":\"700\"},\"children\":\"Next.js 12.1\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":\"Posted by\"}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack detail_authors__59UPR mb-8 mt-3 pb-4\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"row\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"16px\"},\"children\":[[\"$\",\"a\",\"authors/balazs-orban.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/balazsorban44\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Bal谩zs Orb谩n\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/balazs.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Bal谩zs Orb谩n\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"balazsorban44\"]}]]}]]}],[\"$\",\"a\",\"authors/dongyoon-kang.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/kdy1dev\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"DongYoon Kang\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/kdy.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"DongYoon Kang\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"kdy1dev\"]}]]}]]}],[\"$\",\"a\",\"authors/gerald-monaco.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/devknoll\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Gerald Monaco\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/gerald.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Gerald Monaco\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"devknoll\"]}]]}]]}],[\"$\",\"a\",\"authors/javi-velasco.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/javivelasco\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Javi Velasco\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/javi.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Javi Velasco\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"javivelasco\"]}]]}]]}],[\"$\",\"a\",\"authors/jiachi-liu.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/huozhi\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Jiachi Liu\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/jiachi.png\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Jiachi Liu\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"huozhi\"]}]]}]]}],[\"$\",\"a\",\"authors/jj-kasper.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/_ijjk\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"JJ Kasper\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/jj.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"JJ Kasper\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"_ijjk\"]}]]}]]}],[\"$\",\"a\",\"authors/joe-haddad.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/timer150\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Joe Haddad\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/timer.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Joe Haddad\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"timer150\"]}]]}]]}],[\"$\",\"a\",\"authors/kara-erickson.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/karaforthewin\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Kara Erickson\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/kara.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Kara Erickson\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"karaforthewin\"]}]]}]]}],[\"$\",\"a\",\"authors/maia-teegarden.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/padmaia\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Maia Teegarden\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/maia.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Maia Teegarden\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"padmaia\"]}]]}]]}],[\"$\",\"a\",\"authors/shu-ding.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/shuding_\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Shu Ding\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/shu.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Shu Ding\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"shuding_\"]}]]}]]}],[\"$\",\"a\",\"authors/steven.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/styfle\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Steven\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/styfle.png\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Steven\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"styfle\"]}]]}]]}],[\"$\",\"a\",\"authors/tim-neutkens.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/timneutkens\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Tim Neutkens\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/tim.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Tim Neutkens\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"timneutkens\"]}]]}]]}],[\"$\",\"a\",\"authors/tobias-koppers.md\",{\"className\":\"detail_author__AvoLc\",\"href\":\"https://twitter.com/wSokra\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"$L25\",null,{\"alt\":\"Tobias Koppers\",\"className\":\"rounded-full\",\"height\":28,\"src\":\"/static/team/sokra.jpg\",\"width\":28}],[\"$\",\"div\",null,{\"className\":\"stack_stack__iZkUS stack\",\"data-testid\":\"$undefined\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--stack-flex\":\"initial\",\"--stack-direction\":\"column\",\"--stack-align\":\"stretch\",\"--stack-justify\":\"flex-start\",\"--stack-padding\":\"0px\",\"--stack-gap\":\"0px\"},\"children\":[[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-1000)\",\"--text-size\":\"0.875rem\",\"--text-line-height\":\"1.25rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":500},\"children\":\"Tobias Koppers\"}],[\"$\",\"span\",null,{\"className\":\"text_wrapper__i87JK\",\"data-version\":\"v1\",\"ref\":\"$undefined\",\"style\":{\"--text-color\":\"var(--ds-gray-900)\",\"--text-size\":\"0.75rem\",\"--text-line-height\":\"1rem\",\"--text-letter-spacing\":\"initial\",\"--text-weight\":\"400\"},\"children\":[\"@\",\"wSokra\"]}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"prose prose-vercel max-w-none\",\"children\":[[\"$\",\"p\",null,{\"children\":\"We're excited to release one of our most requested features with Next.js 12.1:\"}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"#on-demand-incremental-static-regeneration-beta\",\"children\":[\"$\",\"strong\",null,{\"children\":\"On-demand ISR (Beta):\"}]}],\" Revalidate pages using \",[\"$\",\"code\",null,{\"children\":\"getStaticProps\"}],\" instantly.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"#improved-swc-support\",\"children\":[\"$\",\"strong\",null,{\"children\":\"Expanded Support for SWC:\"}]}],\" \",[\"$\",\"code\",null,{\"children\":\"styled-components\"}],\", Relay, and more.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"#zero-configuration-jest-plugin\",\"children\":[\"$\",\"strong\",null,{\"children\":[[\"$\",\"code\",null,{\"children\":\"next/jest\"}],\" Plugin:\"]}]}],\" Zero-configuration Jest support using SWC.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"#faster-minification-with-swc\",\"children\":[\"$\",\"strong\",null,{\"children\":\"Faster Minification with SWC (RC):\"}]}],\" 7x faster minification than Terser.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"#self-hosted-nextjs-improvements\",\"children\":[\"$\",\"strong\",null,{\"children\":\"Self-Hosting Improvements:\"}]}],\" ~80% smaller Docker images.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"#react-18-server-components-and-ssr-streaming-alpha\",\"children\":[\"$\",\"strong\",null,{\"children\":\"React 18 \u0026 Server Components (Alpha):\"}]}],\" Improved stability and support.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"#nextjs-developer-survey\",\"children\":[\"$\",\"strong\",null,{\"children\":\"Developer Survey:\"}]}],\" Help us improve Next.js with your feedback.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Update today by running \",[\"$\",\"code\",null,{\"children\":\"npm i next@latest\"}],\".\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"on-demand-incremental-static-regeneration-beta\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#on-demand-incremental-static-regeneration-beta\",\"children\":[\"On-demand Incremental Static Regeneration (Beta)\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Next.js now exposes a function \",[\"$\",\"code\",null,{\"children\":\"unstable_revalidate()\"}],\" allowing you to revalidate individual pages that use \",[\"$\",\"code\",null,{\"children\":\"getStaticProps\"}],\". This was one of our most requested features since we introduced \",[\"$\",\"$L24\",null,{\"href\":\"/docs/pages/building-your-application/data-fetching/incremental-static-regeneration\",\"children\":\"Incremental Static Regeneration\"}],\" (ISR) in Next.js 9.5.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Since ISR was released, we've seen companies like \",[\"$\",\"a\",null,{\"href\":\"https://vercel.com/customers/cruise-critic\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Tripadvisor\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\", \",[\"$\",\"a\",null,{\"href\":\"https://vercel.com/customers/parachute\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Parachute\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\", HashiCorp, and more drastically improve their build times while retaining incredible performance. However, we've heard your feedback on interval-based revalidations and are excited to provide more flexibility.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Currently, if you set a \",[\"$\",\"code\",null,{\"children\":\"revalidate\"}],\" time of \",[\"$\",\"code\",null,{\"children\":\"60\"}],\", all visitors will see the same generated version of your site for one minute. The only way to invalidate the cache was from someone visiting that page after the minute had passed. You can now manually purge the Next.js cache for a specific page on-demand.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"This makes it easier to update your site when:\"}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":\"Content from your headless CMS is created or updated\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"Ecommerce metadata changes (price, description, category, reviews, etc.)\"}],\"\\n\"]}],\"\\n\",[\"$\",\"$L26\",null,{\"filename\":\"pages/api/revalidate.js\",\"language\":\"jsx\",\"switcher\":\"$undefined\",\"children\":[[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"export\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"default\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"async\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"function\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-function)\"},\"children\":\"handler\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"(req\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-punctuation)\"},\"children\":\",\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" res) {\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-comment)\"},\"children\":\"// Check for secret to confirm this is a valid request\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"if\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" (\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"req\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\".\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"query\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\".secret \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"!==\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"process\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\".\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"env\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\".\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"MY_SECRET_TOKEN\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\") {\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"return\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"res\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-function)\"},\"children\":\".status\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"(\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"401\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\")\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-function)\"},\"children\":\".json\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"({ message\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\":\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-string-expression)\"},\"children\":\"'Invalid token'\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" });\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" }\"}]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":\" \"}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"try\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" {\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"await\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"res\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-function)\"},\"children\":\".unstable_revalidate\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"(\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-string-expression)\"},\"children\":\"'/path-to-revalidate'\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\");\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"return\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"res\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-function)\"},\"children\":\".json\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"({ revalidated\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\":\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"true\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" });\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" } \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"catch\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" (err) {\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-comment)\"},\"children\":\"// If there was an error, Next.js will continue\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-comment)\"},\"children\":\"// to show the last successfully generated page\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"return\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"res\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-function)\"},\"children\":\".status\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"(\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"500\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\")\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-function)\"},\"children\":\".send\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"(\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-string-expression)\"},\"children\":\"'Error revalidating'\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\");\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" }\"}]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"}\"}]}]]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Inside \",[\"$\",\"code\",null,{\"children\":\"getStaticProps\"}],\", you do not need to specify \",[\"$\",\"code\",null,{\"children\":\"revalidate\"}],\" to use on-demand revalidation. If \",[\"$\",\"code\",null,{\"children\":\"revalidate\"}],\" is omitted, Next.js will use the default value of \",[\"$\",\"code\",null,{\"children\":\"false\"}],\" (no revalidation) and only revalidate the page on-demand when \",[\"$\",\"code\",null,{\"children\":\"unstable_revalidate()\"}],\" is called.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Incremental Static Regeneration works for any providers supporting the \",[\"$\",\"$L24\",null,{\"href\":\"/docs/pages/building-your-application/deploying#nextjs-build-api\",\"children\":\"Next.js Build API\"}],\" (\",[\"$\",\"code\",null,{\"children\":\"next build\"}],\"). Starting today when deployed to Vercel, on-demand revalidation propagates globally in ~300ms when pushing pages to the edge.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"https://on-demand-isr.vercel.app/\",\"rel\":\"noopener noreferrer nofollow\",\"target\":\"_blank\",\"children\":[\"View our demo\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" to see on-demand revalidation in action and provide feedback. Svix (enterprise-ready webhooks) and Clerk (authentication) have also \",[\"$\",\"a\",null,{\"href\":\"https://www.svix.com/blog/vercel-on-demand-isr-and-svix\",\"rel\":\"noopener noreferrer nofollow\",\"target\":\"_blank\",\"children\":[\"created a demo\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" of on-demand ISR.\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"improved-swc-support\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#improved-swc-support\",\"children\":[\"Improved SWC support\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"We want to make every Next.js application build faster for production and get instant feedback in local development. \",[\"$\",\"a\",null,{\"href\":\"https://nextjs.org/blog/next-12\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Next.js 12\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" introduced a new \",[\"$\",\"$L24\",null,{\"href\":\"/docs/architecture/nextjs-compiler\",\"children\":\"Rust-based compiler\"}],\" that takes advantage of native compilation.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"With 12.1, we've added support to the Next.js Compiler for:\"}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"$L24\",null,{\"href\":\"/docs/architecture/nextjs-compiler#styled-components\",\"children\":\"styled-components\"}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"$L24\",null,{\"href\":\"/docs/architecture/nextjs-compiler#importsource\",\"children\":\"importSource\"}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"$L24\",null,{\"href\":\"/docs/architecture/nextjs-compiler#legacy-decorators\",\"children\":\"legacy-decorators\"}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"$L24\",null,{\"href\":\"/docs/architecture/nextjs-compiler#relay\",\"children\":\"relay\"}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"$L24\",null,{\"href\":\"/docs/architecture/nextjs-compiler#remove-react-properties\",\"children\":\"remove-react-properties\"}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"$L24\",null,{\"href\":\"/docs/architecture/nextjs-compiler#remove-console\",\"children\":\"remove-console\"}]}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"With the above six transforms added, we have now ported the most common Babel plugins to Rust using the new compiler. If there are other plugins you'd like to see, \",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/discussions/30174\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"let us know on the discussion\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\". Further, we're working on a system for \",[\"$\",\"a\",null,{\"href\":\"https://twitter.com/swc_rs/status/1492454606118752257\",\"rel\":\"noopener noreferrer nofollow\",\"target\":\"_blank\",\"children\":[\"high-performance WebAssembly plugins\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" enabled through SWC.\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"zero-configuration-jest-plugin\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#zero-configuration-jest-plugin\",\"children\":[\"Zero-configuration Jest plugin\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Next.js now automatically configures Jest for you (\",[\"$\",\"code\",null,{\"children\":\"next/jest\"}],\") using the Rust-based Next.js Compiler to transform files, including:\"]}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Auto mocking stylesheets (\",[\"$\",\"code\",null,{\"children\":\".css\"}],\", \",[\"$\",\"code\",null,{\"children\":\".module.css\"}],\", and their \",[\"$\",\"code\",null,{\"children\":\".scss\"}],\" variants) and image imports\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Loading \",[\"$\",\"code\",null,{\"children\":\".env\"}],\" (and all variants) into \",[\"$\",\"code\",null,{\"children\":\"process.env\"}]]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Ignoring \",[\"$\",\"code\",null,{\"children\":\"node_modules\"}],\" from test resolving and transforms\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Ignoring \",[\"$\",\"code\",null,{\"children\":\".next\"}],\" from test resolving\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Loading \",[\"$\",\"code\",null,{\"children\":\"next.config.js\"}],\" for flags that enable Next.js compiler transforms\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"$L24\",null,{\"href\":\"/docs/pages/building-your-application/optimizing/testing#setting-up-jest-with-the-rust-compiler\",\"children\":\"Check out the documentation\"}],\" to learn more or \",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/tree/canary/examples/with-jest\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"get started from our Jest example\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\".\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"faster-minification-with-swc\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#faster-minification-with-swc\",\"children\":[\"Faster minification with SWC\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"With \",[\"$\",\"a\",null,{\"href\":\"https://nextjs.org/blog/next-12\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Next.js 12\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\", we introduced minification using SWC as part of the Next.js Compiler. Early results showed it was \",[\"$\",\"strong\",null,{\"children\":\"7x faster than Terser.\"}],\" Minification with SWC is now in Release Candidate (RC) with 12.1 and will become the default in 12.2.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"You can opt-in to using SWC for minification in \",[\"$\",\"code\",null,{\"children\":\"next.config.js\"}],\":\"]}],\"\\n\",[\"$\",\"$L26\",null,{\"filename\":\"next.config.js\",\"language\":\"js\",\"switcher\":\"$undefined\",\"children\":[[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"module\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\".\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"exports\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"=\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" {\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" swcMinify\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\":\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"true\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-punctuation)\"},\"children\":\",\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"};\"}]}]]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Let us know your feedback on the \",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/discussions/30237\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"discussion\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\".\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"faster-image-optimization\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#faster-image-optimization\",\"children\":[\"Faster Image Optimization\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"The built-in Image Optimization API has been updated to support the same pattern as \",[\"$\",\"$L24\",null,{\"href\":\"/docs/pages/building-your-application/data-fetching/incremental-static-regeneration\",\"children\":\"ISR pages\"}],\", where images are served stale and \",[\"$\",\"em\",null,{\"children\":\"revalidate\"}],\" in the background (also known as \",[\"$\",\"code\",null,{\"children\":\"stale-while-revalidate\"}],\").\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"This is a significant performance improvement for optimizing images. See \",[\"$\",\"$L24\",null,{\"href\":\"/docs/pages/api-reference/components/image#caching-behavior\",\"children\":\"Image Caching Behavior\"}],\" to learn more.\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"self-hosted-nextjs-improvements\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#self-hosted-nextjs-improvements\",\"children\":[\"Self-hosted Next.js improvements\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Next.js can now automatically create a \",[\"$\",\"code\",null,{\"children\":\"standalone\"}],\" folder that copies \",[\"$\",\"em\",null,{\"children\":\"only\"}],\" the necessary files for production deployments. This has resulted in \",[\"$\",\"strong\",null,{\"children\":\"~80% smaller Docker images\"}],\" for self-hosted Next.js applications.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"To leverage this automatic copying you can enable it in your \",[\"$\",\"code\",null,{\"children\":\"next.config.js\"}],\":\"]}],\"\\n\",[\"$\",\"$L26\",null,{\"filename\":\"next.config.js\",\"language\":\"js\",\"switcher\":\"$undefined\",\"children\":[[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"module\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\".\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"exports\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\"=\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" {\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" experimental\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\":\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" {\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" outputStandalone\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-keyword)\"},\"children\":\":\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" \"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-constant)\"},\"children\":\"true\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-punctuation)\"},\"children\":\",\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\" }\"}],[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-token-punctuation)\"},\"children\":\",\"}]]}],\"\\n\",[\"$\",\"span\",null,{\"className\":\"line\",\"children\":[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--shiki-color-text)\"},\"children\":\"};\"}]}]]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"This will create a folder at \",[\"$\",\"code\",null,{\"children\":\".next/standalone\"}],\" which can then be deployed on its own without installing \",[\"$\",\"code\",null,{\"children\":\"node_modules\"}],\".\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"$L24\",null,{\"href\":\"/docs/pages/api-reference/next-config-js/output#automatically-copying-traced-files-experimental\",\"children\":\"Check out the documentation\"}],\" or get started from the \",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/tree/canary/examples/with-docker\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Docker example\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\". We now also have a \",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/tree/canary/examples/with-docker-multi-env\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"multi-env Docker example\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" with support for loading different \",[\"$\",\"code\",null,{\"children\":\".env\"}],\" files based on the environment.\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"react-18-server-components-and-ssr-streaming-alpha\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#react-18-server-components-and-ssr-streaming-alpha\",\"children\":[\"React 18, Server Components, and SSR Streaming (Alpha)\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"As shown at \",[\"$\",\"a\",null,{\"href\":\"https://www.youtube.com/watch?v=WlP2TB2ORL4\",\"rel\":\"noopener noreferrer nofollow\",\"target\":\"_blank\",\"children\":[\"Next.js Conf\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\", we've been working to bring React 18, Server-Side Suspense, Streaming SSR, and eventually Server Components to Next.js.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"Server Components are a new feature in React that let you reduce your JavaScript bundle size by separating server and client-side code. Server Components allow developers to build apps that span the server and client, combining the rich interactivity of client-side apps with the improved performance of traditional server rendering.\"}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"For developers \",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/discussions/31263\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"following along\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" on the Server Components path from alpha to beta in Next.js, here are some of the recent updates:\"]}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/issues/30994\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Inline Server Component responses in the HTML to avoid a second request\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/issues/31338\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Improved script loading when streaming to enable partial hydration with React 18\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/pull/31102\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[[\"Support for the new \",[\"$\",\"code\",null,{\"children\":\"useId\"}],\" API in React 18\"],[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/issues/30996\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[[\"Support for \",[\"$\",\"code\",null,{\"children\":\"_app\"}],\" as a Server Component\"],[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/pull/31968\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Improved code splitting for Server Components\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/pull/30585\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Improved streaming performance\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/pull/34068\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Ability to change the default runtime between Node.js and Edge\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" (\",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next.js/discussions/34179\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"RFC\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\")\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"We're working to enable you to run your entire Next.js application server-rendered at the Edge. You can choose which pages should opt into the Edge Runtime, so you can incrementally migrate pages from Node.js as you're ready.\"}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"We'll be releasing another post going more in-depth on the Edge Runtime soon. Both of our demos (\",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next-server-components\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"next-server-components\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" and \",[\"$\",\"a\",null,{\"href\":\"https://github.com/vercel/next-rsc-demo\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"next-rsc-demo\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\") have been updated with the latest changes.\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"other-bug-fixes-and-improvements\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#other-bug-fixes-and-improvements\",\"children\":[\"Other bug fixes and improvements\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Using \",[\"$\",\"code\",null,{\"children\":\"\u003ca\u003e\"}],\" with \",[\"$\",\"code\",null,{\"children\":\"target=\\\"blank\\\"\"}],\" no longer warns to use \",[\"$\",\"code\",null,{\"children\":\"next/link\"}],\" with ESLint.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"code\",null,{\"children\":\".d.ts\"}],\" files are no longer considered Pages.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"code\",null,{\"children\":\"document.title\"}],\" now takes priority over \",[\"$\",\"code\",null,{\"children\":\"h1\"}],\" when announcing page changes to screen readers.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Creating \",[\"$\",\"code\",null,{\"children\":\"pages/index/[...dynamic].js\"}],\" now works, which previously was not possible due to \",[\"$\",\"code\",null,{\"children\":\"index\"}],\" being a reserved keyword.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"When using \",[\"$\",\"code\",null,{\"children\":\"dynamic(() =\u003e import('./some-component'), { ssr: false })\"}],\" the import will be automatically treeshaken from the server code.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"To create a smaller installation size and improve security, we're working to precompile more dependencies. The latest addition was \",[\"$\",\"code\",null,{\"children\":\"node-fetch\"}],\".\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Improvements for Fast Refresh when using \",[\"$\",\"$L24\",null,{\"href\":\"/docs/pages/building-your-application/routing/middleware\",\"children\":\"Middleware\"}],\".\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Support for ESLint 8 with our \",[\"$\",\"$L24\",null,{\"href\":\"/docs/pages/building-your-application/configuring/eslint\",\"children\":\"built-in ESLint Integration\"}],\".\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"code\",null,{\"children\":\"styled-jsx\"}],\" has been upgraded to 5.0, including new helpful error links for all \",[\"$\",\"code\",null,{\"children\":\"styled-jsx\"}],\" compilation errors.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Edge Runtime: Support for \",[\"$\",\"code\",null,{\"children\":\"AbortController\"}],\" and \",[\"$\",\"code\",null,{\"children\":\"AbortSignal\"}]]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"Edge Runtime: \",[\"$\",\"code\",null,{\"children\":\"CryptoKey\"}],\" and \",[\"$\",\"code\",null,{\"children\":\"globalThis.CryptoKey\"}],\" added.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"Large Next.js applications are seeing ~60% improvements on Fast Refresh times with recent improvements (over 1,000 modules being reloaded).\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"A notification is now shown if Fast Refresh fails and causes a full page reload.\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":\"Announced routes now correctly skip announcing the initial page load when using React 18 strict mode.\"}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"We have lowered the number of open issues \",[\"$\",\"a\",null,{\"href\":\"https://nextjs-issue-tracker.vercel.app/\",\"rel\":\"noopener noreferrer nofollow\",\"target\":\"_blank\",\"children\":[\"by almost 300\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" on the Next.js repository compared to December 2021 (resolved almost 1000 issues).\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"nextjs-developer-survey\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#nextjs-developer-survey\",\"children\":[\"Next.js Developer Survey\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Share your feedback and help us improve Next.js with our \",[\"$\",\"a\",null,{\"href\":\"https://vercel.link/nextjs-survey\",\"rel\":\"noopener noreferrer nofollow\",\"target\":\"_blank\",\"children\":[\"first Developer Survey\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\".\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"There are two parts to this survey: a quick survey of eight questions and an extended survey that dives into feedback for individual features. We'd love it if you could fill out both sections if you have time, but if not, feel free to submit your answers after the first section.\"}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"Your answers will be completely anonymous, though you can choose to share your app URLs with us if you like.\"}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"Thanks for helping us improve Next.js!\"}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"thank-you-contributors\",\"data-docs-heading\":\"\",\"children\":[\"$\",\"a\",null,{\"href\":\"#thank-you-contributors\",\"children\":[\"Thank you, contributors\",[\"$\",\"span\",null,{\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 16 16\",\"height\":\"0.7em\",\"width\":\"0.7em\",\"children\":[\"\\n \",[\"$\",\"g\",null,{\"strokeWidth\":\"1.2\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"children\":[\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"}],\"\\n \",[\"$\",\"path\",null,{\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"d\":\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"}],\"\\n \"]}],\"\\n\"]}]}]]}]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Next.js is the result of the combined work of \",[\"$\",\"strong\",null,{\"children\":\"over 2,000 individual developers\"}],\", industry partners like Google and Facebook, and our core team.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"To make contribution easier, we've migrated the Next.js repository to use \",[\"$\",\"a\",null,{\"href\":\"https://turbo.build/repo\",\"rel\":\"noopener noreferrer\",\"target\":\"_blank\",\"children\":[\"Turborepo\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" to improve build performance. We've also added scaffolding for tests and error links to make it easier to get started writing tests. Finally, we recorded a \",[\"$\",\"a\",null,{\"href\":\"https://www.youtube.com/watch?v=cuoNzXFLitc\",\"rel\":\"noopener noreferrer nofollow\",\"target\":\"_blank\",\"children\":[\"40-minute walkthrough video\",[\"$\",\"span\",null,{\"className\":\"inline-flex\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cpath fill-rule=\\\"evenodd\\\" clip-rule=\\\"evenodd\\\" d=\\\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\\\" fill=\\\"currentColor\\\"/\u003e\"},\"data-testid\":\"geist-icon\",\"height\":16,\"strokeLinejoin\":\"round\",\"style\":{\"verticalAlign\":\"$undefined\",\"width\":\"$undefined\",\"height\":\"$undefined\",\"color\":\"currentColor\"},\"viewBox\":\"0 0 16 16\",\"width\":16}]}]]}],\" showing how to contribute to Next.js.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"$27\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"1c:null\na:\"$undefined\"\n20:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n1b:null\n"])</script><script>self.__next_f.push([1,"23:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Next.js 12.1 | Next.js\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Next.js 12.1 introduces on-demand ISR, support for styled-components and Relay, zero-config Jest support, and more!\"}],[\"$\",\"link\",\"2\",{\"rel\":\"canonical\",\"href\":\"https://nextjs.org/blog/next-12-1\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"Next.js 12.1\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Next.js 12.1 introduces on-demand ISR, support for styled-components and Relay, zero-config Jest support, and more!\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:url\",\"content\":\"https://nextjs.org/blog/next-12-1\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:image\",\"content\":\"https://h8dxkfmaphn8o0p3.public.blob.vercel-storage.com/static/blog/next-12-1/twitter-card.png\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"8\",{\"property\":\"article:published_time\",\"content\":\"2022-02-17T16:00:00.507Z\"}],[\"$\",\"meta\",\"9\",{\"property\":\"article:author\",\"content\":\"Bal谩zs Orb谩n\"}],[\"$\",\"meta\",\"10\",{\"property\":\"article:author\",\"content\":\"DongYoon Kang\"}],[\"$\",\"meta\",\"11\",{\"property\":\"article:author\",\"content\":\"Gerald Monaco\"}],[\"$\",\"meta\",\"12\",{\"property\":\"article:author\",\"content\":\"Javi Velasco\"}],[\"$\",\"meta\",\"13\",{\"property\":\"article:author\",\"content\":\"Jiachi Liu\"}],[\"$\",\"meta\",\"14\",{\"property\":\"article:author\",\"content\":\"JJ Kasper\"}],[\"$\",\"meta\",\"15\",{\"property\":\"article:author\",\"content\":\"Joe Haddad\"}],[\"$\",\"meta\",\"16\",{\"property\":\"article:author\",\"content\":\"Kara Erickson\"}],[\"$\",\"meta\",\"17\",{\"property\":\"article:author\",\"content\":\"Maia Teegarden\"}],[\"$\",\"meta\",\"18\",{\"property\":\"article:author\",\"content\":\"Shu Ding\"}],[\"$\",\"meta\",\"19\",{\"property\":\"article:author\",\"content\":\"Steven\"}],[\"$\",\"meta\",\"20\",{\"property\":\"article:author\",\"content\":\"Tim Neutkens\"}],[\"$\",\"meta\",\"21\",{\"property\":\"article:author\",\"content\":\"Tobias Koppers\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:title\",\"content\":\"Next.js 12.1\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:description\",\"content\":\"Next.js 12.1 introduces on-demand ISR, support for styled-components and Relay, zero-config Jest support, and more!\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image\",\"content\":\"https://h8dxkfmaphn8o0p3.public.blob.vercel-storage.com/static/blog/next-12-1/twitter-card.png\"}],[\"$\",\"link\",\"26\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"48x48\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"1e:{\"metadata\":\"$23:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10