CINXE.COM

Next.js by Vercel - The React Framework | Next.js by Vercel - The React Framework

<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-365f6de06927f27e.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3"/><script src="/_next/static/chunks/5091a3e8-f5ba03b3ab9b36e0.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3" async=""></script><script src="/_next/static/chunks/8920-d319027e5a0331aa.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3" async=""></script><script src="/_next/static/chunks/main-app-f54697e199fa5cfa.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust"/><title>Next.js by Vercel - The React Framework | Next.js by Vercel - The React Framework</title><meta name="description" content="Next.js by Vercel is the full-stack React framework for the web."/><link rel="canonical" href="https://nextjs.org/docs/getting-started/react-essentials"/><meta property="og:title" content="Next.js by Vercel - The React Framework | Next.js by Vercel - The React Framework"/><meta property="og:description" content="Next.js by Vercel is the full-stack React framework for the web."/><meta property="og:image" content="https://assets.vercel.com/image/upload/front/nextjs/twitter-card.png"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@vercel"/><meta name="twitter:title" content="Next.js by Vercel - The React Framework"/><meta name="twitter:description" content="Production grade React applications that scale. The world&#x27;s leading companies use Next.js by Vercel to build static and dynamic websites and web applications."/><meta name="twitter:image" content="https://assets.vercel.com/image/upload/front/nextjs/twitter-card.png"/><link rel="icon" href="/favicon.ico" type="image/x-icon" sizes="48x48"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3" noModule=""></script></head><body><script src="/_next/static/chunks/webpack-365f6de06927f27e.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"d:\"$Sreact.fragment\"\ne:I[11077,[],\"\"]\nf:I[34401,[],\"\"]\n10:I[21379,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"Analytics\"]\n11:I[38283,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3T"])</script><script>self.__next_f.push([1,"FDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"PrefetchCrossZoneLinksProvider\"]\n12:I[81521,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"140"])</script><script>self.__next_f.push([1,"8\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"Header\"]\n13:I[83630,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl"])</script><script>self.__next_f.push([1,"_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"Provider\"]\n14:I[53034,[\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"2817\",\"static/chunks/2817-bea1a81a984408f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"975\",\"static/chunks/app/(next-site)/page-31977870f153874b.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"HydrateMeLater\"]\n15:I[55296,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6"])</script><script>self.__next_f.push([1,"npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"default\"]\n16:I[29537,[\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1044\",\"static/chunks/1044-a81340b87386a728.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3989\",\"static/chunks/3989-f5fad81c666bfb08.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"2221\",\"static/chunks/app/(next-site)/docs/%5B%5B...slug%5D%5D/page-da89eed8f388d37d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"Image\"]\n17:I[38283,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629"])</script><script>self.__next_f.push([1,"f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"Link\"]\n18:\"$Sreact.suspense\"\n19:I[57783,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9m"])</script><script>self.__next_f.push([1,"zUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"ExternalFooterLink\"]\n1a:I[72808,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-"])</script><script>self.__next_f.push([1,"94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"NewsletterForm\"]\n1b:I[84291,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"ThemeSwitcher\"]\n1c:I[90972,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/ch"])</script><script>self.__next_f.push([1,"unks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"Cmdk\"]\n1d:I[16946,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVgh"])</script><script>self.__next_f.push([1,"A9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"ExpBackgroundFetcher\"]\n1e:I[82204,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/"])</script><script>self.__next_f.push([1,"1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"TrackPageView\"]\n1f:I[38283,[\"3449\",\"static/chunks/7f21bc4c-71d856fb4e76d1f6.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7857\",\"static/chunks/7857-eddbda2e61048066.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4017\",\"static/chunks/4017-212a365434a9eb93.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1612\",\"static/chunks/1612-186bc75dd6b5629f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4327\",\"static/chunks/4327-41834e819ad851f7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"256\",\"static/chunks/256-46b69c692260737f.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4889\",\"static/chunks/4889-c8c7801345bf75cc.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3034\",\"static/chunks/3034-ff19c70cbbc1e633.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1408\",\"static/chunks/1408-d54f90505fd0457d.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"8772\",\"static/chunks/8772-5610a53c82fd2110.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6357\",\"static/chunks/6357-5426d5084c7619ec.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1966\",\"static/chunks/1966-047bea23fde768c7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"7996\",\"static/chunks/7996-320cc75079c5e5a2.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9326\",\"static/chunks/9326-94fc8226b82db6a4.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"4283\",\"static/chunks/4283-b41334fe69e04bd5.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"1080\",\"static/chunks/app/(next-site)/layout-55169131cc7dec77.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"PrefetchCrossZoneLinks\"]\n20:I[41281,[\"4070\",\""])</script><script>self.__next_f.push([1,"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6488\",\"static/chunks/6488-2d339cfedf140fa7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9588\",\"static/chunks/app/(next-site)/docs/layout-1ae9df525e922fda.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"MobileNav\"]\n21:I[1659,[\"4070\",\"static/chunks/4070-f0f40d7653204d67.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"3672\",\"static/chunks/3672-6ab666c720ba9a23.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"6488\",\"static/chunks/6488-2d339cfedf140fa7.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"9588\",\"static/chunks/app/(next-site)/docs/layout-1ae9df525e922fda.js?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\"],\"NavList\"]\n23:I[71338,[],\"OutletBoundary\"]\n25:I[71338,[],\"MetadataBoundary\"]\n27:I[71338,[],\"ViewportBoundary\"]\n29:I[58812,[],\"\"]\n1:HL[\"/_next/static/media/569ce4b8f30dc480-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/93f479601ee12b01-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/css/baf446a5c20b5fd4.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\n4:HL[\"/_next/static/css/b00e7b06bf550775.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\n5:HL[\"/_next/static/css/3a4b7cc0153d49b4.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\n6:HL[\"/_next/static/css/58f50fdfd3cd38b6.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\n7:HL[\"/_next/static/css/dcc73d27a59f4e97.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\n8:HL[\"/_next/static/css/f51bf74793367a9a.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\n9:HL[\"/_next/static/css/824202e71e79374d.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\na:HL[\"/_next/static/css/83fe6bc36ad4703d.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\nb:HL[\"/_next/static/css/4ad309783bf416a2.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\nc:HL[\"/_next/static/css/f4addedd731adba4.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"h7Aj1SrTi1snZmlKQZGXL\",\"p\":\"\",\"c\":[\"\",\"docs\",\"getting-started\",\"react-essentials\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"(next-site)\",{\"children\":[\"docs\",{\"children\":[[\"slug\",\"getting-started/react-essentials\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true]}],[\"\",[\"$\",\"$d\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",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.\"}]}]]}]}]]]}]]}],{\"children\":[\"(next-site)\",[\"$\",\"$d\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/baf446a5c20b5fd4.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b00e7b06bf550775.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3a4b7cc0153d49b4.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/58f50fdfd3cd38b6.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"4\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/dcc73d27a59f4e97.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"5\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f51bf74793367a9a.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"6\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/824202e71e79374d.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"7\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/83fe6bc36ad4703d.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"8\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/4ad309783bf416a2.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"9\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f4addedd731adba4.css?dpl=dpl_6npP3TFDYNhchVghA9mzUjvMcue3\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"className\":\"__variable_b4bd81 __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) {}\"}}]]}],[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L10\",null,{}],[\"$\",\"$L11\",null,{\"children\":[[\"$\",\"$L12\",null,{}],[\"$\",\"$L13\",null,{\"children\":[[\"$\",\"main\",null,{\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(next-site)\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",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:1: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:1:1:props:children:props:children:1:props:style\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:notFound:1:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:notFound:1:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]]]}]}],[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$L15\",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\":[\"$\",\"$L16\",null,{\"alt\":\"GitHub Logo\",\"height\":\"16\",\"src\":\"/icons/github.svg\",\"width\":\"16\"}]}],[\"$\",\"hr\",null,{}],[\"$\",\"a\",null,{\"aria-label\":\"Twitter\",\"href\":\"https://twitter.com/nextjs\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":[\"$\",\"$L16\",null,{\"alt\":\"X Logo\",\"className\":\"footer_x__r5_ph\",\"height\":\"16\",\"src\":\"/icons/x.svg\",\"width\":\"16\"}]}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"children\":\"Resources\"}],[\"$\",\"a\",null,{\"href\":\"/docs\",\"children\":\"Docs\"}],[\"$\",\"$L17\",null,{\"href\":\"/learn\",\"prefetch\":false,\"children\":\"Learn\"}],[\"$\",\"$L17\",null,{\"href\":\"/showcase\",\"prefetch\":false,\"children\":\"Showcase\"}],[\"$\",\"$L17\",null,{\"href\":\"/blog\",\"prefetch\":false,\"children\":\"Blog\"}],[\"$\",\"$18\",null,{\"fallback\":null,\"children\":[\"$\",\"$L19\",null,{\"path\":\"/analytics\",\"children\":\"Analytics\"}]}],[\"$\",\"$L17\",null,{\"href\":\"/conf\",\"prefetch\":false,\"children\":\"Next.js Conf\"}],[\"$\",\"$18\",null,{\"fallback\":null,\"children\":[\"$\",\"$L19\",null,{\"path\":\"/products/previews\",\"children\":\"Previews\"}]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"children\":\"More\"}],[\"$\",\"$18\",null,{\"fallback\":null,\"children\":[\"$\",\"$L19\",null,{\"path\":\"/templates/next.js/nextjs-commerce\",\"children\":\"Next.js Commerce\"}]}],[\"$\",\"$18\",null,{\"fallback\":null,\"children\":[\"$\",\"$L19\",null,{\"path\":\"/contact/sales\",\"children\":\"Contact Sales\"}]}],[\"$\",\"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\"}],[\"$\",\"$L17\",null,{\"href\":\"/telemetry\",\"prefetch\":false,\"children\":\"Telemetry\"}],[\"$\",\"$L17\",null,{\"href\":\"/governance\",\"prefetch\":false,\"children\":\"Governance\"}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"h4\",null,{\"children\":\"About Vercel\"}],[\"$\",\"$18\",null,{\"fallback\":null,\"children\":[\"$\",\"$L19\",null,{\"path\":\"/solutions/nextjs\",\"children\":\"Next.js + Vercel\"}]}],[\"$\",\"$18\",null,{\"fallback\":null,\"children\":[\"$\",\"$L19\",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://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\"}]]}],[\"$\",\"$L1a\",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\":[\"© \",\"2024\",\" 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\":[\"$\",\"$L16\",null,{\"alt\":\"GitHub Logo\",\"height\":\"16\",\"src\":\"/icons/github.svg\",\"width\":\"16\"}]}],[\"$\",\"hr\",null,{}],[\"$\",\"a\",null,{\"aria-label\":\"Twitter\",\"href\":\"https://twitter.com/nextjs\",\"rel\":\"noopener\",\"target\":\"_blank\",\"children\":[\"$\",\"$L16\",null,{\"alt\":\"X Logo\",\"className\":\"footer_x__r5_ph\",\"height\":\"16\",\"src\":\"/icons/x.svg\",\"width\":\"16\"}]}]]}]]}],[\"$\",\"$18\",null,{\"fallback\":null,\"children\":[\"$\",\"$L1b\",null,{}]}]]}]]}]}]}]}],[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$L1c\",null,{}]}],[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$L1d\",null,{}]}],[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$L1e\",null,{}]}]]}]]}],[\"$\",\"$L1f\",null,{}],null]}]]}]]}],{\"children\":[\"docs\",[\"$\",\"$d\",\"c\",{\"children\":[null,[[\"$\",\"$L20\",null,{\"children\":[\"$\",\"$L21\",null,{\"isMobile\":true,\"items\":{\"13\":[{\"title\":\"Getting Started\",\"description\":\"Learn how to create full-stack web applications with Next.js.\",\"path\":\"13/getting-started\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Installation\",\"description\":\"Create a new Next.js application with `create-next-app`. Set up TypeScript, styles, and configure your `next.config.js` file.\",\"path\":\"13/getting-started/installation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Project Structure\",\"description\":\"A list of folders and files conventions in a Next.js project\",\"path\":\"13/getting-started/project-structure\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Building Your Application\",\"description\":\"Learn how to use Next.js features to build your application.\",\"path\":\"13/app/building-your-application\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Routing\",\"description\":\"Learn the fundamentals of routing for front-end applications.\",\"path\":\"13/app/building-your-application/routing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Defining Routes\",\"description\":\"Learn how to create your first route in Next.js.\",\"path\":\"13/app/building-your-application/routing/defining-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Pages and Layouts\",\"description\":\"Create your first page and shared layout with the App Router.\",\"path\":\"13/app/building-your-application/routing/pages-and-layouts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Linking and Navigating\",\"description\":\"Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook.\",\"path\":\"13/app/building-your-application/routing/linking-and-navigating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Groups\",\"description\":\"Route Groups can be used to partition your Next.js application into different sections.\",\"path\":\"13/app/building-your-application/routing/route-groups\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Dynamic Routes\",\"description\":\"Dynamic Routes can be used to programmatically generate route segments from dynamic data.\",\"path\":\"13/app/building-your-application/routing/dynamic-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Loading UI and Streaming\",\"description\":\"Built on top of Suspense, Loading UI allows you to create a fallback for specific route segments, and automatically stream content as it becomes ready.\",\"path\":\"13/app/building-your-application/routing/loading-ui-and-streaming\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Error Handling\",\"description\":\"Handle runtime errors by automatically wrapping route segments and their nested children in a React Error Boundary.\",\"path\":\"13/app/building-your-application/routing/error-handling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Parallel Routes\",\"description\":\"Simultaneously render one or more pages in the same view that can be navigated independently. A pattern for highly dynamic applications.\",\"path\":\"13/app/building-your-application/routing/parallel-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Intercepting Routes\",\"description\":\"Use intercepting routes to load a new route within the current layout while masking the browser URL, useful for advanced routing patterns such as modals.\",\"path\":\"13/app/building-your-application/routing/intercepting-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Handlers\",\"description\":\"Create custom request handlers for a given route using the Web's Request and Response APIs.\",\"path\":\"13/app/building-your-application/routing/route-handlers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Middleware\",\"description\":\"Learn how to use Middleware to run code before a request is completed.\",\"path\":\"13/app/building-your-application/routing/middleware\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Project Organization\",\"description\":\"Learn how to organize your Next.js project and colocate files.\",\"path\":\"13/app/building-your-application/routing/colocation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Internationalization\",\"description\":\"Add support for multiple languages with internationalized routing and localized content.\",\"path\":\"13/app/building-your-application/routing/internationalization\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Data Fetching\",\"description\":\"Learn how to fetch, cache, revalidate, and mutate data with Next.js.\",\"path\":\"13/app/building-your-application/data-fetching\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Fetching, Caching, and Revalidating\",\"description\":\"Learn how to fetch, cache, and revalidate data in your Next.js application.\",\"path\":\"13/app/building-your-application/data-fetching/fetching-caching-and-revalidating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Data Fetching Patterns\",\"description\":\"Learn about common data fetching patterns in React and Next.js.\",\"path\":\"13/app/building-your-application/data-fetching/patterns\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Server Actions and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"13/app/building-your-application/data-fetching/server-actions-and-mutations\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Forms and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"13/app/building-your-application/data-fetching/forms-and-mutations\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Rendering\",\"description\":\"Learn the differences between Next.js rendering environments, strategies, and runtimes.\",\"path\":\"13/app/building-your-application/rendering\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Server Components\",\"description\":\"Learn how you can use React Server Components to render parts of your application on the server.\",\"path\":\"13/app/building-your-application/rendering/server-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client Components\",\"description\":\"Learn how to use Client Components to render parts of your application on the client.\",\"path\":\"13/app/building-your-application/rendering/client-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Composition Patterns\",\"description\":\"Recommended patterns for using Server and Client Components.\",\"path\":\"13/app/building-your-application/rendering/composition-patterns\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Edge and Node.js Runtimes\",\"description\":\"Learn about the switchable runtimes (Edge and Node.js) in Next.js.\",\"path\":\"13/app/building-your-application/rendering/edge-and-nodejs-runtimes\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Caching\",\"description\":\"An overview of caching mechanisms in Next.js.\",\"path\":\"13/app/building-your-application/caching\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Styling\",\"description\":\"Learn the different ways you can style your Next.js application.\",\"path\":\"13/app/building-your-application/styling\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CSS Modules\",\"description\":\"Style your Next.js Application with CSS Modules.\",\"path\":\"13/app/building-your-application/styling/css-modules\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Tailwind CSS\",\"description\":\"Style your Next.js Application using Tailwind CSS.\",\"path\":\"13/app/building-your-application/styling/tailwind-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CSS-in-JS\",\"description\":\"Use CSS-in-JS libraries with Next.js\",\"path\":\"13/app/building-your-application/styling/css-in-js\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Sass\",\"description\":\"Style your Next.js application using Sass.\",\"path\":\"13/app/building-your-application/styling/sass\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Optimizing\",\"description\":\"Optimize your Next.js application for best performance and user experience.\",\"path\":\"13/app/building-your-application/optimizing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Images\",\"description\":\"Optimize your images with the built-in `next/image` component.\",\"path\":\"13/app/building-your-application/optimizing/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fonts\",\"description\":\"Optimize your application's web fonts with the built-in `next/font` loaders.\",\"path\":\"13/app/building-your-application/optimizing/fonts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Scripts\",\"description\":\"Optimize 3rd party scripts with the built-in Script component.\",\"path\":\"13/app/building-your-application/optimizing/scripts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Metadata\",\"description\":\"Use the Metadata API to define metadata in any layout or page.\",\"path\":\"13/app/building-your-application/optimizing/metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Assets\",\"description\":\"Next.js allows you to serve static files, like images, in the public directory. You can learn how it works here.\",\"path\":\"13/app/building-your-application/optimizing/static-assets\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Lazy Loading\",\"description\":\"Lazy load imported libraries and React Components to improve your application's loading performance.\",\"path\":\"13/app/building-your-application/optimizing/lazy-loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Analytics\",\"description\":\"Measure and track page performance using Next.js Speed Insights\",\"path\":\"13/app/building-your-application/optimizing/analytics\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"OpenTelemetry\",\"description\":\"Learn how to instrument your Next.js app with OpenTelemetry.\",\"path\":\"13/app/building-your-application/optimizing/open-telemetry\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Instrumentation\",\"description\":\"Learn how to use instrumentation to run code at server startup in your Next.js app\",\"path\":\"13/app/building-your-application/optimizing/instrumentation\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuring\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"13/app/building-your-application/configuring\",\"version\":\"$undefined\",\"children\":[{\"title\":\"TypeScript\",\"description\":\"Next.js provides a TypeScript-first development experience for building your React application.\",\"path\":\"13/app/building-your-application/configuring/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ESLint\",\"description\":\"Next.js provides an integrated ESLint experience by default. These conformance rules help you use Next.js in an optimal way.\",\"path\":\"13/app/building-your-application/configuring/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Environment Variables\",\"description\":\"Learn to add and access environment variables in your Next.js application.\",\"path\":\"13/app/building-your-application/configuring/environment-variables\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Absolute Imports and Module Path Aliases\",\"description\":\"Configure module path aliases that allow you to remap certain import paths.\",\"path\":\"13/app/building-your-application/configuring/absolute-imports-and-module-aliases\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"MDX\",\"description\":\"Learn how to configure MDX to write JSX in your markdown files.\",\"path\":\"13/app/building-your-application/configuring/mdx\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"src Directory\",\"description\":\"Save pages under the `src` directory as an alternative to the root `pages` directory.\",\"path\":\"13/app/building-your-application/configuring/src-directory\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Draft Mode\",\"description\":\"Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with App Router here.\",\"path\":\"13/app/building-your-application/configuring/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Content Security Policy\",\"description\":\"Learn how to set a Content Security Policy (CSP) for your Next.js application.\",\"path\":\"13/app/building-your-application/configuring/content-security-policy\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Deploying\",\"description\":\"Learn how to deploy your Next.js app to production, either managed or self-hosted.\",\"path\":\"13/app/building-your-application/deploying\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Static Exports\",\"description\":\"Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server.\",\"path\":\"13/app/building-your-application/deploying/static-exports\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Upgrading\",\"description\":\"Learn how to upgrade to the latest versions of Next.js.\",\"path\":\"13/app/building-your-application/upgrading\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Codemods\",\"description\":\"Use codemods to upgrade your Next.js codebase when new features are released.\",\"path\":\"13/app/building-your-application/upgrading/codemods\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"App Router Migration\",\"description\":\"Learn how to upgrade your existing Next.js application from the Pages Router to the App Router.\",\"path\":\"13/app/building-your-application/upgrading/app-router-migration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Vite\",\"description\":\"Learn how to migrate your existing React application from Vite to Next.js.\",\"path\":\"13/app/building-your-application/upgrading/from-vite\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"API Reference\",\"description\":\"Next.js API Reference for the App Router.\",\"path\":\"13/app/api-reference\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Components\",\"description\":\"API Reference for Next.js built-in components.\",\"path\":\"13/app/api-reference/components\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Font\",\"description\":\"Optimizing loading web fonts with the built-in `next/font` loaders.\",\"path\":\"13/app/api-reference/components/font\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e\",\"description\":\"Optimize Images in your Next.js Application using the built-in `next/image` Component.\",\"path\":\"13/app/api-reference/components/image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cLink\u003e\",\"description\":\"Enable fast client-side navigation with the built-in `next/link` component.\",\"path\":\"13/app/api-reference/components/link\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cScript\u003e\",\"description\":\"Optimize third-party scripts in your Next.js application using the built-in `next/script` Component.\",\"path\":\"13/app/api-reference/components/script\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"File Conventions\",\"description\":\"API Reference for Next.js Special Files.\",\"path\":\"13/app/api-reference/file-conventions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"default.js\",\"description\":\"API Reference for the default.js file.\",\"path\":\"13/app/api-reference/file-conventions/default\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"error.js\",\"description\":\"API reference for the error.js special file.\",\"path\":\"13/app/api-reference/file-conventions/error\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"layout.js\",\"description\":\"API reference for the layout.js file.\",\"path\":\"13/app/api-reference/file-conventions/layout\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"loading.js\",\"description\":\"API reference for the loading.js file.\",\"path\":\"13/app/api-reference/file-conventions/loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"not-found.js\",\"description\":\"API reference for the not-found.js file.\",\"path\":\"13/app/api-reference/file-conventions/not-found\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"page.js\",\"description\":\"API reference for the page.js file.\",\"path\":\"13/app/api-reference/file-conventions/page\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"route.js\",\"description\":\"API reference for the route.js special file.\",\"path\":\"13/app/api-reference/file-conventions/route\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Segment Config\",\"description\":\"Learn about how to configure options for Next.js route segments.\",\"path\":\"13/app/api-reference/file-conventions/route-segment-config\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"template.js\",\"description\":\"API Reference for the template.js file.\",\"path\":\"13/app/api-reference/file-conventions/template\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Metadata Files\",\"description\":\"API documentation for the metadata file conventions.\",\"path\":\"13/app/api-reference/file-conventions/metadata\",\"version\":\"$undefined\",\"children\":[{\"title\":\"favicon, icon, and apple-icon\",\"description\":\"API Reference for the Favicon, Icon and Apple Icon file conventions.\",\"path\":\"13/app/api-reference/file-conventions/metadata/app-icons\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"manifest.json\",\"description\":\"API Reference for manifest.json file.\",\"path\":\"13/app/api-reference/file-conventions/metadata/manifest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"opengraph-image and twitter-image\",\"description\":\"API Reference for the Open Graph Image and Twitter Image file conventions.\",\"path\":\"13/app/api-reference/file-conventions/metadata/opengraph-image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"robots.txt\",\"description\":\"API Reference for robots.txt file.\",\"path\":\"13/app/api-reference/file-conventions/metadata/robots\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"sitemap.xml\",\"description\":\"API Reference for the sitemap.xml file.\",\"path\":\"13/app/api-reference/file-conventions/metadata/sitemap\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"Functions\",\"description\":\"API Reference for Next.js Functions and Hooks.\",\"path\":\"13/app/api-reference/functions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"cookies\",\"description\":\"API Reference for the cookies function.\",\"path\":\"13/app/api-reference/functions/cookies\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"draftMode\",\"description\":\"API Reference for the draftMode function.\",\"path\":\"13/app/api-reference/functions/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"fetch\",\"description\":\"API reference for the extended fetch function.\",\"path\":\"13/app/api-reference/functions/fetch\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateImageMetadata\",\"description\":\"Learn how to generate multiple images in a single Metadata API special file.\",\"path\":\"13/app/api-reference/functions/generate-image-metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateMetadata\",\"description\":\"Learn how to add Metadata to your Next.js application for improved search engine optimization (SEO) and web shareability.\",\"path\":\"13/app/api-reference/functions/generate-metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateStaticParams\",\"description\":\"API reference for the generateStaticParams function.\",\"path\":\"13/app/api-reference/functions/generate-static-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"API reference for the headers function.\",\"path\":\"13/app/api-reference/functions/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ImageResponse\",\"description\":\"API Reference for the ImageResponse constructor.\",\"path\":\"13/app/api-reference/functions/image-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextRequest\",\"description\":\"API Reference for NextRequest.\",\"path\":\"13/app/api-reference/functions/next-request\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextResponse\",\"description\":\"API Reference for NextResponse.\",\"path\":\"13/app/api-reference/functions/next-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"notFound\",\"description\":\"API Reference for the notFound function.\",\"path\":\"13/app/api-reference/functions/not-found\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"permanentRedirect\",\"description\":\"API Reference for the permanentRedirect function.\",\"path\":\"13/app/api-reference/functions/permanentRedirect\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirect\",\"description\":\"API Reference for the redirect function.\",\"path\":\"13/app/api-reference/functions/redirect\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"revalidatePath\",\"description\":\"API Reference for the revalidatePath function.\",\"path\":\"13/app/api-reference/functions/revalidatePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"revalidateTag\",\"description\":\"API Reference for the revalidateTag function.\",\"path\":\"13/app/api-reference/functions/revalidateTag\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Server Actions\",\"description\":\"API Reference for Next.js Server Actions.\",\"path\":\"13/app/api-reference/functions/server-actions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useParams\",\"description\":\"API Reference for the useParams hook.\",\"path\":\"13/app/api-reference/functions/use-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"usePathname\",\"description\":\"API Reference for the usePathname hook.\",\"path\":\"13/app/api-reference/functions/use-pathname\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useReportWebVitals\",\"description\":\"API Reference for the useReportWebVitals function.\",\"path\":\"13/app/api-reference/functions/use-report-web-vitals\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useRouter\",\"description\":\"API reference for the useRouter hook.\",\"path\":\"13/app/api-reference/functions/use-router\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSearchParams\",\"description\":\"API Reference for the useSearchParams hook.\",\"path\":\"13/app/api-reference/functions/use-search-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSelectedLayoutSegment\",\"description\":\"API Reference for the useSelectedLayoutSegment hook.\",\"path\":\"13/app/api-reference/functions/use-selected-layout-segment\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSelectedLayoutSegments\",\"description\":\"API Reference for the useSelectedLayoutSegments hook.\",\"path\":\"13/app/api-reference/functions/use-selected-layout-segments\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"next.config.js Options\",\"description\":\"Learn how to configure your application with next.config.js.\",\"path\":\"13/app/api-reference/next-config-js\",\"version\":\"$undefined\",\"children\":[{\"title\":\"appDir\",\"description\":\"Enable the App Router to use layouts, streaming, and more.\",\"path\":\"13/app/api-reference/next-config-js/appDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"assetPrefix\",\"description\":\"Learn how to use the assetPrefix config option to configure your CDN.\",\"path\":\"13/app/api-reference/next-config-js/assetPrefix\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"basePath\",\"description\":\"Use `basePath` to deploy a Next.js application under a sub-path of a domain.\",\"path\":\"13/app/api-reference/next-config-js/basePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"compress\",\"description\":\"Next.js provides gzip compression to compress rendered content and static files, it only works with the server target. Learn more about it here.\",\"path\":\"13/app/api-reference/next-config-js/compress\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"devIndicators\",\"description\":\"Optimized pages include an indicator to let you know if it's being statically optimized. You can opt-out of it here.\",\"path\":\"13/app/api-reference/next-config-js/devIndicators\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"distDir\",\"description\":\"Set a custom build directory to use instead of the default .next directory.\",\"path\":\"13/app/api-reference/next-config-js/distDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"env\",\"description\":\"Learn to add and access environment variables in your Next.js application at build time.\",\"path\":\"13/app/api-reference/next-config-js/env\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"eslint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"13/app/api-reference/next-config-js/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"exportPathMap\",\"description\":\"Customize the pages that will be exported as HTML files when using `next export`.\",\"path\":\"13/app/api-reference/next-config-js/exportPathMap\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateBuildId\",\"description\":\"Configure the build id, which is used to identify the current build in which your application is being served.\",\"path\":\"13/app/api-reference/next-config-js/generateBuildId\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateEtags\",\"description\":\"Next.js will generate etags for every page by default. Learn more about how to disable etag generation here.\",\"path\":\"13/app/api-reference/next-config-js/generateEtags\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"Add custom HTTP headers to your Next.js app.\",\"path\":\"13/app/api-reference/next-config-js/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"httpAgentOptions\",\"description\":\"Next.js will automatically use HTTP Keep-Alive by default. Learn more about how to disable HTTP Keep-Alive here.\",\"path\":\"13/app/api-reference/next-config-js/httpAgentOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"images\",\"description\":\"Custom configuration for the next/image loader\",\"path\":\"13/app/api-reference/next-config-js/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"incrementalCacheHandlerPath\",\"description\":\"Configure the Next.js cache used for storing and revalidating data.\",\"path\":\"13/app/api-reference/next-config-js/incrementalCacheHandlerPath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"mdxRs\",\"description\":\"Use the new Rust compiler to compile MDX files in the App Router.\",\"path\":\"13/app/api-reference/next-config-js/mdxRs\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"onDemandEntries\",\"description\":\"Configure how Next.js will dispose and keep in memory pages created in development.\",\"path\":\"13/app/api-reference/next-config-js/onDemandEntries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"optimizePackageImports\",\"description\":\"API Reference for optmizedPackageImports Next.js Config Option\",\"path\":\"13/app/api-reference/next-config-js/optimizePackageImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"output\",\"description\":\"Next.js automatically traces which files are needed by each page to allow for easy deployment of your application. Learn how it works here.\",\"path\":\"13/app/api-reference/next-config-js/output\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"pageExtensions\",\"description\":\"Extend the default page extensions used by Next.js when resolving pages in the Pages Router.\",\"path\":\"13/app/api-reference/next-config-js/pageExtensions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"poweredByHeader\",\"description\":\"Next.js will add the `x-powered-by` header by default. Learn to opt-out of it here.\",\"path\":\"13/app/api-reference/next-config-js/poweredByHeader\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"productionBrowserSourceMaps\",\"description\":\"Enables browser source map generation during the production build.\",\"path\":\"13/app/api-reference/next-config-js/productionBrowserSourceMaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactStrictMode\",\"description\":\"The complete Next.js runtime is now Strict Mode-compliant, learn how to opt-in\",\"path\":\"13/app/api-reference/next-config-js/reactStrictMode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirects\",\"description\":\"Add redirects to your Next.js app.\",\"path\":\"13/app/api-reference/next-config-js/redirects\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"rewrites\",\"description\":\"Add rewrites to your Next.js app.\",\"path\":\"13/app/api-reference/next-config-js/rewrites\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverComponentsExternalPackages\",\"description\":\"Opt-out specific dependencies from the Server Components bundling and use native Node.js `require`.\",\"path\":\"13/app/api-reference/next-config-js/serverComponentsExternalPackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"trailingSlash\",\"description\":\"Configure Next.js pages to resolve with or without a trailing slash.\",\"path\":\"13/app/api-reference/next-config-js/trailingSlash\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"transpilePackages\",\"description\":\"Automatically transpile and bundle dependencies from local packages (like monorepos) or from external dependencies (`node_modules`).\",\"path\":\"13/app/api-reference/next-config-js/transpilePackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"turbo\",\"description\":\"Configure Next.js with Turbopack-specific options\",\"path\":\"13/app/api-reference/next-config-js/turbo\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"typedRoutes\",\"description\":\"Enable experimental support for statically typed links.\",\"path\":\"13/app/api-reference/next-config-js/typedRoutes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"typescript\",\"description\":\"Next.js reports TypeScript errors by default. Learn to opt-out of this behavior here.\",\"path\":\"13/app/api-reference/next-config-js/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"urlImports\",\"description\":\"Configure Next.js to allow importing modules from external URLs (experimental).\",\"path\":\"13/app/api-reference/next-config-js/urlImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webpack\",\"description\":\"Learn how to customize the webpack config used by Next.js\",\"path\":\"13/app/api-reference/next-config-js/webpack\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webVitalsAttribution\",\"description\":\"Learn how to use the webVitalsAttribution option to pinpoint the source of Web Vitals issues.\",\"path\":\"13/app/api-reference/next-config-js/webVitalsAttribution\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"create-next-app\",\"description\":\"Create Next.js apps in one command with create-next-app.\",\"path\":\"13/app/api-reference/create-next-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Edge Runtime\",\"description\":\"API Reference for the Edge Runtime.\",\"path\":\"13/app/api-reference/edge\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Next.js CLI\",\"description\":\"The Next.js CLI allows you to start, build, and export your application. Learn more about it here.\",\"path\":\"13/app/api-reference/next-cli\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Building Your Application\",\"description\":\"Learn how to use Next.js features to build your application.\",\"path\":\"13/pages/building-your-application\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Routing\",\"description\":\"Learn the fundamentals of routing for front-end applications with the Pages Router.\",\"path\":\"13/pages/building-your-application/routing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Pages and Layouts\",\"description\":\"Create your first page and shared layout with the Pages Router.\",\"path\":\"13/pages/building-your-application/routing/pages-and-layouts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Dynamic Routes\",\"description\":\"Dynamic Routes are pages that allow you to add custom params to your URLs. Start creating Dynamic Routes and learn more here.\",\"path\":\"13/pages/building-your-application/routing/dynamic-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Linking and Navigating\",\"description\":\"Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook.\",\"path\":\"13/pages/building-your-application/routing/linking-and-navigating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom App\",\"description\":\"Control page initialization and add a layout that persists for all pages by overriding the default App component used by Next.js.\",\"path\":\"13/pages/building-your-application/routing/custom-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Document\",\"description\":\"Extend the default document markup added by Next.js.\",\"path\":\"13/pages/building-your-application/routing/custom-document\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Errors\",\"description\":\"Override and extend the built-in Error page to handle custom errors.\",\"path\":\"13/pages/building-your-application/routing/custom-error\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"API Routes\",\"description\":\"Next.js supports API Routes, which allow you to build your API without leaving your Next.js app. Learn how it works here.\",\"path\":\"13/pages/building-your-application/routing/api-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Internationalization\",\"description\":\"Next.js has built-in support for internationalized routing and language detection. Learn more here.\",\"path\":\"13/pages/building-your-application/routing/internationalization\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Authenticating\",\"description\":\"Learn about authentication patterns in Next.js apps and explore a few examples.\",\"path\":\"13/pages/building-your-application/routing/authenticating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Middleware\",\"description\":\"Learn how to use Middleware to run code before a request is completed.\",\"path\":\"13/pages/building-your-application/routing/middleware\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Rendering\",\"description\":\"Learn the fundamentals of rendering in React and Next.js.\",\"path\":\"13/pages/building-your-application/rendering\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Server-side Rendering (SSR)\",\"description\":\"Use Server-side Rendering to render pages on each request.\",\"path\":\"13/pages/building-your-application/rendering/server-side-rendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Site Generation (SSG)\",\"description\":\"Use Static Site Generation (SSG) to pre-render pages at build time.\",\"path\":\"13/pages/building-your-application/rendering/static-site-generation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Incremental Static Regeneration (ISR)\",\"description\":\"Learn how to create or update static pages at runtime with Incremental Static Regeneration.\",\"path\":\"13/pages/building-your-application/rendering/incremental-static-regeneration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Automatic Static Optimization\",\"description\":\"Next.js automatically optimizes your app to be static HTML whenever possible. Learn how it works here.\",\"path\":\"13/pages/building-your-application/rendering/automatic-static-optimization\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client-side Rendering (CSR)\",\"description\":\"Learn how to implement client-side rendering in the Pages Router.\",\"path\":\"13/pages/building-your-application/rendering/client-side-rendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Edge and Node.js Runtimes\",\"description\":\"Learn more about the switchable runtimes (Edge and Node.js) in Next.js.\",\"path\":\"13/pages/building-your-application/rendering/edge-and-nodejs-runtimes\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Data Fetching\",\"description\":\"Next.js allows you to fetch data in multiple ways, with pre-rendering, server-side rendering or static-site generation, and incremental static regeneration. Learn how to manage your application data in Next.js.\",\"path\":\"13/pages/building-your-application/data-fetching\",\"version\":\"$undefined\",\"children\":[{\"title\":\"getStaticProps\",\"description\":\"Fetch data and generate static pages with `getStaticProps`. Learn more about this API for data fetching in Next.js.\",\"path\":\"13/pages/building-your-application/data-fetching/get-static-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticPaths\",\"description\":\"Fetch data and generate static pages with `getStaticPaths`. Learn more about this API for data fetching in Next.js.\",\"path\":\"13/pages/building-your-application/data-fetching/get-static-paths\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Forms and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"13/pages/building-your-application/data-fetching/forms-and-mutations\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getServerSideProps\",\"description\":\"Fetch data on each request with `getServerSideProps`.\",\"path\":\"13/pages/building-your-application/data-fetching/get-server-side-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Incremental Static Regeneration\",\"description\":\"Learn how to create or update static pages at runtime with Incremental Static Regeneration.\",\"path\":\"13/pages/building-your-application/data-fetching/incremental-static-regeneration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client-side Fetching\",\"description\":\"Learn about client-side data fetching, and how to use SWR, a data fetching React hook library that handles caching, revalidation, focus tracking, refetching on interval and more.\",\"path\":\"13/pages/building-your-application/data-fetching/client-side\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Styling\",\"description\":\"Learn the different ways you can style your Next.js application.\",\"path\":\"13/pages/building-your-application/styling\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CSS Modules\",\"description\":\"Style your Next.js Application using CSS Modules.\",\"path\":\"13/pages/building-your-application/styling/css-modules\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Tailwind CSS\",\"description\":\"Style your Next.js Application using Tailwind CSS.\",\"path\":\"13/pages/building-your-application/styling/tailwind-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CSS-in-JS\",\"description\":\"Use CSS-in-JS libraries with Next.js\",\"path\":\"13/pages/building-your-application/styling/css-in-js\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Sass\",\"description\":\"Learn how to use Sass in your Next.js application.\",\"path\":\"13/pages/building-your-application/styling/sass\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Optimizing\",\"description\":\"Optimize your Next.js application for best performance and user experience.\",\"path\":\"13/pages/building-your-application/optimizing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Images\",\"description\":\"Optimize your images with the built-in `next/image` component.\",\"path\":\"13/pages/building-your-application/optimizing/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fonts\",\"description\":\"Optimize your application's web fonts with the built-in `next/font` loaders.\",\"path\":\"13/pages/building-your-application/optimizing/fonts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Scripts\",\"description\":\"Optimize 3rd party scripts with the built-in Script component.\",\"path\":\"13/pages/building-your-application/optimizing/scripts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Assets\",\"description\":\"Next.js allows you to serve static files, like images, in the public directory. You can learn how it works here.\",\"path\":\"13/pages/building-your-application/optimizing/static-assets\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Lazy Loading\",\"description\":\"Lazy load imported libraries and React Components to improve your application's loading performance.\",\"path\":\"13/pages/building-your-application/optimizing/lazy-loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Analytics\",\"description\":\"Measure and track page performance using Next.js Speed Insights\",\"path\":\"13/pages/building-your-application/optimizing/analytics\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"OpenTelemetry\",\"description\":\"Learn how to instrument your Next.js app with OpenTelemetry.\",\"path\":\"13/pages/building-your-application/optimizing/open-telemetry\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Instrumentation\",\"description\":\"Learn how to use instrumentation to run code at server startup in your Next.js app\",\"path\":\"13/pages/building-your-application/optimizing/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Testing\",\"description\":\"Learn how to set up Next.js with three commonly used testing tools — Cypress, Playwright, Jest, and React Testing Library.\",\"path\":\"13/pages/building-your-application/optimizing/testing\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuring\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"13/pages/building-your-application/configuring\",\"version\":\"$undefined\",\"children\":[{\"title\":\"TypeScript\",\"description\":\"Next.js provides a TypeScript-first development experience for building your React application.\",\"path\":\"13/pages/building-your-application/configuring/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ESLint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"13/pages/building-your-application/configuring/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Environment Variables\",\"description\":\"Learn to add and access environment variables in your Next.js application.\",\"path\":\"13/pages/building-your-application/configuring/environment-variables\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Absolute Imports and Module Path Aliases\",\"description\":\"Configure module path aliases that allow you to remap certain import paths.\",\"path\":\"13/pages/building-your-application/configuring/absolute-imports-and-module-aliases\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"src Directory\",\"description\":\"Save pages under the `src` directory as an alternative to the root `pages` directory.\",\"path\":\"13/pages/building-your-application/configuring/src-directory\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"MDX\",\"description\":\"Learn how to configure MDX to write JSX in your markdown files.\",\"path\":\"13/pages/building-your-application/configuring/mdx\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"AMP\",\"description\":\"With minimal config, and without leaving React, you can start adding AMP and improve the performance and speed of your pages.\",\"path\":\"13/pages/building-your-application/configuring/amp\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Babel\",\"description\":\"Extend the babel preset added by Next.js with your own configs.\",\"path\":\"13/pages/building-your-application/configuring/babel\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"PostCSS\",\"description\":\"Extend the PostCSS config and plugins added by Next.js with your own.\",\"path\":\"13/pages/building-your-application/configuring/post-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Server\",\"description\":\"Start a Next.js app programmatically using a custom server.\",\"path\":\"13/pages/building-your-application/configuring/custom-server\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Draft Mode\",\"description\":\"Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with Pages Router.\",\"path\":\"13/pages/building-your-application/configuring/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Error Handling\",\"description\":\"Handle errors in your Next.js app.\",\"path\":\"13/pages/building-your-application/configuring/error-handling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Debugging\",\"description\":\"Learn how to debug your Next.js application with VS Code or Chrome DevTools.\",\"path\":\"13/pages/building-your-application/configuring/debugging\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Preview Mode\",\"description\":\"Next.js has the preview mode for statically generated pages. You can learn how it works here.\",\"path\":\"13/pages/building-your-application/configuring/preview-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Content Security Policy\",\"description\":\"Learn how to set a Content Security Policy (CSP) for your Next.js application.\",\"path\":\"13/pages/building-your-application/configuring/content-security-policy\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Deploying\",\"description\":\"Learn how to deploy your Next.js app to production, either managed or self-hosted.\",\"path\":\"13/pages/building-your-application/deploying\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Going to Production\",\"description\":\"Before taking your Next.js application to production, here are some recommendations to ensure the best user experience.\",\"path\":\"13/pages/building-your-application/deploying/production-checklist\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Exports\",\"description\":\"Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server.\",\"path\":\"13/pages/building-your-application/deploying/static-exports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Multi Zones\",\"description\":\"Learn how to use multi zones to deploy multiple Next.js apps as a single app.\",\"path\":\"13/pages/building-your-application/deploying/multi-zones\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Continuous Integration (CI) Build Caching\",\"description\":\"Learn how to configure CI to cache Next.js builds\",\"path\":\"13/pages/building-your-application/deploying/ci-build-caching\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Upgrading\",\"description\":\"Learn how to upgrade to the latest versions of Next.js.\",\"path\":\"13/pages/building-your-application/upgrading\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Codemods\",\"description\":\"Use codemods to upgrade your Next.js codebase when new features are released.\",\"path\":\"13/pages/building-your-application/upgrading/codemods\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"From Pages to App\",\"description\":\"Learn how to upgrade your existing Next.js application from the Pages Router to the App Router.\",\"path\":\"13/pages/building-your-application/upgrading/app-router-migration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 13\",\"description\":\"Upgrade your Next.js Application from Version 12 to 13.\",\"path\":\"13/pages/building-your-application/upgrading/version-13\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 12\",\"description\":\"Upgrade your Next.js Application from Version 11 to Version 12.\",\"path\":\"13/pages/building-your-application/upgrading/version-12\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 11\",\"description\":\"Upgrade your Next.js Application from Version 10 to Version 11.\",\"path\":\"13/pages/building-your-application/upgrading/version-11\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 10\",\"description\":\"Upgrade your Next.js Application from Version 9 to Version 10.\",\"path\":\"13/pages/building-your-application/upgrading/version-10\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 9\",\"description\":\"Upgrade your Next.js Application from Version 8 to Version 9.\",\"path\":\"13/pages/building-your-application/upgrading/version-9\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"API Reference\",\"description\":\"Next.js API Reference for the Pages Router.\",\"path\":\"13/pages/api-reference\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Components\",\"description\":\"API Reference for Next.js built-in components in the Pages Router.\",\"path\":\"13/pages/api-reference/components\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Font\",\"description\":\"API Reference for the Font Module\",\"path\":\"13/pages/api-reference/components/font\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cHead\u003e\",\"description\":\"Add custom elements to the `head` of your page with the built-in Head component.\",\"path\":\"13/pages/api-reference/components/head\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e\",\"description\":\"Optimize Images in your Next.js Application using the built-in `next/image` Component.\",\"path\":\"13/pages/api-reference/components/image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e (Legacy)\",\"description\":\"Backwards compatible Image Optimization with the Legacy Image component.\",\"path\":\"13/pages/api-reference/components/image-legacy\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cLink\u003e\",\"description\":\"API reference for the \u003cLink\u003e component.\",\"path\":\"13/pages/api-reference/components/link\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cScript\u003e\",\"description\":\"Optimize third-party scripts in your Next.js application using the built-in `next/script` Component.\",\"path\":\"13/pages/api-reference/components/script\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Functions\",\"description\":\"API Reference for Functions and Hooks in Pages Router.\",\"path\":\"13/pages/api-reference/functions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"getInitialProps\",\"description\":\"Fetch dynamic data on the server for your React component with getInitialProps.\",\"path\":\"13/pages/api-reference/functions/get-initial-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getServerSideProps\",\"description\":\"API reference for `getServerSideProps`. Learn how to fetch data on each request with Next.js.\",\"path\":\"13/pages/api-reference/functions/get-server-side-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticPaths\",\"description\":\"API reference for `getStaticPaths`. Learn how to fetch data and generate static pages with `getStaticPaths`.\",\"path\":\"13/pages/api-reference/functions/get-static-paths\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticProps\",\"description\":\"API reference for `getStaticProps`. Learn how to use `getStaticProps` to generate static pages with Next.js.\",\"path\":\"13/pages/api-reference/functions/get-static-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextRequest and NextResponse\",\"description\":\"Learn about the server-only helpers for Middleware and Edge API Routes.\",\"path\":\"13/pages/api-reference/functions/next-server\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useAmp\",\"description\":\"Enable AMP in a page, and control the way Next.js adds AMP to the page with the AMP config.\",\"path\":\"13/pages/api-reference/functions/use-amp\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useReportWebVitals\",\"description\":\"useReportWebVitals\",\"path\":\"13/pages/api-reference/functions/use-report-web-vitals\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useRouter\",\"description\":\"Learn more about the API of the Next.js Router, and access the router instance in your page with the useRouter hook.\",\"path\":\"13/pages/api-reference/functions/use-router\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"next.config.js Options\",\"description\":\"Learn about the options available in next.config.js for the Pages Router.\",\"path\":\"13/pages/api-reference/next-config-js\",\"version\":\"$undefined\",\"children\":[{\"title\":\"assetPrefix\",\"description\":\"Learn how to use the assetPrefix config option to configure your CDN.\",\"path\":\"13/pages/api-reference/next-config-js/assetPrefix\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"basePath\",\"description\":\"Use `basePath` to deploy a Next.js application under a sub-path of a domain.\",\"path\":\"13/pages/api-reference/next-config-js/basePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"compress\",\"description\":\"Next.js provides gzip compression to compress rendered content and static files, it only works with the server target. Learn more about it here.\",\"path\":\"13/pages/api-reference/next-config-js/compress\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"devIndicators\",\"description\":\"Optimized pages include an indicator to let you know if it's being statically optimized. You can opt-out of it here.\",\"path\":\"13/pages/api-reference/next-config-js/devIndicators\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"distDir\",\"description\":\"Set a custom build directory to use instead of the default .next directory.\",\"path\":\"13/pages/api-reference/next-config-js/distDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"env\",\"description\":\"Learn to add and access environment variables in your Next.js application at build time.\",\"path\":\"13/pages/api-reference/next-config-js/env\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"eslint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"13/pages/api-reference/next-config-js/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"exportPathMap\",\"description\":\"Customize the pages that will be exported as HTML files when using `next export`.\",\"path\":\"13/pages/api-reference/next-config-js/exportPathMap\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateBuildId\",\"description\":\"Configure the build id, which is used to identify the current build in which your application is being served.\",\"path\":\"13/pages/api-reference/next-config-js/generateBuildId\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateEtags\",\"description\":\"Next.js will generate etags for every page by default. Learn more about how to disable etag generation here.\",\"path\":\"13/pages/api-reference/next-config-js/generateEtags\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"Add custom HTTP headers to your Next.js app.\",\"path\":\"13/pages/api-reference/next-config-js/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"httpAgentOptions\",\"description\":\"Next.js will automatically use HTTP Keep-Alive by default. Learn more about how to disable HTTP Keep-Alive here.\",\"path\":\"13/pages/api-reference/next-config-js/httpAgentOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"images\",\"description\":\"Custom configuration for the next/image loader\",\"path\":\"13/pages/api-reference/next-config-js/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"onDemandEntries\",\"description\":\"Configure how Next.js will dispose and keep in memory pages created in development.\",\"path\":\"13/pages/api-reference/next-config-js/onDemandEntries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"output\",\"description\":\"Next.js automatically traces which files are needed by each page to allow for easy deployment of your application. Learn how it works here.\",\"path\":\"13/pages/api-reference/next-config-js/output\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"pageExtensions\",\"description\":\"Extend the default page extensions used by Next.js when resolving pages in the Pages Router.\",\"path\":\"13/pages/api-reference/next-config-js/pageExtensions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"poweredByHeader\",\"description\":\"Next.js will add the `x-powered-by` header by default. Learn to opt-out of it here.\",\"path\":\"13/pages/api-reference/next-config-js/poweredByHeader\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"productionBrowserSourceMaps\",\"description\":\"Enables browser source map generation during the production build.\",\"path\":\"13/pages/api-reference/next-config-js/productionBrowserSourceMaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactStrictMode\",\"description\":\"The complete Next.js runtime is now Strict Mode-compliant, learn how to opt-in\",\"path\":\"13/pages/api-reference/next-config-js/reactStrictMode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirects\",\"description\":\"Add redirects to your Next.js app.\",\"path\":\"13/pages/api-reference/next-config-js/redirects\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"rewrites\",\"description\":\"Add rewrites to your Next.js app.\",\"path\":\"13/pages/api-reference/next-config-js/rewrites\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Runtime Config\",\"description\":\"Add client and server runtime configuration to your Next.js app.\",\"path\":\"13/pages/api-reference/next-config-js/runtime-configuration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"trailingSlash\",\"description\":\"Configure Next.js pages to resolve with or without a trailing slash.\",\"path\":\"13/pages/api-reference/next-config-js/trailingSlash\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"transpilePackages\",\"description\":\"Automatically transpile and bundle dependencies from local packages (like monorepos) or from external dependencies (`node_modules`).\",\"path\":\"13/pages/api-reference/next-config-js/transpilePackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"turbo\",\"description\":\"Configure Next.js with Turbopack-specific options\",\"path\":\"13/pages/api-reference/next-config-js/turbo\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"typescript\",\"description\":\"Next.js reports TypeScript errors by default. Learn to opt-out of this behavior here.\",\"path\":\"13/pages/api-reference/next-config-js/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"urlImports\",\"description\":\"Configure Next.js to allow importing modules from external URLs (experimental).\",\"path\":\"13/pages/api-reference/next-config-js/urlImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webpack\",\"description\":\"Learn how to customize the webpack config used by Next.js\",\"path\":\"13/pages/api-reference/next-config-js/webpack\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webVitalsAttribution\",\"description\":\"Learn how to use the webVitalsAttribution option to pinpoint the source of Web Vitals issues.\",\"path\":\"13/pages/api-reference/next-config-js/webVitalsAttribution\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"create-next-app\",\"description\":\"create-next-app\",\"path\":\"13/pages/api-reference/create-next-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Next.js CLI\",\"description\":\"Next.js CLI\",\"path\":\"13/pages/api-reference/next-cli\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Edge Runtime\",\"description\":\"API Reference for the Edge Runtime.\",\"path\":\"13/pages/api-reference/edge\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Architecture\",\"description\":\"How Next.js Works\",\"path\":\"13/architecture\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Accessibility\",\"description\":\"The built-in accessibility features of Next.js.\",\"path\":\"13/architecture/accessibility\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fast Refresh\",\"description\":\"Fast Refresh is a hot module reloading experience that gives you instantaneous feedback on edits made to your React components.\",\"path\":\"13/architecture/fast-refresh\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Next.js Compiler\",\"description\":\"Next.js Compiler, written in Rust, which transforms and minifies your Next.js application.\",\"path\":\"13/architecture/nextjs-compiler\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Supported Browsers\",\"description\":\"Browser support and which JavaScript features are supported by Next.js.\",\"path\":\"13/architecture/supported-browsers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Turbopack\",\"description\":\"Turbopack is an incremental bundler optimized for JavaScript and TypeScript, written in Rust, and built into Next.js.\",\"path\":\"13/architecture/turbopack\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Community\",\"description\":\"Get involved in the Next.js community.\",\"path\":\"13/community\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Contribution Guide\",\"description\":\"Learn how to contribute to Next.js Documentation\",\"path\":\"13/community/contribution-guide\",\"version\":\"$undefined\",\"children\":[]}]}],\"14\":[{\"title\":\"Getting Started\",\"description\":\"Learn how to create full-stack web applications with Next.js.\",\"path\":\"14/getting-started\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Installation\",\"description\":\"Create a new Next.js application with `create-next-app`. Set up TypeScript, styles, and configure your `next.config.js` file.\",\"path\":\"14/getting-started/installation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Project Structure\",\"description\":\"A list of folders and files conventions in a Next.js project\",\"path\":\"14/getting-started/project-structure\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Building Your Application\",\"description\":\"Learn how to use Next.js features to build your application.\",\"path\":\"14/app/building-your-application\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Routing\",\"description\":\"Learn the fundamentals of routing for front-end applications.\",\"path\":\"14/app/building-your-application/routing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Defining Routes\",\"description\":\"Learn how to create your first route in Next.js.\",\"path\":\"14/app/building-your-application/routing/defining-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Pages and Layouts\",\"description\":\"Create your first page and shared layout with the App Router.\",\"path\":\"14/app/building-your-application/routing/pages-and-layouts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Linking and Navigating\",\"description\":\"Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook.\",\"path\":\"14/app/building-your-application/routing/linking-and-navigating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Loading UI and Streaming\",\"description\":\"Built on top of Suspense, Loading UI allows you to create a fallback for specific route segments, and automatically stream content as it becomes ready.\",\"path\":\"14/app/building-your-application/routing/loading-ui-and-streaming\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Error Handling\",\"description\":\"Handle runtime errors by automatically wrapping route segments and their nested children in a React Error Boundary.\",\"path\":\"14/app/building-your-application/routing/error-handling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Redirecting\",\"description\":\"Learn the different ways to handle redirects in Next.js.\",\"path\":\"14/app/building-your-application/routing/redirecting\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Groups\",\"description\":\"Route Groups can be used to partition your Next.js application into different sections.\",\"path\":\"14/app/building-your-application/routing/route-groups\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Project Organization\",\"description\":\"Learn how to organize your Next.js project and colocate files.\",\"path\":\"14/app/building-your-application/routing/colocation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Dynamic Routes\",\"description\":\"Dynamic Routes can be used to programmatically generate route segments from dynamic data.\",\"path\":\"14/app/building-your-application/routing/dynamic-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Parallel Routes\",\"description\":\"Simultaneously render one or more pages in the same view that can be navigated independently. A pattern for highly dynamic applications.\",\"path\":\"14/app/building-your-application/routing/parallel-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Intercepting Routes\",\"description\":\"Use intercepting routes to load a new route within the current layout while masking the browser URL, useful for advanced routing patterns such as modals.\",\"path\":\"14/app/building-your-application/routing/intercepting-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Handlers\",\"description\":\"Create custom request handlers for a given route using the Web's Request and Response APIs.\",\"path\":\"14/app/building-your-application/routing/route-handlers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Middleware\",\"description\":\"Learn how to use Middleware to run code before a request is completed.\",\"path\":\"14/app/building-your-application/routing/middleware\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Internationalization\",\"description\":\"Add support for multiple languages with internationalized routing and localized content.\",\"path\":\"14/app/building-your-application/routing/internationalization\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Data Fetching\",\"description\":\"Learn how to fetch, cache, revalidate, and mutate data with Next.js.\",\"path\":\"14/app/building-your-application/data-fetching\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Fetching, Caching, and Revalidating\",\"description\":\"Learn how to fetch, cache, and revalidate data in your Next.js application.\",\"path\":\"14/app/building-your-application/data-fetching/fetching-caching-and-revalidating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Server Actions and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"14/app/building-your-application/data-fetching/server-actions-and-mutations\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Data Fetching Patterns and Best Practices\",\"description\":\"Learn about common data fetching patterns in React and Next.js.\",\"path\":\"14/app/building-your-application/data-fetching/patterns\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Rendering\",\"description\":\"Learn the differences between Next.js rendering environments, strategies, and runtimes.\",\"path\":\"14/app/building-your-application/rendering\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Server Components\",\"description\":\"Learn how you can use React Server Components to render parts of your application on the server.\",\"path\":\"14/app/building-your-application/rendering/server-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client Components\",\"description\":\"Learn how to use Client Components to render parts of your application on the client.\",\"path\":\"14/app/building-your-application/rendering/client-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Composition Patterns\",\"description\":\"Recommended patterns for using Server and Client Components.\",\"path\":\"14/app/building-your-application/rendering/composition-patterns\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Edge and Node.js Runtimes\",\"description\":\"Learn about the switchable runtimes (Edge and Node.js) in Next.js.\",\"path\":\"14/app/building-your-application/rendering/edge-and-nodejs-runtimes\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Caching\",\"description\":\"An overview of caching mechanisms in Next.js.\",\"path\":\"14/app/building-your-application/caching\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Styling\",\"description\":\"Learn the different ways you can style your Next.js application.\",\"path\":\"14/app/building-your-application/styling\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CSS Modules\",\"description\":\"Style your Next.js Application with CSS Modules, Global Styles, and external stylesheets.\",\"path\":\"14/app/building-your-application/styling/css-modules\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Tailwind CSS\",\"description\":\"Style your Next.js Application using Tailwind CSS.\",\"path\":\"14/app/building-your-application/styling/tailwind-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CSS-in-JS\",\"description\":\"Use CSS-in-JS libraries with Next.js\",\"path\":\"14/app/building-your-application/styling/css-in-js\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Sass\",\"description\":\"Style your Next.js application using Sass.\",\"path\":\"14/app/building-your-application/styling/sass\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Optimizing\",\"description\":\"Optimize your Next.js application for best performance and user experience.\",\"path\":\"14/app/building-your-application/optimizing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Images\",\"description\":\"Optimize your images with the built-in `next/image` component.\",\"path\":\"14/app/building-your-application/optimizing/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Videos\",\"description\":\"Recommendations and best practices for optimizing videos in your Next.js application.\",\"path\":\"14/app/building-your-application/optimizing/videos\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fonts\",\"description\":\"Optimize your application's web fonts with the built-in `next/font` loaders.\",\"path\":\"14/app/building-your-application/optimizing/fonts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Metadata\",\"description\":\"Use the Metadata API to define metadata in any layout or page.\",\"path\":\"14/app/building-your-application/optimizing/metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Scripts\",\"description\":\"Optimize 3rd party scripts with the built-in Script component.\",\"path\":\"14/app/building-your-application/optimizing/scripts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Bundle Analyzer\",\"description\":\"Analyze the size of your JavaScript bundles using the @next/bundle-analyzer plugin.\",\"path\":\"14/app/building-your-application/optimizing/bundle-analyzer\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Lazy Loading\",\"description\":\"Lazy load imported libraries and React Components to improve your application's loading performance.\",\"path\":\"14/app/building-your-application/optimizing/lazy-loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Analytics\",\"description\":\"Measure and track page performance using Next.js Speed Insights\",\"path\":\"14/app/building-your-application/optimizing/analytics\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Instrumentation\",\"description\":\"Learn how to use instrumentation to run code at server startup in your Next.js app\",\"path\":\"14/app/building-your-application/optimizing/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"OpenTelemetry\",\"description\":\"Learn how to instrument your Next.js app with OpenTelemetry.\",\"path\":\"14/app/building-your-application/optimizing/open-telemetry\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Assets\",\"description\":\"Next.js allows you to serve static files, like images, in the public directory. You can learn how it works here.\",\"path\":\"14/app/building-your-application/optimizing/static-assets\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Third Party Libraries\",\"description\":\"Optimize the performance of third-party libraries in your application with the `@next/third-parties` package.\",\"path\":\"14/app/building-your-application/optimizing/third-party-libraries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Memory Usage\",\"description\":\"Optimize memory used by your application in development and production.\",\"path\":\"14/app/building-your-application/optimizing/memory-usage\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuring\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"14/app/building-your-application/configuring\",\"version\":\"$undefined\",\"children\":[{\"title\":\"TypeScript\",\"description\":\"Next.js provides a TypeScript-first development experience for building your React application.\",\"path\":\"14/app/building-your-application/configuring/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ESLint\",\"description\":\"Next.js provides an integrated ESLint experience by default. These conformance rules help you use Next.js in an optimal way.\",\"path\":\"14/app/building-your-application/configuring/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Environment Variables\",\"description\":\"Learn to add and access environment variables in your Next.js application.\",\"path\":\"14/app/building-your-application/configuring/environment-variables\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Absolute Imports and Module Path Aliases\",\"description\":\"Configure module path aliases that allow you to remap certain import paths.\",\"path\":\"14/app/building-your-application/configuring/absolute-imports-and-module-aliases\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"MDX\",\"description\":\"Learn how to configure MDX and use it in your Next.js apps.\",\"path\":\"14/app/building-your-application/configuring/mdx\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"src Directory\",\"description\":\"Save pages under the `src` directory as an alternative to the root `pages` directory.\",\"path\":\"14/app/building-your-application/configuring/src-directory\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Draft Mode\",\"description\":\"Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with App Router here.\",\"path\":\"14/app/building-your-application/configuring/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Content Security Policy\",\"description\":\"Learn how to set a Content Security Policy (CSP) for your Next.js application.\",\"path\":\"14/app/building-your-application/configuring/content-security-policy\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Testing\",\"description\":\"Learn how to set up Next.js with four commonly used testing tools — Cypress, Playwright, Vitest, and Jest.\",\"path\":\"14/app/building-your-application/testing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Vitest\",\"description\":\"Learn how to set up Vitest with Next.js for Unit Testing.\",\"path\":\"14/app/building-your-application/testing/vitest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Jest\",\"description\":\"Learn how to set up Jest with Next.js for Unit Testing and Snapshot Testing.\",\"path\":\"14/app/building-your-application/testing/jest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Playwright\",\"description\":\"Learn how to set up Playwright with Next.js for End-to-End (E2E) testing.\",\"path\":\"14/app/building-your-application/testing/playwright\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Cypress\",\"description\":\"Learn how to set up Cypress with Next.js for End-to-End (E2E) and Component Testing.\",\"path\":\"14/app/building-your-application/testing/cypress\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Authentication\",\"description\":\"Learn how to implement authentication in Next.js, covering best practices, securing routes, authorization techniques, and session management.\",\"path\":\"14/app/building-your-application/authentication\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Deploying\",\"description\":\"Learn how to deploy your Next.js app to production, either managed or self-hosted.\",\"path\":\"14/app/building-your-application/deploying\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Production Checklist\",\"description\":\"Recommendations to ensure the best performance and user experience before taking your Next.js application to production.\",\"path\":\"14/app/building-your-application/deploying/production-checklist\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Exports\",\"description\":\"Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server.\",\"path\":\"14/app/building-your-application/deploying/static-exports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Multi-Zones\",\"description\":\"Learn how to build micro-frontends using Next.js Multi-Zones to deploy multiple Next.js apps under a single domain.\",\"path\":\"14/app/building-your-application/deploying/multi-zones\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Upgrading\",\"description\":\"Learn how to upgrade to the latest versions of Next.js.\",\"path\":\"14/app/building-your-application/upgrading\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Codemods\",\"description\":\"Use codemods to upgrade your Next.js codebase when new features are released.\",\"path\":\"14/app/building-your-application/upgrading/codemods\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"App Router Migration\",\"description\":\"Learn how to upgrade your existing Next.js application from the Pages Router to the App Router.\",\"path\":\"14/app/building-your-application/upgrading/app-router-migration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 14\",\"description\":\"Upgrade your Next.js Application from Version 13 to 14.\",\"path\":\"14/app/building-your-application/upgrading/version-14\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Vite\",\"description\":\"Learn how to migrate your existing React application from Vite to Next.js.\",\"path\":\"14/app/building-your-application/upgrading/from-vite\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Create React App\",\"description\":\"Learn how to migrate your existing React application from Create React App to Next.js.\",\"path\":\"14/app/building-your-application/upgrading/from-create-react-app\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"API Reference\",\"description\":\"Next.js API Reference for the App Router.\",\"path\":\"14/app/api-reference\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Components\",\"description\":\"API Reference for Next.js built-in components.\",\"path\":\"14/app/api-reference/components\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Font\",\"description\":\"Optimizing loading web fonts with the built-in `next/font` loaders.\",\"path\":\"14/app/api-reference/components/font\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e\",\"description\":\"Optimize Images in your Next.js Application using the built-in `next/image` Component.\",\"path\":\"14/app/api-reference/components/image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cLink\u003e\",\"description\":\"Enable fast client-side navigation with the built-in `next/link` component.\",\"path\":\"14/app/api-reference/components/link\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cScript\u003e\",\"description\":\"Optimize third-party scripts in your Next.js application using the built-in `next/script` Component.\",\"path\":\"14/app/api-reference/components/script\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"File Conventions\",\"description\":\"API Reference for Next.js Special Files.\",\"path\":\"14/app/api-reference/file-conventions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"default.js\",\"description\":\"API Reference for the default.js file.\",\"path\":\"14/app/api-reference/file-conventions/default\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"error.js\",\"description\":\"API reference for the error.js special file.\",\"path\":\"14/app/api-reference/file-conventions/error\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"instrumentation.js\",\"description\":\"API reference for the instrumentation.js file.\",\"path\":\"14/app/api-reference/file-conventions/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"layout.js\",\"description\":\"API reference for the layout.js file.\",\"path\":\"14/app/api-reference/file-conventions/layout\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"loading.js\",\"description\":\"API reference for the loading.js file.\",\"path\":\"14/app/api-reference/file-conventions/loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"middleware.js\",\"description\":\"API reference for the middleware.js file.\",\"path\":\"14/app/api-reference/file-conventions/middleware\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"not-found.js\",\"description\":\"API reference for the not-found.js file.\",\"path\":\"14/app/api-reference/file-conventions/not-found\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"page.js\",\"description\":\"API reference for the page.js file.\",\"path\":\"14/app/api-reference/file-conventions/page\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"route.js\",\"description\":\"API reference for the route.js special file.\",\"path\":\"14/app/api-reference/file-conventions/route\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Segment Config\",\"description\":\"Learn about how to configure options for Next.js route segments.\",\"path\":\"14/app/api-reference/file-conventions/route-segment-config\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"template.js\",\"description\":\"API Reference for the template.js file.\",\"path\":\"14/app/api-reference/file-conventions/template\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Metadata Files\",\"description\":\"API documentation for the metadata file conventions.\",\"path\":\"14/app/api-reference/file-conventions/metadata\",\"version\":\"$undefined\",\"children\":[{\"title\":\"favicon, icon, and apple-icon\",\"description\":\"API Reference for the Favicon, Icon and Apple Icon file conventions.\",\"path\":\"14/app/api-reference/file-conventions/metadata/app-icons\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"manifest.json\",\"description\":\"API Reference for manifest.json file.\",\"path\":\"14/app/api-reference/file-conventions/metadata/manifest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"opengraph-image and twitter-image\",\"description\":\"API Reference for the Open Graph Image and Twitter Image file conventions.\",\"path\":\"14/app/api-reference/file-conventions/metadata/opengraph-image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"robots.txt\",\"description\":\"API Reference for robots.txt file.\",\"path\":\"14/app/api-reference/file-conventions/metadata/robots\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"sitemap.xml\",\"description\":\"API Reference for the sitemap.xml file.\",\"path\":\"14/app/api-reference/file-conventions/metadata/sitemap\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"Functions\",\"description\":\"API Reference for Next.js Functions and Hooks.\",\"path\":\"14/app/api-reference/functions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"cookies\",\"description\":\"API Reference for the cookies function.\",\"path\":\"14/app/api-reference/functions/cookies\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"draftMode\",\"description\":\"API Reference for the draftMode function.\",\"path\":\"14/app/api-reference/functions/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"fetch\",\"description\":\"API reference for the extended fetch function.\",\"path\":\"14/app/api-reference/functions/fetch\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateImageMetadata\",\"description\":\"Learn how to generate multiple images in a single Metadata API special file.\",\"path\":\"14/app/api-reference/functions/generate-image-metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateMetadata\",\"description\":\"Learn how to add Metadata to your Next.js application for improved search engine optimization (SEO) and web shareability.\",\"path\":\"14/app/api-reference/functions/generate-metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateSitemaps\",\"description\":\"Learn how to use the generateSiteMaps function to create multiple sitemaps for your application.\",\"path\":\"14/app/api-reference/functions/generate-sitemaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateStaticParams\",\"description\":\"API reference for the generateStaticParams function.\",\"path\":\"14/app/api-reference/functions/generate-static-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateViewport\",\"description\":\"API Reference for the generateViewport function.\",\"path\":\"14/app/api-reference/functions/generate-viewport\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"API reference for the headers function.\",\"path\":\"14/app/api-reference/functions/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ImageResponse\",\"description\":\"API Reference for the ImageResponse constructor.\",\"path\":\"14/app/api-reference/functions/image-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextRequest\",\"description\":\"API Reference for NextRequest.\",\"path\":\"14/app/api-reference/functions/next-request\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextResponse\",\"description\":\"API Reference for NextResponse.\",\"path\":\"14/app/api-reference/functions/next-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"notFound\",\"description\":\"API Reference for the notFound function.\",\"path\":\"14/app/api-reference/functions/not-found\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"permanentRedirect\",\"description\":\"API Reference for the permanentRedirect function.\",\"path\":\"14/app/api-reference/functions/permanentRedirect\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirect\",\"description\":\"API Reference for the redirect function.\",\"path\":\"14/app/api-reference/functions/redirect\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"revalidatePath\",\"description\":\"API Reference for the revalidatePath function.\",\"path\":\"14/app/api-reference/functions/revalidatePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"revalidateTag\",\"description\":\"API Reference for the revalidateTag function.\",\"path\":\"14/app/api-reference/functions/revalidateTag\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"unstable_cache\",\"description\":\"API Reference for the unstable_cache function.\",\"path\":\"14/app/api-reference/functions/unstable_cache\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"unstable_noStore\",\"description\":\"API Reference for the unstable_noStore function.\",\"path\":\"14/app/api-reference/functions/unstable_noStore\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useParams\",\"description\":\"API Reference for the useParams hook.\",\"path\":\"14/app/api-reference/functions/use-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"usePathname\",\"description\":\"API Reference for the usePathname hook.\",\"path\":\"14/app/api-reference/functions/use-pathname\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useReportWebVitals\",\"description\":\"API Reference for the useReportWebVitals function.\",\"path\":\"14/app/api-reference/functions/use-report-web-vitals\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useRouter\",\"description\":\"API reference for the useRouter hook.\",\"path\":\"14/app/api-reference/functions/use-router\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSearchParams\",\"description\":\"API Reference for the useSearchParams hook.\",\"path\":\"14/app/api-reference/functions/use-search-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSelectedLayoutSegment\",\"description\":\"API Reference for the useSelectedLayoutSegment hook.\",\"path\":\"14/app/api-reference/functions/use-selected-layout-segment\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSelectedLayoutSegments\",\"description\":\"API Reference for the useSelectedLayoutSegments hook.\",\"path\":\"14/app/api-reference/functions/use-selected-layout-segments\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"userAgent\",\"description\":\"The userAgent helper extends the Web Request API with additional properties and methods to interact with the user agent object from the request.\",\"path\":\"14/app/api-reference/functions/userAgent\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"next.config.js Options\",\"description\":\"Learn how to configure your application with next.config.js.\",\"path\":\"14/app/api-reference/next-config-js\",\"version\":\"$undefined\",\"children\":[{\"title\":\"appDir\",\"description\":\"Enable the App Router to use layouts, streaming, and more.\",\"path\":\"14/app/api-reference/next-config-js/appDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"assetPrefix\",\"description\":\"Learn how to use the assetPrefix config option to configure your CDN.\",\"path\":\"14/app/api-reference/next-config-js/assetPrefix\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"basePath\",\"description\":\"Use `basePath` to deploy a Next.js application under a sub-path of a domain.\",\"path\":\"14/app/api-reference/next-config-js/basePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"compress\",\"description\":\"Next.js provides gzip compression to compress rendered content and static files, it only works with the server target. Learn more about it here.\",\"path\":\"14/app/api-reference/next-config-js/compress\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"crossOrigin\",\"description\":\"Use the `crossOrigin` option to add a crossOrigin tag on the `script` tags generated by `next/script`.\",\"path\":\"14/app/api-reference/next-config-js/crossOrigin\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"devIndicators\",\"description\":\"Optimized pages include an indicator to let you know if it's being statically optimized. You can opt-out of it here.\",\"path\":\"14/app/api-reference/next-config-js/devIndicators\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"distDir\",\"description\":\"Set a custom build directory to use instead of the default .next directory.\",\"path\":\"14/app/api-reference/next-config-js/distDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"env\",\"description\":\"Learn to add and access environment variables in your Next.js application at build time.\",\"path\":\"14/app/api-reference/next-config-js/env\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"eslint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"14/app/api-reference/next-config-js/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"exportPathMap\",\"description\":\"Customize the pages that will be exported as HTML files when using `next export`.\",\"path\":\"14/app/api-reference/next-config-js/exportPathMap\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateBuildId\",\"description\":\"Configure the build id, which is used to identify the current build in which your application is being served.\",\"path\":\"14/app/api-reference/next-config-js/generateBuildId\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateEtags\",\"description\":\"Next.js will generate etags for every page by default. Learn more about how to disable etag generation here.\",\"path\":\"14/app/api-reference/next-config-js/generateEtags\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"Add custom HTTP headers to your Next.js app.\",\"path\":\"14/app/api-reference/next-config-js/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"httpAgentOptions\",\"description\":\"Next.js will automatically use HTTP Keep-Alive by default. Learn more about how to disable HTTP Keep-Alive here.\",\"path\":\"14/app/api-reference/next-config-js/httpAgentOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"images\",\"description\":\"Custom configuration for the next/image loader\",\"path\":\"14/app/api-reference/next-config-js/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"cacheHandler\",\"description\":\"Configure the Next.js cache used for storing and revalidating data to use any external service like Redis, Memcached, or others.\",\"path\":\"14/app/api-reference/next-config-js/incrementalCacheHandlerPath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"instrumentationHook\",\"description\":\"Use the instrumentationHook option to set up instrumentation in your Next.js App.\",\"path\":\"14/app/api-reference/next-config-js/instrumentationHook\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"logging\",\"description\":\"Configure how data fetches are logged to the console when running Next.js in development mode.\",\"path\":\"14/app/api-reference/next-config-js/logging\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"mdxRs\",\"description\":\"Use the new Rust compiler to compile MDX files in the App Router.\",\"path\":\"14/app/api-reference/next-config-js/mdxRs\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"onDemandEntries\",\"description\":\"Configure how Next.js will dispose and keep in memory pages created in development.\",\"path\":\"14/app/api-reference/next-config-js/onDemandEntries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"optimizePackageImports\",\"description\":\"API Reference for optmizedPackageImports Next.js Config Option\",\"path\":\"14/app/api-reference/next-config-js/optimizePackageImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"output\",\"description\":\"Next.js automatically traces which files are needed by each page to allow for easy deployment of your application. Learn how it works here.\",\"path\":\"14/app/api-reference/next-config-js/output\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"pageExtensions\",\"description\":\"Extend the default page extensions used by Next.js when resolving pages in the Pages Router.\",\"path\":\"14/app/api-reference/next-config-js/pageExtensions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Partial Prerendering (experimental)\",\"description\":\"Learn how to enable Partial Prerendering (experimental) in Next.js 14.\",\"path\":\"14/app/api-reference/next-config-js/partial-prerendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"poweredByHeader\",\"description\":\"Next.js will add the `x-powered-by` header by default. Learn to opt-out of it here.\",\"path\":\"14/app/api-reference/next-config-js/poweredByHeader\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"productionBrowserSourceMaps\",\"description\":\"Enables browser source map generation during the production build.\",\"path\":\"14/app/api-reference/next-config-js/productionBrowserSourceMaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactStrictMode\",\"description\":\"The complete Next.js runtime is now Strict Mode-compliant, learn how to opt-in\",\"path\":\"14/app/api-reference/next-config-js/reactStrictMode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirects\",\"description\":\"Add redirects to your Next.js app.\",\"path\":\"14/app/api-reference/next-config-js/redirects\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"rewrites\",\"description\":\"Add rewrites to your Next.js app.\",\"path\":\"14/app/api-reference/next-config-js/rewrites\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverActions\",\"description\":\"Configure Server Actions behavior in your Next.js application.\",\"path\":\"14/app/api-reference/next-config-js/serverActions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverComponentsExternalPackages\",\"description\":\"Opt-out specific dependencies from the Server Components bundling and use native Node.js `require`.\",\"path\":\"14/app/api-reference/next-config-js/serverComponentsExternalPackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"StaleTimes (experimental)\",\"description\":\"Learn how to override the invalidation time of the Client Router Cache.\",\"path\":\"14/app/api-reference/next-config-js/staleTimes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"trailingSlash\",\"description\":\"Configure Next.js pages to resolve with or without a trailing slash.\",\"path\":\"14/app/api-reference/next-config-js/trailingSlash\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"transpilePackages\",\"description\":\"Automatically transpile and bundle dependencies from local packages (like monorepos) or from external dependencies (`node_modules`).\",\"path\":\"14/app/api-reference/next-config-js/transpilePackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"turbo\",\"description\":\"Configure Next.js with Turbopack-specific options\",\"path\":\"14/app/api-reference/next-config-js/turbo\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"typedRoutes\",\"description\":\"Enable experimental support for statically typed links.\",\"path\":\"14/app/api-reference/next-config-js/typedRoutes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"typescript\",\"description\":\"Next.js reports TypeScript errors by default. Learn to opt-out of this behavior here.\",\"path\":\"14/app/api-reference/next-config-js/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"urlImports\",\"description\":\"Configure Next.js to allow importing modules from external URLs (experimental).\",\"path\":\"14/app/api-reference/next-config-js/urlImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webpack\",\"description\":\"Learn how to customize the webpack config used by Next.js\",\"path\":\"14/app/api-reference/next-config-js/webpack\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webVitalsAttribution\",\"description\":\"Learn how to use the webVitalsAttribution option to pinpoint the source of Web Vitals issues.\",\"path\":\"14/app/api-reference/next-config-js/webVitalsAttribution\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"CLI\",\"description\":\"API Reference for the Next.js Command Line Interface (CLI) tools.\",\"path\":\"14/app/api-reference/cli\",\"version\":\"$undefined\",\"children\":[{\"title\":\"create-next-app\",\"description\":\"Create Next.js apps using one command with the create-next-app CLI.\",\"path\":\"14/app/api-reference/cli/create-next-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"next CLI\",\"description\":\"Learn how to run and build your application with the Next.js CLI.\",\"path\":\"14/app/api-reference/cli/next\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Edge Runtime\",\"description\":\"API Reference for the Edge Runtime.\",\"path\":\"14/app/api-reference/edge\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Building Your Application\",\"description\":\"Learn how to use Next.js features to build your application.\",\"path\":\"14/pages/building-your-application\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Routing\",\"description\":\"Learn the fundamentals of routing for front-end applications with the Pages Router.\",\"path\":\"14/pages/building-your-application/routing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Pages and Layouts\",\"description\":\"Create your first page and shared layout with the Pages Router.\",\"path\":\"14/pages/building-your-application/routing/pages-and-layouts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Dynamic Routes\",\"description\":\"Dynamic Routes are pages that allow you to add custom params to your URLs. Start creating Dynamic Routes and learn more here.\",\"path\":\"14/pages/building-your-application/routing/dynamic-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Linking and Navigating\",\"description\":\"Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook.\",\"path\":\"14/pages/building-your-application/routing/linking-and-navigating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Redirecting\",\"description\":\"Learn the different ways to handle redirects in Next.js.\",\"path\":\"14/pages/building-your-application/routing/redirecting\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom App\",\"description\":\"Control page initialization and add a layout that persists for all pages by overriding the default App component used by Next.js.\",\"path\":\"14/pages/building-your-application/routing/custom-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Document\",\"description\":\"Extend the default document markup added by Next.js.\",\"path\":\"14/pages/building-your-application/routing/custom-document\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"API Routes\",\"description\":\"Next.js supports API Routes, which allow you to build your API without leaving your Next.js app. Learn how it works here.\",\"path\":\"14/pages/building-your-application/routing/api-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Errors\",\"description\":\"Override and extend the built-in Error page to handle custom errors.\",\"path\":\"14/pages/building-your-application/routing/custom-error\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Internationalization\",\"description\":\"Next.js has built-in support for internationalized routing and language detection. Learn more here.\",\"path\":\"14/pages/building-your-application/routing/internationalization\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Middleware\",\"description\":\"Learn how to use Middleware to run code before a request is completed.\",\"path\":\"14/pages/building-your-application/routing/middleware\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Rendering\",\"description\":\"Learn the fundamentals of rendering in React and Next.js.\",\"path\":\"14/pages/building-your-application/rendering\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Server-side Rendering (SSR)\",\"description\":\"Use Server-side Rendering to render pages on each request.\",\"path\":\"14/pages/building-your-application/rendering/server-side-rendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Site Generation (SSG)\",\"description\":\"Use Static Site Generation (SSG) to pre-render pages at build time.\",\"path\":\"14/pages/building-your-application/rendering/static-site-generation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Automatic Static Optimization\",\"description\":\"Next.js automatically optimizes your app to be static HTML whenever possible. Learn how it works here.\",\"path\":\"14/pages/building-your-application/rendering/automatic-static-optimization\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client-side Rendering (CSR)\",\"description\":\"Learn how to implement client-side rendering in the Pages Router.\",\"path\":\"14/pages/building-your-application/rendering/client-side-rendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Edge and Node.js Runtimes\",\"description\":\"Learn more about the switchable runtimes (Edge and Node.js) in Next.js.\",\"path\":\"14/pages/building-your-application/rendering/edge-and-nodejs-runtimes\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Data Fetching\",\"description\":\"Next.js allows you to fetch data in multiple ways, with pre-rendering, server-side rendering or static-site generation, and incremental static regeneration. Learn how to manage your application data in Next.js.\",\"path\":\"14/pages/building-your-application/data-fetching\",\"version\":\"$undefined\",\"children\":[{\"title\":\"getStaticProps\",\"description\":\"Fetch data and generate static pages with `getStaticProps`. Learn more about this API for data fetching in Next.js.\",\"path\":\"14/pages/building-your-application/data-fetching/get-static-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticPaths\",\"description\":\"Fetch data and generate static pages with `getStaticPaths`. Learn more about this API for data fetching in Next.js.\",\"path\":\"14/pages/building-your-application/data-fetching/get-static-paths\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Forms and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"14/pages/building-your-application/data-fetching/forms-and-mutations\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getServerSideProps\",\"description\":\"Fetch data on each request with `getServerSideProps`.\",\"path\":\"14/pages/building-your-application/data-fetching/get-server-side-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Incremental Static Regeneration (ISR)\",\"description\":\"Learn how to create or update static pages at runtime with Incremental Static Regeneration.\",\"path\":\"14/pages/building-your-application/data-fetching/incremental-static-regeneration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client-side Fetching\",\"description\":\"Learn about client-side data fetching, and how to use SWR, a data fetching React hook library that handles caching, revalidation, focus tracking, refetching on interval and more.\",\"path\":\"14/pages/building-your-application/data-fetching/client-side\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Styling\",\"description\":\"Learn the different ways you can style your Next.js application.\",\"path\":\"14/pages/building-your-application/styling\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CSS Modules\",\"description\":\"Style your Next.js Application using CSS Modules.\",\"path\":\"14/pages/building-your-application/styling/css-modules\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Tailwind CSS\",\"description\":\"Style your Next.js Application using Tailwind CSS.\",\"path\":\"14/pages/building-your-application/styling/tailwind-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CSS-in-JS\",\"description\":\"Use CSS-in-JS libraries with Next.js\",\"path\":\"14/pages/building-your-application/styling/css-in-js\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Sass\",\"description\":\"Learn how to use Sass in your Next.js application.\",\"path\":\"14/pages/building-your-application/styling/sass\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Optimizing\",\"description\":\"Optimize your Next.js application for best performance and user experience.\",\"path\":\"14/pages/building-your-application/optimizing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Images\",\"description\":\"Optimize your images with the built-in `next/image` component.\",\"path\":\"14/pages/building-your-application/optimizing/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fonts\",\"description\":\"Optimize your application's web fonts with the built-in `next/font` loaders.\",\"path\":\"14/pages/building-your-application/optimizing/fonts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Scripts\",\"description\":\"Optimize 3rd party scripts with the built-in Script component.\",\"path\":\"14/pages/building-your-application/optimizing/scripts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Assets\",\"description\":\"Next.js allows you to serve static files, like images, in the public directory. You can learn how it works here.\",\"path\":\"14/pages/building-your-application/optimizing/static-assets\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Bundle Analyzer\",\"description\":\"Analyze the size of your JavaScript bundles using the @next/bundle-analyzer plugin.\",\"path\":\"14/pages/building-your-application/optimizing/bundle-analyzer\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Analytics\",\"description\":\"Measure and track page performance using Next.js Speed Insights\",\"path\":\"14/pages/building-your-application/optimizing/analytics\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Lazy Loading\",\"description\":\"Lazy load imported libraries and React Components to improve your application's loading performance.\",\"path\":\"14/pages/building-your-application/optimizing/lazy-loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Instrumentation\",\"description\":\"Learn how to use instrumentation to run code at server startup in your Next.js app\",\"path\":\"14/pages/building-your-application/optimizing/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"OpenTelemetry\",\"description\":\"Learn how to instrument your Next.js app with OpenTelemetry.\",\"path\":\"14/pages/building-your-application/optimizing/open-telemetry\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Third Party Libraries\",\"description\":\"Optimize the performance of third-party libraries in your application with the `@next/third-parties` package.\",\"path\":\"14/pages/building-your-application/optimizing/third-party-libraries\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuring\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"14/pages/building-your-application/configuring\",\"version\":\"$undefined\",\"children\":[{\"title\":\"TypeScript\",\"description\":\"Next.js provides a TypeScript-first development experience for building your React application.\",\"path\":\"14/pages/building-your-application/configuring/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ESLint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"14/pages/building-your-application/configuring/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Environment Variables\",\"description\":\"Learn to add and access environment variables in your Next.js application.\",\"path\":\"14/pages/building-your-application/configuring/environment-variables\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Absolute Imports and Module Path Aliases\",\"description\":\"Configure module path aliases that allow you to remap certain import paths.\",\"path\":\"14/pages/building-your-application/configuring/absolute-imports-and-module-aliases\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"src Directory\",\"description\":\"Save pages under the `src` directory as an alternative to the root `pages` directory.\",\"path\":\"14/pages/building-your-application/configuring/src-directory\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"MDX\",\"description\":\"Learn how to configure MDX to write JSX in your markdown files.\",\"path\":\"14/pages/building-your-application/configuring/mdx\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"AMP\",\"description\":\"With minimal config, and without leaving React, you can start adding AMP and improve the performance and speed of your pages.\",\"path\":\"14/pages/building-your-application/configuring/amp\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Babel\",\"description\":\"Extend the babel preset added by Next.js with your own configs.\",\"path\":\"14/pages/building-your-application/configuring/babel\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"PostCSS\",\"description\":\"Extend the PostCSS config and plugins added by Next.js with your own.\",\"path\":\"14/pages/building-your-application/configuring/post-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Server\",\"description\":\"Start a Next.js app programmatically using a custom server.\",\"path\":\"14/pages/building-your-application/configuring/custom-server\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Draft Mode\",\"description\":\"Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with Pages Router.\",\"path\":\"14/pages/building-your-application/configuring/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Error Handling\",\"description\":\"Handle errors in your Next.js app.\",\"path\":\"14/pages/building-your-application/configuring/error-handling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Debugging\",\"description\":\"Learn how to debug your Next.js application with VS Code or Chrome DevTools.\",\"path\":\"14/pages/building-your-application/configuring/debugging\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Preview Mode\",\"description\":\"Next.js has the preview mode for statically generated pages. You can learn how it works here.\",\"path\":\"14/pages/building-your-application/configuring/preview-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Content Security Policy\",\"description\":\"Learn how to set a Content Security Policy (CSP) for your Next.js application.\",\"path\":\"14/pages/building-your-application/configuring/content-security-policy\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Testing\",\"description\":\"Learn how to set up Next.js with three commonly used testing tools — Cypress, Playwright, Vitest, and Jest.\",\"path\":\"14/pages/building-your-application/testing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Vitest\",\"description\":\"Learn how to set up Next.js with Vitest and React Testing Library - two popular unit testing libraries.\",\"path\":\"14/pages/building-your-application/testing/vitest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Jest\",\"description\":\"Learn how to set up Next.js with Jest for Unit Testing.\",\"path\":\"14/pages/building-your-application/testing/jest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Playwright\",\"description\":\"Learn how to set up Next.js with Playwright for End-to-End (E2E) and Integration testing.\",\"path\":\"14/pages/building-your-application/testing/playwright\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Cypress\",\"description\":\"Learn how to set up Next.js with Cypress for End-to-End (E2E) and Component Testing.\",\"path\":\"14/pages/building-your-application/testing/cypress\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Authentication\",\"description\":\"Learn how to implement authentication in Next.js, covering best practices, securing routes, authorization techniques, and session management.\",\"path\":\"14/pages/building-your-application/authentication\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Deploying\",\"description\":\"Learn how to deploy your Next.js app to production, either managed or self-hosted.\",\"path\":\"14/pages/building-your-application/deploying\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Production Checklist\",\"description\":\"Recommendations to ensure the best performance and user experience before taking your Next.js application to production.\",\"path\":\"14/pages/building-your-application/deploying/production-checklist\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Exports\",\"description\":\"Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server.\",\"path\":\"14/pages/building-your-application/deploying/static-exports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Multi-Zones\",\"description\":\"Learn how to build micro-frontends using Next.js Multi-Zones to deploy multiple Next.js apps under a single domain.\",\"path\":\"14/pages/building-your-application/deploying/multi-zones\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Continuous Integration (CI) Build Caching\",\"description\":\"Learn how to configure CI to cache Next.js builds\",\"path\":\"14/pages/building-your-application/deploying/ci-build-caching\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Upgrading\",\"description\":\"Learn how to upgrade to the latest versions of Next.js.\",\"path\":\"14/pages/building-your-application/upgrading\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Codemods\",\"description\":\"Use codemods to upgrade your Next.js codebase when new features are released.\",\"path\":\"14/pages/building-your-application/upgrading/codemods\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"From Pages to App\",\"description\":\"Learn how to upgrade your existing Next.js application from the Pages Router to the App Router.\",\"path\":\"14/pages/building-your-application/upgrading/app-router-migration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Vite\",\"description\":\"Learn how to migrate your existing React application from Vite to Next.js.\",\"path\":\"14/pages/building-your-application/upgrading/from-vite\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Create React App\",\"description\":\"Learn how to migrate your existing React application from Create React App to Next.js.\",\"path\":\"14/pages/building-your-application/upgrading/from-create-react-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 14\",\"description\":\"Upgrade your Next.js Application from Version 13 to 14.\",\"path\":\"14/pages/building-your-application/upgrading/version-14\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 13\",\"description\":\"Upgrade your Next.js Application from Version 12 to 13.\",\"path\":\"14/pages/building-your-application/upgrading/version-13\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 12\",\"description\":\"Upgrade your Next.js Application from Version 11 to Version 12.\",\"path\":\"14/pages/building-your-application/upgrading/version-12\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 11\",\"description\":\"Upgrade your Next.js Application from Version 10 to Version 11.\",\"path\":\"14/pages/building-your-application/upgrading/version-11\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 10\",\"description\":\"Upgrade your Next.js Application from Version 9 to Version 10.\",\"path\":\"14/pages/building-your-application/upgrading/version-10\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 9\",\"description\":\"Upgrade your Next.js Application from Version 8 to Version 9.\",\"path\":\"14/pages/building-your-application/upgrading/version-9\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"API Reference\",\"description\":\"Next.js API Reference for the Pages Router.\",\"path\":\"14/pages/api-reference\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Components\",\"description\":\"API Reference for Next.js built-in components in the Pages Router.\",\"path\":\"14/pages/api-reference/components\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Font\",\"description\":\"API Reference for the Font Module\",\"path\":\"14/pages/api-reference/components/font\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cHead\u003e\",\"description\":\"Add custom elements to the `head` of your page with the built-in Head component.\",\"path\":\"14/pages/api-reference/components/head\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e\",\"description\":\"Optimize Images in your Next.js Application using the built-in `next/image` Component.\",\"path\":\"14/pages/api-reference/components/image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e (Legacy)\",\"description\":\"Backwards compatible Image Optimization with the Legacy Image component.\",\"path\":\"14/pages/api-reference/components/image-legacy\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cLink\u003e\",\"description\":\"API reference for the \u003cLink\u003e component.\",\"path\":\"14/pages/api-reference/components/link\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cScript\u003e\",\"description\":\"Optimize third-party scripts in your Next.js application using the built-in `next/script` Component.\",\"path\":\"14/pages/api-reference/components/script\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Functions\",\"description\":\"API Reference for Functions and Hooks in Pages Router.\",\"path\":\"14/pages/api-reference/functions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"getInitialProps\",\"description\":\"Fetch dynamic data on the server for your React component with getInitialProps.\",\"path\":\"14/pages/api-reference/functions/get-initial-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getServerSideProps\",\"description\":\"API reference for `getServerSideProps`. Learn how to fetch data on each request with Next.js.\",\"path\":\"14/pages/api-reference/functions/get-server-side-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticPaths\",\"description\":\"API reference for `getStaticPaths`. Learn how to fetch data and generate static pages with `getStaticPaths`.\",\"path\":\"14/pages/api-reference/functions/get-static-paths\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticProps\",\"description\":\"API reference for `getStaticProps`. Learn how to use `getStaticProps` to generate static pages with Next.js.\",\"path\":\"14/pages/api-reference/functions/get-static-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextRequest\",\"description\":\"API Reference for NextRequest.\",\"path\":\"14/pages/api-reference/functions/next-request\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextResponse\",\"description\":\"API Reference for NextResponse.\",\"path\":\"14/pages/api-reference/functions/next-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useAmp\",\"description\":\"Enable AMP in a page, and control the way Next.js adds AMP to the page with the AMP config.\",\"path\":\"14/pages/api-reference/functions/use-amp\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useReportWebVitals\",\"description\":\"useReportWebVitals\",\"path\":\"14/pages/api-reference/functions/use-report-web-vitals\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useRouter\",\"description\":\"Learn more about the API of the Next.js Router, and access the router instance in your page with the useRouter hook.\",\"path\":\"14/pages/api-reference/functions/use-router\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"userAgent\",\"description\":\"The userAgent helper extends the Web Request API with additional properties and methods to interact with the user agent object from the request.\",\"path\":\"14/pages/api-reference/functions/userAgent\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"next.config.js Options\",\"description\":\"Learn about the options available in next.config.js for the Pages Router.\",\"path\":\"14/pages/api-reference/next-config-js\",\"version\":\"$undefined\",\"children\":[{\"title\":\"assetPrefix\",\"description\":\"Learn how to use the assetPrefix config option to configure your CDN.\",\"path\":\"14/pages/api-reference/next-config-js/assetPrefix\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"basePath\",\"description\":\"Use `basePath` to deploy a Next.js application under a sub-path of a domain.\",\"path\":\"14/pages/api-reference/next-config-js/basePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"compress\",\"description\":\"Next.js provides gzip compression to compress rendered content and static files, it only works with the server target. Learn more about it here.\",\"path\":\"14/pages/api-reference/next-config-js/compress\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"crossOrigin\",\"description\":\"Use the `crossOrigin` option to add a crossOrigin tag on the `script` tags generated by `next/script` and `next/head`.\",\"path\":\"14/pages/api-reference/next-config-js/crossOrigin\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"devIndicators\",\"description\":\"Optimized pages include an indicator to let you know if it's being statically optimized. You can opt-out of it here.\",\"path\":\"14/pages/api-reference/next-config-js/devIndicators\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"distDir\",\"description\":\"Set a custom build directory to use instead of the default .next directory.\",\"path\":\"14/pages/api-reference/next-config-js/distDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"env\",\"description\":\"Learn to add and access environment variables in your Next.js application at build time.\",\"path\":\"14/pages/api-reference/next-config-js/env\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"eslint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"14/pages/api-reference/next-config-js/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"exportPathMap\",\"description\":\"Customize the pages that will be exported as HTML files when using `next export`.\",\"path\":\"14/pages/api-reference/next-config-js/exportPathMap\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateBuildId\",\"description\":\"Configure the build id, which is used to identify the current build in which your application is being served.\",\"path\":\"14/pages/api-reference/next-config-js/generateBuildId\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateEtags\",\"description\":\"Next.js will generate etags for every page by default. Learn more about how to disable etag generation here.\",\"path\":\"14/pages/api-reference/next-config-js/generateEtags\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"Add custom HTTP headers to your Next.js app.\",\"path\":\"14/pages/api-reference/next-config-js/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"httpAgentOptions\",\"description\":\"Next.js will automatically use HTTP Keep-Alive by default. Learn more about how to disable HTTP Keep-Alive here.\",\"path\":\"14/pages/api-reference/next-config-js/httpAgentOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"images\",\"description\":\"Custom configuration for the next/image loader\",\"path\":\"14/pages/api-reference/next-config-js/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"instrumentationHook\",\"description\":\"Use the instrumentationHook option to set up instrumentation in your Next.js App.\",\"path\":\"14/pages/api-reference/next-config-js/instrumentationHook\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"onDemandEntries\",\"description\":\"Configure how Next.js will dispose and keep in memory pages created in development.\",\"path\":\"14/pages/api-reference/next-config-js/onDemandEntries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"optimizePackageImports\",\"description\":\"API Reference for optmizedPackageImports Next.js Config Option\",\"path\":\"14/pages/api-reference/next-config-js/optimizePackageImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"output\",\"description\":\"Next.js automatically traces which files are needed by each page to allow for easy deployment of your application. Learn how it works here.\",\"path\":\"14/pages/api-reference/next-config-js/output\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"pageExtensions\",\"description\":\"Extend the default page extensions used by Next.js when resolving pages in the Pages Router.\",\"path\":\"14/pages/api-reference/next-config-js/pageExtensions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"poweredByHeader\",\"description\":\"Next.js will add the `x-powered-by` header by default. Learn to opt-out of it here.\",\"path\":\"14/pages/api-reference/next-config-js/poweredByHeader\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"productionBrowserSourceMaps\",\"description\":\"Enables browser source map generation during the production build.\",\"path\":\"14/pages/api-reference/next-config-js/productionBrowserSourceMaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactStrictMode\",\"description\":\"The complete Next.js runtime is now Strict Mode-compliant, learn how to opt-in\",\"path\":\"14/pages/api-reference/next-config-js/reactStrictMode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirects\",\"description\":\"Add redirects to your Next.js app.\",\"path\":\"14/pages/api-reference/next-config-js/redirects\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"rewrites\",\"description\":\"Add rewrites to your Next.js app.\",\"path\":\"14/pages/api-reference/next-config-js/rewrites\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Runtime Config\",\"description\":\"Add client and server runtime configuration to your Next.js app.\",\"path\":\"14/pages/api-reference/next-config-js/runtime-configuration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"trailingSlash\",\"description\":\"Configure Next.js pages to resolve with or without a trailing slash.\",\"path\":\"14/pages/api-reference/next-config-js/trailingSlash\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"transpilePackages\",\"description\":\"Automatically transpile and bundle dependencies from local packages (like monorepos) or from external dependencies (`node_modules`).\",\"path\":\"14/pages/api-reference/next-config-js/transpilePackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"turbo\",\"description\":\"Configure Next.js with Turbopack-specific options\",\"path\":\"14/pages/api-reference/next-config-js/turbo\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"typescript\",\"description\":\"Next.js reports TypeScript errors by default. Learn to opt-out of this behavior here.\",\"path\":\"14/pages/api-reference/next-config-js/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"urlImports\",\"description\":\"Configure Next.js to allow importing modules from external URLs (experimental).\",\"path\":\"14/pages/api-reference/next-config-js/urlImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webpack\",\"description\":\"Learn how to customize the webpack config used by Next.js\",\"path\":\"14/pages/api-reference/next-config-js/webpack\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webVitalsAttribution\",\"description\":\"Learn how to use the webVitalsAttribution option to pinpoint the source of Web Vitals issues.\",\"path\":\"14/pages/api-reference/next-config-js/webVitalsAttribution\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Edge Runtime\",\"description\":\"API Reference for the Edge Runtime.\",\"path\":\"14/pages/api-reference/edge\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CLI\",\"description\":\"API Reference for the Next.js Command Line Interface (CLI) tools.\",\"path\":\"14/pages/api-reference/cli\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CLI\",\"description\":\"Create Next.js apps using one command with the create-next-app CLI.\",\"path\":\"14/pages/api-reference/cli/create-next-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"next CLI\",\"description\":\"Learn how to run and build your application with the Next.js CLI.\",\"path\":\"14/pages/api-reference/cli/next\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"Architecture\",\"description\":\"How Next.js Works\",\"path\":\"14/architecture\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Accessibility\",\"description\":\"The built-in accessibility features of Next.js.\",\"path\":\"14/architecture/accessibility\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fast Refresh\",\"description\":\"Fast Refresh is a hot module reloading experience that gives you instantaneous feedback on edits made to your React components.\",\"path\":\"14/architecture/fast-refresh\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Next.js Compiler\",\"description\":\"Next.js Compiler, written in Rust, which transforms and minifies your Next.js application.\",\"path\":\"14/architecture/nextjs-compiler\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Supported Browsers\",\"description\":\"Browser support and which JavaScript features are supported by Next.js.\",\"path\":\"14/architecture/supported-browsers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Turbopack\",\"description\":\"Turbopack is an incremental bundler optimized for JavaScript and TypeScript, written in Rust, and built into Next.js.\",\"path\":\"14/architecture/turbopack\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Community\",\"description\":\"Get involved in the Next.js community.\",\"path\":\"14/community\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Contribution Guide\",\"description\":\"Learn how to contribute to Next.js Documentation\",\"path\":\"14/community/contribution-guide\",\"version\":\"$undefined\",\"children\":[]}]}],\"canary\":[{\"title\":\"Getting Started\",\"description\":\"Learn how to create full-stack web applications with the Next.js App Router.\",\"path\":\"canary/app/getting-started\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Installation\",\"description\":\"Learn how to create a new Next.js application with `create-next-app`, and set up TypeScript, ESLint, and Module Path Aliases.\",\"path\":\"canary/app/getting-started/installation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Project Structure\",\"description\":\"Learn about the folder and file conventions in a Next.js project, and how to organize your project.\",\"path\":\"canary/app/getting-started/project-structure\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Building Your Application\",\"description\":\"Learn how to use Next.js features to build your application.\",\"path\":\"canary/app/building-your-application\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Routing\",\"description\":\"Learn the fundamentals of routing for front-end applications.\",\"path\":\"canary/app/building-your-application/routing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Defining Routes\",\"description\":\"Learn how to create your first route in Next.js.\",\"path\":\"canary/app/building-your-application/routing/defining-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Pages\",\"description\":\"Create your first page in Next.js\",\"path\":\"canary/app/building-your-application/routing/pages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Layouts and Templates\",\"description\":\"Create your first shared layout in Next.js.\",\"path\":\"canary/app/building-your-application/routing/layouts-and-templates\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Linking and Navigating\",\"description\":\"Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook.\",\"path\":\"canary/app/building-your-application/routing/linking-and-navigating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Error Handling\",\"description\":\"Learn how to display expected errors and handle uncaught exceptions.\",\"path\":\"canary/app/building-your-application/routing/error-handling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Loading UI and Streaming\",\"description\":\"Built on top of Suspense, Loading UI allows you to create a fallback for specific route segments, and automatically stream content as it becomes ready.\",\"path\":\"canary/app/building-your-application/routing/loading-ui-and-streaming\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Redirecting\",\"description\":\"Learn the different ways to handle redirects in Next.js.\",\"path\":\"canary/app/building-your-application/routing/redirecting\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Groups\",\"description\":\"Route Groups can be used to partition your Next.js application into different sections.\",\"path\":\"canary/app/building-your-application/routing/route-groups\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Dynamic Routes\",\"description\":\"Dynamic Routes can be used to programmatically generate route segments from dynamic data.\",\"path\":\"canary/app/building-your-application/routing/dynamic-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Parallel Routes\",\"description\":\"Simultaneously render one or more pages in the same view that can be navigated independently. A pattern for highly dynamic applications.\",\"path\":\"canary/app/building-your-application/routing/parallel-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Intercepting Routes\",\"description\":\"Use intercepting routes to load a new route within the current layout while masking the browser URL, useful for advanced routing patterns such as modals.\",\"path\":\"canary/app/building-your-application/routing/intercepting-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Handlers\",\"description\":\"Create custom request handlers for a given route using the Web's Request and Response APIs.\",\"path\":\"canary/app/building-your-application/routing/route-handlers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Middleware\",\"description\":\"Learn how to use Middleware to run code before a request is completed.\",\"path\":\"canary/app/building-your-application/routing/middleware\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Internationalization\",\"description\":\"Add support for multiple languages with internationalized routing and localized content.\",\"path\":\"canary/app/building-your-application/routing/internationalization\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Data Fetching\",\"description\":\"Learn how to fetch, cache, revalidate, and mutate data with Next.js.\",\"path\":\"canary/app/building-your-application/data-fetching\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Data Fetching and Caching\",\"description\":\"Learn best practices for fetching data on the server or client in Next.js.\",\"path\":\"canary/app/building-your-application/data-fetching/fetching\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Server Actions and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"canary/app/building-your-application/data-fetching/server-actions-and-mutations\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Incremental Static Regeneration (ISR)\",\"description\":\"Learn how to create or update static pages at runtime with Incremental Static Regeneration.\",\"path\":\"canary/app/building-your-application/data-fetching/incremental-static-regeneration\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Rendering\",\"description\":\"Learn the differences between Next.js rendering environments, strategies, and runtimes.\",\"path\":\"canary/app/building-your-application/rendering\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Server Components\",\"description\":\"Learn how you can use React Server Components to render parts of your application on the server.\",\"path\":\"canary/app/building-your-application/rendering/server-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client Components\",\"description\":\"Learn how to use Client Components to render parts of your application on the client.\",\"path\":\"canary/app/building-your-application/rendering/client-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Composition Patterns\",\"description\":\"Recommended patterns for using Server and Client Components.\",\"path\":\"canary/app/building-your-application/rendering/composition-patterns\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Partial Prerendering\",\"description\":\"Learn how to combine the benefits of static and dynamic rendering with Partial Prerendering.\",\"path\":\"canary/app/building-your-application/rendering/partial-prerendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Runtimes\",\"description\":\"Learn about the switchable runtimes (Edge and Node.js) in Next.js.\",\"path\":\"canary/app/building-your-application/rendering/edge-and-nodejs-runtimes\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Caching\",\"description\":\"An overview of caching mechanisms in Next.js.\",\"path\":\"canary/app/building-your-application/caching\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Styling\",\"description\":\"Learn the different ways you can style your Next.js application.\",\"path\":\"canary/app/building-your-application/styling\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CSS\",\"description\":\"Style your Next.js Application with CSS Modules, Global Styles, and external stylesheets.\",\"path\":\"canary/app/building-your-application/styling/css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Tailwind CSS\",\"description\":\"Style your Next.js Application using Tailwind CSS.\",\"path\":\"canary/app/building-your-application/styling/tailwind-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Sass\",\"description\":\"Style your Next.js application using Sass.\",\"path\":\"canary/app/building-your-application/styling/sass\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CSS-in-JS\",\"description\":\"Use CSS-in-JS libraries with Next.js\",\"path\":\"canary/app/building-your-application/styling/css-in-js\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Optimizing\",\"description\":\"Optimize your Next.js application for best performance and user experience.\",\"path\":\"canary/app/building-your-application/optimizing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Images\",\"description\":\"Optimize your images with the built-in `next/image` component.\",\"path\":\"canary/app/building-your-application/optimizing/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Videos\",\"description\":\"Recommendations and best practices for optimizing videos in your Next.js application.\",\"path\":\"canary/app/building-your-application/optimizing/videos\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fonts\",\"description\":\"Optimize your application's web fonts with the built-in `next/font` loaders.\",\"path\":\"canary/app/building-your-application/optimizing/fonts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Metadata\",\"description\":\"Use the Metadata API to define metadata in any layout or page.\",\"path\":\"canary/app/building-your-application/optimizing/metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Scripts\",\"description\":\"Optimize 3rd party scripts with the built-in Script component.\",\"path\":\"canary/app/building-your-application/optimizing/scripts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Package Bundling\",\"description\":\"Learn how to optimize your application's server and client bundles.\",\"path\":\"canary/app/building-your-application/optimizing/package-bundling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Lazy Loading\",\"description\":\"Lazy load imported libraries and React Components to improve your application's loading performance.\",\"path\":\"canary/app/building-your-application/optimizing/lazy-loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Analytics\",\"description\":\"Measure and track page performance using Next.js Speed Insights\",\"path\":\"canary/app/building-your-application/optimizing/analytics\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Instrumentation\",\"description\":\"Learn how to use instrumentation to run code at server startup in your Next.js app\",\"path\":\"canary/app/building-your-application/optimizing/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"OpenTelemetry\",\"description\":\"Learn how to instrument your Next.js app with OpenTelemetry.\",\"path\":\"canary/app/building-your-application/optimizing/open-telemetry\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Assets\",\"description\":\"Next.js allows you to serve static files, like images, in the public directory. You can learn how it works here.\",\"path\":\"canary/app/building-your-application/optimizing/static-assets\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Third Party Libraries\",\"description\":\"Optimize the performance of third-party libraries in your application with the `@next/third-parties` package.\",\"path\":\"canary/app/building-your-application/optimizing/third-party-libraries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Memory Usage\",\"description\":\"Optimize memory used by your application in development and production.\",\"path\":\"canary/app/building-your-application/optimizing/memory-usage\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuring\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"canary/app/building-your-application/configuring\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Environment Variables\",\"description\":\"Learn to add and access environment variables in your Next.js application.\",\"path\":\"canary/app/building-your-application/configuring/environment-variables\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"MDX\",\"description\":\"Learn how to configure MDX and use it in your Next.js apps.\",\"path\":\"canary/app/building-your-application/configuring/mdx\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"src Directory\",\"description\":\"Save pages under the `src` directory as an alternative to the root `pages` directory.\",\"path\":\"canary/app/building-your-application/configuring/src-directory\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Server\",\"description\":\"Start a Next.js app programmatically using a custom server.\",\"path\":\"canary/app/building-your-application/configuring/custom-server\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Draft Mode\",\"description\":\"Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with App Router here.\",\"path\":\"canary/app/building-your-application/configuring/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Content Security Policy\",\"description\":\"Learn how to set a Content Security Policy (CSP) for your Next.js application.\",\"path\":\"canary/app/building-your-application/configuring/content-security-policy\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Debugging\",\"description\":\"Learn how to debug your Next.js application with VS Code, Chrome DevTools, or Firefox DevTools.\",\"path\":\"canary/app/building-your-application/configuring/debugging\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Progressive Web Applications (PWA)\",\"description\":\"Learn how to build a Progressive Web Application (PWA) with Next.js.\",\"path\":\"canary/app/building-your-application/configuring/progressive-web-apps\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Testing\",\"description\":\"Learn how to set up Next.js with four commonly used testing tools — Cypress, Playwright, Vitest, and Jest.\",\"path\":\"canary/app/building-your-application/testing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Vitest\",\"description\":\"Learn how to set up Vitest with Next.js for Unit Testing.\",\"path\":\"canary/app/building-your-application/testing/vitest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Jest\",\"description\":\"Learn how to set up Jest with Next.js for Unit Testing and Snapshot Testing.\",\"path\":\"canary/app/building-your-application/testing/jest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Playwright\",\"description\":\"Learn how to set up Playwright with Next.js for End-to-End (E2E) Testing.\",\"path\":\"canary/app/building-your-application/testing/playwright\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Cypress\",\"description\":\"Learn how to set up Cypress with Next.js for End-to-End (E2E) and Component Testing.\",\"path\":\"canary/app/building-your-application/testing/cypress\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Authentication\",\"description\":\"Learn how to implement authentication in your Next.js application.\",\"path\":\"canary/app/building-your-application/authentication\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Deploying\",\"description\":\"Learn how to deploy your Next.js app to production, either managed or self-hosted.\",\"path\":\"canary/app/building-your-application/deploying\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Production Checklist\",\"description\":\"Recommendations to ensure the best performance and user experience before taking your Next.js application to production.\",\"path\":\"canary/app/building-your-application/deploying/production-checklist\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Exports\",\"description\":\"Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server.\",\"path\":\"canary/app/building-your-application/deploying/static-exports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Multi-Zones\",\"description\":\"Learn how to build micro-frontends using Next.js Multi-Zones to deploy multiple Next.js apps under a single domain.\",\"path\":\"canary/app/building-your-application/deploying/multi-zones\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Upgrading\",\"description\":\"Learn how to upgrade to the latest versions of Next.js.\",\"path\":\"canary/app/building-your-application/upgrading\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Codemods\",\"description\":\"Use codemods to upgrade your Next.js codebase when new features are released.\",\"path\":\"canary/app/building-your-application/upgrading/codemods\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 15\",\"description\":\"Upgrade your Next.js Application from Version 14 to 15.\",\"path\":\"canary/app/building-your-application/upgrading/version-15\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 14\",\"description\":\"Upgrade your Next.js Application from Version 13 to 14.\",\"path\":\"canary/app/building-your-application/upgrading/version-14\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"App Router Migration\",\"description\":\"Learn how to upgrade your existing Next.js application from the Pages Router to the App Router.\",\"path\":\"canary/app/building-your-application/upgrading/app-router-migration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Create React App\",\"description\":\"Learn how to migrate your existing React application from Create React App to Next.js.\",\"path\":\"canary/app/building-your-application/upgrading/from-create-react-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Vite\",\"description\":\"Learn how to migrate your existing React application from Vite to Next.js.\",\"path\":\"canary/app/building-your-application/upgrading/from-vite\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Examples\",\"description\":\"Examples of popular Next.js UI patterns and use cases.\",\"path\":\"canary/app/building-your-application/examples\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"API Reference\",\"description\":\"Next.js API Reference for the App Router.\",\"path\":\"canary/app/api-reference\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Directives\",\"description\":\"Directives are used to modify the behavior of your Next.js application.\",\"path\":\"canary/app/api-reference/directives\",\"version\":\"$undefined\",\"children\":[{\"title\":\"use cache\",\"description\":\"Learn how to use the use cache directive to cache data in your Next.js application.\",\"path\":\"canary/app/api-reference/directives/use-cache\",\"version\":\"canary\",\"children\":[]},{\"title\":\"use client\",\"description\":\"Learn how to use the use client directive to render a component on the client.\",\"path\":\"canary/app/api-reference/directives/use-client\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"use server\",\"description\":\"Learn how to use the use server directive to execute code on the server.\",\"path\":\"canary/app/api-reference/directives/use-server\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Components\",\"description\":\"API Reference for Next.js built-in components.\",\"path\":\"canary/app/api-reference/components\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Font\",\"description\":\"Optimizing loading web fonts with the built-in `next/font` loaders.\",\"path\":\"canary/app/api-reference/components/font\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cForm\u003e\",\"description\":\"Learn how to use the `\u003cForm\u003e` component to handle form submissions and search params updates with client-side navigation.\",\"path\":\"canary/app/api-reference/components/form\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e\",\"description\":\"Optimize Images in your Next.js Application using the built-in `next/image` Component.\",\"path\":\"canary/app/api-reference/components/image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cLink\u003e\",\"description\":\"Enable fast client-side navigation with the built-in `next/link` component.\",\"path\":\"canary/app/api-reference/components/link\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cScript\u003e\",\"description\":\"Optimize third-party scripts in your Next.js application using the built-in `next/script` Component.\",\"path\":\"canary/app/api-reference/components/script\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"File Conventions\",\"description\":\"API Reference for Next.js Special Files.\",\"path\":\"canary/app/api-reference/file-conventions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"default.js\",\"description\":\"API Reference for the default.js file.\",\"path\":\"canary/app/api-reference/file-conventions/default\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"error.js\",\"description\":\"API reference for the error.js special file.\",\"path\":\"canary/app/api-reference/file-conventions/error\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"instrumentation.js\",\"description\":\"API reference for the instrumentation.js file.\",\"path\":\"canary/app/api-reference/file-conventions/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"layout.js\",\"description\":\"API reference for the layout.js file.\",\"path\":\"canary/app/api-reference/file-conventions/layout\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"loading.js\",\"description\":\"API reference for the loading.js file.\",\"path\":\"canary/app/api-reference/file-conventions/loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"mdx-components.js\",\"description\":\"API reference for the mdx-components.js file.\",\"path\":\"canary/app/api-reference/file-conventions/mdx-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"middleware.js\",\"description\":\"API reference for the middleware.js file.\",\"path\":\"canary/app/api-reference/file-conventions/middleware\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"not-found.js\",\"description\":\"API reference for the not-found.js file.\",\"path\":\"canary/app/api-reference/file-conventions/not-found\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"page.js\",\"description\":\"API reference for the page.js file.\",\"path\":\"canary/app/api-reference/file-conventions/page\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"route.js\",\"description\":\"API reference for the route.js special file.\",\"path\":\"canary/app/api-reference/file-conventions/route\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Segment Config\",\"description\":\"Learn about how to configure options for Next.js route segments.\",\"path\":\"canary/app/api-reference/file-conventions/route-segment-config\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"template.js\",\"description\":\"API Reference for the template.js file.\",\"path\":\"canary/app/api-reference/file-conventions/template\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Metadata Files\",\"description\":\"API documentation for the metadata file conventions.\",\"path\":\"canary/app/api-reference/file-conventions/metadata\",\"version\":\"$undefined\",\"children\":[{\"title\":\"favicon, icon, and apple-icon\",\"description\":\"API Reference for the Favicon, Icon and Apple Icon file conventions.\",\"path\":\"canary/app/api-reference/file-conventions/metadata/app-icons\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"manifest.json\",\"description\":\"API Reference for manifest.json file.\",\"path\":\"canary/app/api-reference/file-conventions/metadata/manifest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"opengraph-image and twitter-image\",\"description\":\"API Reference for the Open Graph Image and Twitter Image file conventions.\",\"path\":\"canary/app/api-reference/file-conventions/metadata/opengraph-image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"robots.txt\",\"description\":\"API Reference for robots.txt file.\",\"path\":\"canary/app/api-reference/file-conventions/metadata/robots\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"sitemap.xml\",\"description\":\"API Reference for the sitemap.xml file.\",\"path\":\"canary/app/api-reference/file-conventions/metadata/sitemap\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"Functions\",\"description\":\"API Reference for Next.js Functions and Hooks.\",\"path\":\"canary/app/api-reference/functions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"cacheLife\",\"description\":\"Learn how to use the cacheLife function to set the cache expiration time for a cached function or component.\",\"path\":\"canary/app/api-reference/functions/cacheLife\",\"version\":\"canary\",\"children\":[]},{\"title\":\"cacheTag\",\"description\":\"Learn how to use the cacheTag function to manage cache invalidation in your Next.js application.\",\"path\":\"canary/app/api-reference/functions/cacheTag\",\"version\":\"canary\",\"children\":[]},{\"title\":\"connection\",\"description\":\"API Reference for the connection function.\",\"path\":\"canary/app/api-reference/functions/connection\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"cookies\",\"description\":\"API Reference for the cookies function.\",\"path\":\"canary/app/api-reference/functions/cookies\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"draftMode\",\"description\":\"API Reference for the draftMode function.\",\"path\":\"canary/app/api-reference/functions/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"expirePath\",\"description\":\"API Reference for the expirePath function.\",\"path\":\"canary/app/api-reference/functions/expirePath\",\"version\":\"canary\",\"children\":[]},{\"title\":\"expireTag\",\"description\":\"API Reference for the expireTag function.\",\"path\":\"canary/app/api-reference/functions/expireTag\",\"version\":\"canary\",\"children\":[]},{\"title\":\"fetch\",\"description\":\"API reference for the extended fetch function.\",\"path\":\"canary/app/api-reference/functions/fetch\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateImageMetadata\",\"description\":\"Learn how to generate multiple images in a single Metadata API special file.\",\"path\":\"canary/app/api-reference/functions/generate-image-metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateMetadata\",\"description\":\"Learn how to add Metadata to your Next.js application for improved search engine optimization (SEO) and web shareability.\",\"path\":\"canary/app/api-reference/functions/generate-metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateSitemaps\",\"description\":\"Learn how to use the generateSiteMaps function to create multiple sitemaps for your application.\",\"path\":\"canary/app/api-reference/functions/generate-sitemaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateStaticParams\",\"description\":\"API reference for the generateStaticParams function.\",\"path\":\"canary/app/api-reference/functions/generate-static-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateViewport\",\"description\":\"API Reference for the generateViewport function.\",\"path\":\"canary/app/api-reference/functions/generate-viewport\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"API reference for the headers function.\",\"path\":\"canary/app/api-reference/functions/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ImageResponse\",\"description\":\"API Reference for the ImageResponse constructor.\",\"path\":\"canary/app/api-reference/functions/image-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextRequest\",\"description\":\"API Reference for NextRequest.\",\"path\":\"canary/app/api-reference/functions/next-request\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextResponse\",\"description\":\"API Reference for NextResponse.\",\"path\":\"canary/app/api-reference/functions/next-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"notFound\",\"description\":\"API Reference for the notFound function.\",\"path\":\"canary/app/api-reference/functions/not-found\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"permanentRedirect\",\"description\":\"API Reference for the permanentRedirect function.\",\"path\":\"canary/app/api-reference/functions/permanentRedirect\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirect\",\"description\":\"API Reference for the redirect function.\",\"path\":\"canary/app/api-reference/functions/redirect\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"revalidatePath\",\"description\":\"API Reference for the revalidatePath function.\",\"path\":\"canary/app/api-reference/functions/revalidatePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"revalidateTag\",\"description\":\"API Reference for the revalidateTag function.\",\"path\":\"canary/app/api-reference/functions/revalidateTag\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"unstable_after\",\"description\":\"API Reference for the after function.\",\"path\":\"canary/app/api-reference/functions/unstable_after\",\"version\":\"unstable\",\"children\":[]},{\"title\":\"unstable_cache\",\"description\":\"API Reference for the unstable_cache function.\",\"path\":\"canary/app/api-reference/functions/unstable_cache\",\"version\":\"legacy\",\"children\":[]},{\"title\":\"unstable_noStore\",\"description\":\"API Reference for the unstable_noStore function.\",\"path\":\"canary/app/api-reference/functions/unstable_noStore\",\"version\":\"legacy\",\"children\":[]},{\"title\":\"unstable_rethrow\",\"description\":\"API Reference for the unstable_rethrow function.\",\"path\":\"canary/app/api-reference/functions/unstable_rethrow\",\"version\":\"unstable\",\"children\":[]},{\"title\":\"useParams\",\"description\":\"API Reference for the useParams hook.\",\"path\":\"canary/app/api-reference/functions/use-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"usePathname\",\"description\":\"API Reference for the usePathname hook.\",\"path\":\"canary/app/api-reference/functions/use-pathname\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useReportWebVitals\",\"description\":\"API Reference for the useReportWebVitals function.\",\"path\":\"canary/app/api-reference/functions/use-report-web-vitals\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useRouter\",\"description\":\"API reference for the useRouter hook.\",\"path\":\"canary/app/api-reference/functions/use-router\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSearchParams\",\"description\":\"API Reference for the useSearchParams hook.\",\"path\":\"canary/app/api-reference/functions/use-search-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSelectedLayoutSegment\",\"description\":\"API Reference for the useSelectedLayoutSegment hook.\",\"path\":\"canary/app/api-reference/functions/use-selected-layout-segment\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSelectedLayoutSegments\",\"description\":\"API Reference for the useSelectedLayoutSegments hook.\",\"path\":\"canary/app/api-reference/functions/use-selected-layout-segments\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"userAgent\",\"description\":\"The userAgent helper extends the Web Request API with additional properties and methods to interact with the user agent object from the request.\",\"path\":\"canary/app/api-reference/functions/userAgent\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuration\",\"description\":\"Learn how to configure Next.js applications.\",\"path\":\"canary/app/api-reference/config\",\"version\":\"$undefined\",\"children\":[{\"title\":\"next.config.js\",\"description\":\"Learn how to configure your application with next.config.js.\",\"path\":\"canary/app/api-reference/config/next-config-js\",\"version\":\"$undefined\",\"children\":[{\"title\":\"appDir\",\"description\":\"Enable the App Router to use layouts, streaming, and more.\",\"path\":\"canary/app/api-reference/config/next-config-js/appDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"assetPrefix\",\"description\":\"Learn how to use the assetPrefix config option to configure your CDN.\",\"path\":\"canary/app/api-reference/config/next-config-js/assetPrefix\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"basePath\",\"description\":\"Use `basePath` to deploy a Next.js application under a sub-path of a domain.\",\"path\":\"canary/app/api-reference/config/next-config-js/basePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"cacheLife\",\"description\":\"Learn how to set up cacheLife configurations in Next.js.\",\"path\":\"canary/app/api-reference/config/next-config-js/cacheLife\",\"version\":\"canary\",\"children\":[]},{\"title\":\"compress\",\"description\":\"Next.js provides gzip compression to compress rendered content and static files, it only works with the server target. Learn more about it here.\",\"path\":\"canary/app/api-reference/config/next-config-js/compress\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"crossOrigin\",\"description\":\"Use the `crossOrigin` option to add a crossOrigin tag on the `script` tags generated by `next/script`.\",\"path\":\"canary/app/api-reference/config/next-config-js/crossOrigin\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"cssChunking\",\"description\":\"Use the `cssChunking` option to control how CSS files are chunked in your Next.js application.\",\"path\":\"canary/app/api-reference/config/next-config-js/cssChunking\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"devIndicators\",\"description\":\"Optimized pages include an indicator to let you know if it's being statically optimized. You can opt-out of it here.\",\"path\":\"canary/app/api-reference/config/next-config-js/devIndicators\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"distDir\",\"description\":\"Set a custom build directory to use instead of the default .next directory.\",\"path\":\"canary/app/api-reference/config/next-config-js/distDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"dynamicIO\",\"description\":\"Learn how to enable the dynamicIO flag in Next.js.\",\"path\":\"canary/app/api-reference/config/next-config-js/dynamicIO\",\"version\":\"canary\",\"children\":[]},{\"title\":\"env\",\"description\":\"Learn to add and access environment variables in your Next.js application at build time.\",\"path\":\"canary/app/api-reference/config/next-config-js/env\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"eslint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"canary/app/api-reference/config/next-config-js/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"expireTime\",\"description\":\"Customize stale-while-revalidate expire time for ISR enabled pages.\",\"path\":\"canary/app/api-reference/config/next-config-js/expireTime\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"exportPathMap\",\"description\":\"Customize the pages that will be exported as HTML files when using `next export`.\",\"path\":\"canary/app/api-reference/config/next-config-js/exportPathMap\",\"version\":\"legacy\",\"children\":[]},{\"title\":\"generateBuildId\",\"description\":\"Configure the build id, which is used to identify the current build in which your application is being served.\",\"path\":\"canary/app/api-reference/config/next-config-js/generateBuildId\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateEtags\",\"description\":\"Next.js will generate etags for every page by default. Learn more about how to disable etag generation here.\",\"path\":\"canary/app/api-reference/config/next-config-js/generateEtags\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"Add custom HTTP headers to your Next.js app.\",\"path\":\"canary/app/api-reference/config/next-config-js/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"httpAgentOptions\",\"description\":\"Next.js will automatically use HTTP Keep-Alive by default. Learn more about how to disable HTTP Keep-Alive here.\",\"path\":\"canary/app/api-reference/config/next-config-js/httpAgentOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"images\",\"description\":\"Custom configuration for the next/image loader\",\"path\":\"canary/app/api-reference/config/next-config-js/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"cacheHandler\",\"description\":\"Configure the Next.js cache used for storing and revalidating data to use any external service like Redis, Memcached, or others.\",\"path\":\"canary/app/api-reference/config/next-config-js/incrementalCacheHandlerPath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"inlineCss\",\"description\":\"Enable inline CSS support.\",\"path\":\"canary/app/api-reference/config/next-config-js/inlineCss\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"logging\",\"description\":\"Configure how data fetches are logged to the console when running Next.js in development mode.\",\"path\":\"canary/app/api-reference/config/next-config-js/logging\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"mdxRs\",\"description\":\"Use the new Rust compiler to compile MDX files in the App Router.\",\"path\":\"canary/app/api-reference/config/next-config-js/mdxRs\",\"version\":\"experimental.\",\"children\":[]},{\"title\":\"onDemandEntries\",\"description\":\"Configure how Next.js will dispose and keep in memory pages created in development.\",\"path\":\"canary/app/api-reference/config/next-config-js/onDemandEntries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"optimizePackageImports\",\"description\":\"API Reference for optimizePackageImports Next.js Config Option\",\"path\":\"canary/app/api-reference/config/next-config-js/optimizePackageImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"output\",\"description\":\"Next.js automatically traces which files are needed by each page to allow for easy deployment of your application. Learn how it works here.\",\"path\":\"canary/app/api-reference/config/next-config-js/output\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"pageExtensions\",\"description\":\"Extend the default page extensions used by Next.js when resolving pages in the Pages Router.\",\"path\":\"canary/app/api-reference/config/next-config-js/pageExtensions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"poweredByHeader\",\"description\":\"Next.js will add the `x-powered-by` header by default. Learn to opt-out of it here.\",\"path\":\"canary/app/api-reference/config/next-config-js/poweredByHeader\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ppr\",\"description\":\"Learn how to enable Partial Prerendering in Next.js.\",\"path\":\"canary/app/api-reference/config/next-config-js/ppr\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"productionBrowserSourceMaps\",\"description\":\"Enables browser source map generation during the production build.\",\"path\":\"canary/app/api-reference/config/next-config-js/productionBrowserSourceMaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactCompiler\",\"description\":\"Enable the React Compiler to automatically optimize component rendering.\",\"path\":\"canary/app/api-reference/config/next-config-js/reactCompiler\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"reactMaxHeadersLength\",\"description\":\"The maximum length of the headers that are emitted by React and added to the response.\",\"path\":\"canary/app/api-reference/config/next-config-js/reactMaxHeadersLength\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactStrictMode\",\"description\":\"The complete Next.js runtime is now Strict Mode-compliant, learn how to opt-in\",\"path\":\"canary/app/api-reference/config/next-config-js/reactStrictMode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirects\",\"description\":\"Add redirects to your Next.js app.\",\"path\":\"canary/app/api-reference/config/next-config-js/redirects\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"rewrites\",\"description\":\"Add rewrites to your Next.js app.\",\"path\":\"canary/app/api-reference/config/next-config-js/rewrites\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"sassOptions\",\"description\":\"Configure Sass options.\",\"path\":\"canary/app/api-reference/config/next-config-js/sassOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverActions\",\"description\":\"Configure Server Actions behavior in your Next.js application.\",\"path\":\"canary/app/api-reference/config/next-config-js/serverActions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverComponentsHmrCache\",\"description\":\"Configure whether fetch responses in Server Components are cached across HMR refresh requests.\",\"path\":\"canary/app/api-reference/config/next-config-js/serverComponentsHmrCache\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"serverExternalPackages\",\"description\":\"Opt-out specific dependencies from the Server Components bundling and use native Node.js `require`.\",\"path\":\"canary/app/api-reference/config/next-config-js/serverExternalPackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"staleTimes\",\"description\":\"Learn how to override the invalidation time of the Client Router Cache.\",\"path\":\"canary/app/api-reference/config/next-config-js/staleTimes\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"staticGeneration*\",\"description\":\"Learn how to configure static generation in your Next.js application.\",\"path\":\"canary/app/api-reference/config/next-config-js/staticGeneration\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"trailingSlash\",\"description\":\"Configure Next.js pages to resolve with or without a trailing slash.\",\"path\":\"canary/app/api-reference/config/next-config-js/trailingSlash\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"transpilePackages\",\"description\":\"Automatically transpile and bundle dependencies from local packages (like monorepos) or from external dependencies (`node_modules`).\",\"path\":\"canary/app/api-reference/config/next-config-js/transpilePackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"turbo\",\"description\":\"Configure Next.js with Turbopack-specific options\",\"path\":\"canary/app/api-reference/config/next-config-js/turbo\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"typedRoutes\",\"description\":\"Enable experimental support for statically typed links.\",\"path\":\"canary/app/api-reference/config/next-config-js/typedRoutes\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"typescript\",\"description\":\"Next.js reports TypeScript errors by default. Learn to opt-out of this behavior here.\",\"path\":\"canary/app/api-reference/config/next-config-js/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"urlImports\",\"description\":\"Configure Next.js to allow importing modules from external URLs.\",\"path\":\"canary/app/api-reference/config/next-config-js/urlImports\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"useLightningcss\",\"description\":\"Enable experimental support for Lightning CSS.\",\"path\":\"canary/app/api-reference/config/next-config-js/useLightningcss\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"webpack\",\"description\":\"Learn how to customize the webpack config used by Next.js\",\"path\":\"canary/app/api-reference/config/next-config-js/webpack\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webVitalsAttribution\",\"description\":\"Learn how to use the webVitalsAttribution option to pinpoint the source of Web Vitals issues.\",\"path\":\"canary/app/api-reference/config/next-config-js/webVitalsAttribution\",\"version\":\"experimental\",\"children\":[]}]},{\"title\":\"TypeScript\",\"description\":\"Next.js provides a TypeScript-first development experience for building your React application.\",\"path\":\"canary/app/api-reference/config/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ESLint\",\"description\":\"Learn how to use and configure the ESLint plugin to catch common issues and problems in a Next.js application.\",\"path\":\"canary/app/api-reference/config/eslint\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"CLI\",\"description\":\"API Reference for the Next.js Command Line Interface (CLI) tools.\",\"path\":\"canary/app/api-reference/cli\",\"version\":\"$undefined\",\"children\":[{\"title\":\"create-next-app\",\"description\":\"Create Next.js apps using one command with the create-next-app CLI.\",\"path\":\"canary/app/api-reference/cli/create-next-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"next CLI\",\"description\":\"Learn how to run and build your application with the Next.js CLI.\",\"path\":\"canary/app/api-reference/cli/next\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Edge Runtime\",\"description\":\"API Reference for the Edge Runtime.\",\"path\":\"canary/app/api-reference/edge\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Getting Started\",\"description\":\"Learn how to create full-stack web applications with Next.js with the Pages Router.\",\"path\":\"canary/pages/getting-started\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Installation\",\"description\":\"How to create a new Next.js application with `create-next-app`. Set up TypeScript, ESLint,and configure your `next.config.js` file.\",\"path\":\"canary/pages/getting-started/installation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Project Structure\",\"description\":\"Learn about the folder and file conventions in a Next.js project, and how to organize your project.\",\"path\":\"canary/pages/getting-started/project-structure\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Building Your Application\",\"description\":\"Learn how to use Next.js features to build your application.\",\"path\":\"canary/pages/building-your-application\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Routing\",\"description\":\"Learn the fundamentals of routing for front-end applications with the Pages Router.\",\"path\":\"canary/pages/building-your-application/routing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Pages and Layouts\",\"description\":\"Create your first page and shared layout with the Pages Router.\",\"path\":\"canary/pages/building-your-application/routing/pages-and-layouts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Dynamic Routes\",\"description\":\"Dynamic Routes are pages that allow you to add custom params to your URLs. Start creating Dynamic Routes and learn more here.\",\"path\":\"canary/pages/building-your-application/routing/dynamic-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Linking and Navigating\",\"description\":\"Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook.\",\"path\":\"canary/pages/building-your-application/routing/linking-and-navigating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Redirecting\",\"description\":\"Learn the different ways to handle redirects in Next.js.\",\"path\":\"canary/pages/building-your-application/routing/redirecting\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom App\",\"description\":\"Control page initialization and add a layout that persists for all pages by overriding the default App component used by Next.js.\",\"path\":\"canary/pages/building-your-application/routing/custom-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Document\",\"description\":\"Extend the default document markup added by Next.js.\",\"path\":\"canary/pages/building-your-application/routing/custom-document\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"API Routes\",\"description\":\"Next.js supports API Routes, which allow you to build your API without leaving your Next.js app. Learn how it works here.\",\"path\":\"canary/pages/building-your-application/routing/api-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Errors\",\"description\":\"Override and extend the built-in Error page to handle custom errors.\",\"path\":\"canary/pages/building-your-application/routing/custom-error\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Internationalization\",\"description\":\"Next.js has built-in support for internationalized routing and language detection. Learn more here.\",\"path\":\"canary/pages/building-your-application/routing/internationalization\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Middleware\",\"description\":\"Learn how to use Middleware to run code before a request is completed.\",\"path\":\"canary/pages/building-your-application/routing/middleware\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Rendering\",\"description\":\"Learn the fundamentals of rendering in React and Next.js.\",\"path\":\"canary/pages/building-your-application/rendering\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Server-side Rendering (SSR)\",\"description\":\"Use Server-side Rendering to render pages on each request.\",\"path\":\"canary/pages/building-your-application/rendering/server-side-rendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Site Generation (SSG)\",\"description\":\"Use Static Site Generation (SSG) to pre-render pages at build time.\",\"path\":\"canary/pages/building-your-application/rendering/static-site-generation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Automatic Static Optimization\",\"description\":\"Next.js automatically optimizes your app to be static HTML whenever possible. Learn how it works here.\",\"path\":\"canary/pages/building-your-application/rendering/automatic-static-optimization\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client-side Rendering (CSR)\",\"description\":\"Learn how to implement client-side rendering in the Pages Router.\",\"path\":\"canary/pages/building-your-application/rendering/client-side-rendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Edge and Node.js Runtimes\",\"description\":\"Learn more about the switchable runtimes (Edge and Node.js) in Next.js.\",\"path\":\"canary/pages/building-your-application/rendering/edge-and-nodejs-runtimes\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Data Fetching\",\"description\":\"Next.js allows you to fetch data in multiple ways, with pre-rendering, server-side rendering or static-site generation, and incremental static regeneration. Learn how to manage your application data in Next.js.\",\"path\":\"canary/pages/building-your-application/data-fetching\",\"version\":\"$undefined\",\"children\":[{\"title\":\"getStaticProps\",\"description\":\"Fetch data and generate static pages with `getStaticProps`. Learn more about this API for data fetching in Next.js.\",\"path\":\"canary/pages/building-your-application/data-fetching/get-static-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticPaths\",\"description\":\"Fetch data and generate static pages with `getStaticPaths`. Learn more about this API for data fetching in Next.js.\",\"path\":\"canary/pages/building-your-application/data-fetching/get-static-paths\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Forms and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"canary/pages/building-your-application/data-fetching/forms-and-mutations\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getServerSideProps\",\"description\":\"Fetch data on each request with `getServerSideProps`.\",\"path\":\"canary/pages/building-your-application/data-fetching/get-server-side-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Incremental Static Regeneration (ISR)\",\"description\":\"Learn how to create or update static pages at runtime with Incremental Static Regeneration.\",\"path\":\"canary/pages/building-your-application/data-fetching/incremental-static-regeneration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client-side Fetching\",\"description\":\"Learn about client-side data fetching, and how to use SWR, a data fetching React hook library that handles caching, revalidation, focus tracking, refetching on interval and more.\",\"path\":\"canary/pages/building-your-application/data-fetching/client-side\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Styling\",\"description\":\"Learn the different ways you can style your Next.js application.\",\"path\":\"canary/pages/building-your-application/styling\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CSS\",\"description\":\"Style your Next.js Application using CSS.\",\"path\":\"canary/pages/building-your-application/styling/css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Tailwind CSS\",\"description\":\"Style your Next.js Application using Tailwind CSS.\",\"path\":\"canary/pages/building-your-application/styling/tailwind-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CSS-in-JS\",\"description\":\"Use CSS-in-JS libraries with Next.js\",\"path\":\"canary/pages/building-your-application/styling/css-in-js\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Sass\",\"description\":\"Learn how to use Sass in your Next.js application.\",\"path\":\"canary/pages/building-your-application/styling/sass\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Optimizing\",\"description\":\"Optimize your Next.js application for best performance and user experience.\",\"path\":\"canary/pages/building-your-application/optimizing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Images\",\"description\":\"Optimize your images with the built-in `next/image` component.\",\"path\":\"canary/pages/building-your-application/optimizing/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fonts\",\"description\":\"Optimize your application's web fonts with the built-in `next/font` loaders.\",\"path\":\"canary/pages/building-your-application/optimizing/fonts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Scripts\",\"description\":\"Optimize 3rd party scripts with the built-in Script component.\",\"path\":\"canary/pages/building-your-application/optimizing/scripts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Assets\",\"description\":\"Next.js allows you to serve static files, like images, in the public directory. You can learn how it works here.\",\"path\":\"canary/pages/building-your-application/optimizing/static-assets\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Bundling\",\"description\":\"Learn how to optimize your application's server and client bundles.\",\"path\":\"canary/pages/building-your-application/optimizing/package-bundling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Analytics\",\"description\":\"Measure and track page performance using Next.js Speed Insights\",\"path\":\"canary/pages/building-your-application/optimizing/analytics\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Lazy Loading\",\"description\":\"Lazy load imported libraries and React Components to improve your application's overall loading performance.\",\"path\":\"canary/pages/building-your-application/optimizing/lazy-loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Instrumentation\",\"description\":\"Learn how to use instrumentation to run code at server startup in your Next.js app\",\"path\":\"canary/pages/building-your-application/optimizing/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"OpenTelemetry\",\"description\":\"Learn how to instrument your Next.js app with OpenTelemetry.\",\"path\":\"canary/pages/building-your-application/optimizing/open-telemetry\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Third Party Libraries\",\"description\":\"Optimize the performance of third-party libraries in your application with the `@next/third-parties` package.\",\"path\":\"canary/pages/building-your-application/optimizing/third-party-libraries\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuring\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"canary/pages/building-your-application/configuring\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Environment Variables\",\"description\":\"Learn to add and access environment variables in your Next.js application.\",\"path\":\"canary/pages/building-your-application/configuring/environment-variables\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"src Directory\",\"description\":\"Save pages under the `src` directory as an alternative to the root `pages` directory.\",\"path\":\"canary/pages/building-your-application/configuring/src-directory\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"MDX\",\"description\":\"Learn how to configure MDX to write JSX in your markdown files.\",\"path\":\"canary/pages/building-your-application/configuring/mdx\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"AMP\",\"description\":\"With minimal config, and without leaving React, you can start adding AMP and improve the performance and speed of your pages.\",\"path\":\"canary/pages/building-your-application/configuring/amp\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Babel\",\"description\":\"Extend the babel preset added by Next.js with your own configs.\",\"path\":\"canary/pages/building-your-application/configuring/babel\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"PostCSS\",\"description\":\"Extend the PostCSS config and plugins added by Next.js with your own.\",\"path\":\"canary/pages/building-your-application/configuring/post-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Server\",\"description\":\"Start a Next.js app programmatically using a custom server.\",\"path\":\"canary/pages/building-your-application/configuring/custom-server\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Draft Mode\",\"description\":\"Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with Pages Router.\",\"path\":\"canary/pages/building-your-application/configuring/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Error Handling\",\"description\":\"Handle errors in your Next.js app.\",\"path\":\"canary/pages/building-your-application/configuring/error-handling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Preview Mode\",\"description\":\"Next.js has the preview mode for statically generated pages. You can learn how it works here.\",\"path\":\"canary/pages/building-your-application/configuring/preview-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Content Security Policy\",\"description\":\"Learn how to set a Content Security Policy (CSP) for your Next.js application.\",\"path\":\"canary/pages/building-your-application/configuring/content-security-policy\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Debugging\",\"description\":\"Learn how to debug your Next.js application with VS Code or Chrome DevTools.\",\"path\":\"canary/pages/building-your-application/configuring/debugging\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Testing\",\"description\":\"Learn how to set up Next.js with three commonly used testing tools — Cypress, Playwright, Vitest, and Jest.\",\"path\":\"canary/pages/building-your-application/testing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Vitest\",\"description\":\"Learn how to set up Next.js with Vitest and React Testing Library - two popular unit testing libraries.\",\"path\":\"canary/pages/building-your-application/testing/vitest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Jest\",\"description\":\"Learn how to set up Next.js with Jest for Unit Testing.\",\"path\":\"canary/pages/building-your-application/testing/jest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Playwright\",\"description\":\"Learn how to set up Next.js with Playwright for End-to-End (E2E) and Integration testing.\",\"path\":\"canary/pages/building-your-application/testing/playwright\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Cypress\",\"description\":\"Learn how to set up Next.js with Cypress for End-to-End (E2E) and Component Testing.\",\"path\":\"canary/pages/building-your-application/testing/cypress\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Authentication\",\"description\":\"Learn how to implement authentication in Next.js, covering best practices, securing routes, authorization techniques, and session management.\",\"path\":\"canary/pages/building-your-application/authentication\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Deploying\",\"description\":\"Learn how to deploy your Next.js app to production, either managed or self-hosted.\",\"path\":\"canary/pages/building-your-application/deploying\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Production Checklist\",\"description\":\"Recommendations to ensure the best performance and user experience before taking your Next.js application to production.\",\"path\":\"canary/pages/building-your-application/deploying/production-checklist\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Exports\",\"description\":\"Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server.\",\"path\":\"canary/pages/building-your-application/deploying/static-exports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Multi-Zones\",\"description\":\"Learn how to build micro-frontends using Next.js Multi-Zones to deploy multiple Next.js apps under a single domain.\",\"path\":\"canary/pages/building-your-application/deploying/multi-zones\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Continuous Integration (CI) Build Caching\",\"description\":\"Learn how to configure CI to cache Next.js builds\",\"path\":\"canary/pages/building-your-application/deploying/ci-build-caching\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Upgrading\",\"description\":\"Learn how to upgrade to the latest versions of Next.js.\",\"path\":\"canary/pages/building-your-application/upgrading\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Codemods\",\"description\":\"Use codemods to upgrade your Next.js codebase when new features are released.\",\"path\":\"canary/pages/building-your-application/upgrading/codemods\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"From Pages to App\",\"description\":\"Learn how to upgrade your existing Next.js application from the Pages Router to the App Router.\",\"path\":\"canary/pages/building-your-application/upgrading/app-router-migration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Vite\",\"description\":\"Learn how to migrate your existing React application from Vite to Next.js.\",\"path\":\"canary/pages/building-your-application/upgrading/from-vite\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Create React App\",\"description\":\"Learn how to migrate your existing React application from Create React App to Next.js.\",\"path\":\"canary/pages/building-your-application/upgrading/from-create-react-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 14\",\"description\":\"Upgrade your Next.js Application from Version 13 to 14.\",\"path\":\"canary/pages/building-your-application/upgrading/version-14\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 13\",\"description\":\"Upgrade your Next.js Application from Version 12 to 13.\",\"path\":\"canary/pages/building-your-application/upgrading/version-13\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 12\",\"description\":\"Upgrade your Next.js Application from Version 11 to Version 12.\",\"path\":\"canary/pages/building-your-application/upgrading/version-12\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 11\",\"description\":\"Upgrade your Next.js Application from Version 10 to Version 11.\",\"path\":\"canary/pages/building-your-application/upgrading/version-11\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 10\",\"description\":\"Upgrade your Next.js Application from Version 9 to Version 10.\",\"path\":\"canary/pages/building-your-application/upgrading/version-10\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 9\",\"description\":\"Upgrade your Next.js Application from Version 8 to Version 9.\",\"path\":\"canary/pages/building-your-application/upgrading/version-9\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"API Reference\",\"description\":\"Next.js API Reference for the Pages Router.\",\"path\":\"canary/pages/api-reference\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Components\",\"description\":\"API Reference for Next.js built-in components in the Pages Router.\",\"path\":\"canary/pages/api-reference/components\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Font\",\"description\":\"API Reference for the Font Module\",\"path\":\"canary/pages/api-reference/components/font\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cForm\u003e\",\"description\":\"Learn how to use the `\u003cForm\u003e` component to handle form submissions and search params updates with client-side navigation.\",\"path\":\"canary/pages/api-reference/components/form\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cHead\u003e\",\"description\":\"Add custom elements to the `head` of your page with the built-in Head component.\",\"path\":\"canary/pages/api-reference/components/head\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e\",\"description\":\"Optimize Images in your Next.js Application using the built-in `next/image` Component.\",\"path\":\"canary/pages/api-reference/components/image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e (Legacy)\",\"description\":\"Backwards compatible Image Optimization with the Legacy Image component.\",\"path\":\"canary/pages/api-reference/components/image-legacy\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cLink\u003e\",\"description\":\"API reference for the \u003cLink\u003e component.\",\"path\":\"canary/pages/api-reference/components/link\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cScript\u003e\",\"description\":\"Optimize third-party scripts in your Next.js application using the built-in `next/script` Component.\",\"path\":\"canary/pages/api-reference/components/script\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Functions\",\"description\":\"API Reference for Functions and Hooks in Pages Router.\",\"path\":\"canary/pages/api-reference/functions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"getInitialProps\",\"description\":\"Fetch dynamic data on the server for your React component with getInitialProps.\",\"path\":\"canary/pages/api-reference/functions/get-initial-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getServerSideProps\",\"description\":\"API reference for `getServerSideProps`. Learn how to fetch data on each request with Next.js.\",\"path\":\"canary/pages/api-reference/functions/get-server-side-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticPaths\",\"description\":\"API reference for `getStaticPaths`. Learn how to fetch data and generate static pages with `getStaticPaths`.\",\"path\":\"canary/pages/api-reference/functions/get-static-paths\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticProps\",\"description\":\"API reference for `getStaticProps`. Learn how to use `getStaticProps` to generate static pages with Next.js.\",\"path\":\"canary/pages/api-reference/functions/get-static-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextRequest\",\"description\":\"API Reference for NextRequest.\",\"path\":\"canary/pages/api-reference/functions/next-request\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextResponse\",\"description\":\"API Reference for NextResponse.\",\"path\":\"canary/pages/api-reference/functions/next-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useAmp\",\"description\":\"Enable AMP in a page, and control the way Next.js adds AMP to the page with the AMP config.\",\"path\":\"canary/pages/api-reference/functions/use-amp\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useReportWebVitals\",\"description\":\"useReportWebVitals\",\"path\":\"canary/pages/api-reference/functions/use-report-web-vitals\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useRouter\",\"description\":\"Learn more about the API of the Next.js Router, and access the router instance in your page with the useRouter hook.\",\"path\":\"canary/pages/api-reference/functions/use-router\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"userAgent\",\"description\":\"The userAgent helper extends the Web Request API with additional properties and methods to interact with the user agent object from the request.\",\"path\":\"canary/pages/api-reference/functions/userAgent\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuration\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"canary/pages/api-reference/config\",\"version\":\"$undefined\",\"children\":[{\"title\":\"next.config.js Options\",\"description\":\"Learn about the options available in next.config.js for the Pages Router.\",\"path\":\"canary/pages/api-reference/config/next-config-js\",\"version\":\"$undefined\",\"children\":[{\"title\":\"assetPrefix\",\"description\":\"Learn how to use the assetPrefix config option to configure your CDN.\",\"path\":\"canary/pages/api-reference/config/next-config-js/assetPrefix\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"basePath\",\"description\":\"Use `basePath` to deploy a Next.js application under a sub-path of a domain.\",\"path\":\"canary/pages/api-reference/config/next-config-js/basePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"bundlePagesRouterDependencies\",\"description\":\"Enable automatic dependency bundling for Pages Router\",\"path\":\"canary/pages/api-reference/config/next-config-js/bundlePagesRouterDependencies\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"compress\",\"description\":\"Next.js provides gzip compression to compress rendered content and static files, it only works with the server target. Learn more about it here.\",\"path\":\"canary/pages/api-reference/config/next-config-js/compress\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"crossOrigin\",\"description\":\"Use the `crossOrigin` option to add a crossOrigin tag on the `script` tags generated by `next/script` and `next/head`.\",\"path\":\"canary/pages/api-reference/config/next-config-js/crossOrigin\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"devIndicators\",\"description\":\"Optimized pages include an indicator to let you know if it's being statically optimized. You can opt-out of it here.\",\"path\":\"canary/pages/api-reference/config/next-config-js/devIndicators\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"distDir\",\"description\":\"Set a custom build directory to use instead of the default .next directory.\",\"path\":\"canary/pages/api-reference/config/next-config-js/distDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"env\",\"description\":\"Learn to add and access environment variables in your Next.js application at build time.\",\"path\":\"canary/pages/api-reference/config/next-config-js/env\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"eslint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"canary/pages/api-reference/config/next-config-js/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"exportPathMap\",\"description\":\"Customize the pages that will be exported as HTML files when using `next export`.\",\"path\":\"canary/pages/api-reference/config/next-config-js/exportPathMap\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateBuildId\",\"description\":\"Configure the build id, which is used to identify the current build in which your application is being served.\",\"path\":\"canary/pages/api-reference/config/next-config-js/generateBuildId\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateEtags\",\"description\":\"Next.js will generate etags for every page by default. Learn more about how to disable etag generation here.\",\"path\":\"canary/pages/api-reference/config/next-config-js/generateEtags\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"Add custom HTTP headers to your Next.js app.\",\"path\":\"canary/pages/api-reference/config/next-config-js/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"httpAgentOptions\",\"description\":\"Next.js will automatically use HTTP Keep-Alive by default. Learn more about how to disable HTTP Keep-Alive here.\",\"path\":\"canary/pages/api-reference/config/next-config-js/httpAgentOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"images\",\"description\":\"Custom configuration for the next/image loader\",\"path\":\"canary/pages/api-reference/config/next-config-js/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"onDemandEntries\",\"description\":\"Configure how Next.js will dispose and keep in memory pages created in development.\",\"path\":\"canary/pages/api-reference/config/next-config-js/onDemandEntries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"optimizePackageImports\",\"description\":\"API Reference for optimizePackageImports Next.js Config Option\",\"path\":\"canary/pages/api-reference/config/next-config-js/optimizePackageImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"output\",\"description\":\"Next.js automatically traces which files are needed by each page to allow for easy deployment of your application. Learn how it works here.\",\"path\":\"canary/pages/api-reference/config/next-config-js/output\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"pageExtensions\",\"description\":\"Extend the default page extensions used by Next.js when resolving pages in the Pages Router.\",\"path\":\"canary/pages/api-reference/config/next-config-js/pageExtensions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"poweredByHeader\",\"description\":\"Next.js will add the `x-powered-by` header by default. Learn to opt-out of it here.\",\"path\":\"canary/pages/api-reference/config/next-config-js/poweredByHeader\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"productionBrowserSourceMaps\",\"description\":\"Enables browser source map generation during the production build.\",\"path\":\"canary/pages/api-reference/config/next-config-js/productionBrowserSourceMaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactStrictMode\",\"description\":\"The complete Next.js runtime is now Strict Mode-compliant, learn how to opt-in\",\"path\":\"canary/pages/api-reference/config/next-config-js/reactStrictMode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirects\",\"description\":\"Add redirects to your Next.js app.\",\"path\":\"canary/pages/api-reference/config/next-config-js/redirects\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"rewrites\",\"description\":\"Add rewrites to your Next.js app.\",\"path\":\"canary/pages/api-reference/config/next-config-js/rewrites\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Runtime Config\",\"description\":\"Add client and server runtime configuration to your Next.js app.\",\"path\":\"canary/pages/api-reference/config/next-config-js/runtime-configuration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverExternalPackages\",\"description\":\"Opt-out specific dependencies from the dependency bundling enabled by `bundlePagesRouterDependencies`.\",\"path\":\"canary/pages/api-reference/config/next-config-js/serverExternalPackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"trailingSlash\",\"description\":\"Configure Next.js pages to resolve with or without a trailing slash.\",\"path\":\"canary/pages/api-reference/config/next-config-js/trailingSlash\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"transpilePackages\",\"description\":\"Automatically transpile and bundle dependencies from local packages (like monorepos) or from external dependencies (`node_modules`).\",\"path\":\"canary/pages/api-reference/config/next-config-js/transpilePackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"turbo\",\"description\":\"Configure Next.js with Turbopack-specific options\",\"path\":\"canary/pages/api-reference/config/next-config-js/turbo\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"typescript\",\"description\":\"Next.js reports TypeScript errors by default. Learn to opt-out of this behavior here.\",\"path\":\"canary/pages/api-reference/config/next-config-js/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"urlImports\",\"description\":\"Configure Next.js to allow importing modules from external URLs.\",\"path\":\"canary/pages/api-reference/config/next-config-js/urlImports\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"useLightningcss\",\"description\":\"Enable experimental support for Lightning CSS.\",\"path\":\"canary/pages/api-reference/config/next-config-js/useLightningcss\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"webpack\",\"description\":\"Learn how to customize the webpack config used by Next.js\",\"path\":\"canary/pages/api-reference/config/next-config-js/webpack\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webVitalsAttribution\",\"description\":\"Learn how to use the webVitalsAttribution option to pinpoint the source of Web Vitals issues.\",\"path\":\"canary/pages/api-reference/config/next-config-js/webVitalsAttribution\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"TypeScript\",\"description\":\"Next.js provides a TypeScript-first development experience for building your React application.\",\"path\":\"canary/pages/api-reference/config/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ESLint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"canary/pages/api-reference/config/eslint\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"CLI\",\"description\":\"API Reference for the Next.js Command Line Interface (CLI) tools.\",\"path\":\"canary/pages/api-reference/cli\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CLI\",\"description\":\"Create Next.js apps using one command with the create-next-app CLI.\",\"path\":\"canary/pages/api-reference/cli/create-next-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"next CLI\",\"description\":\"Learn how to run and build your application with the Next.js CLI.\",\"path\":\"canary/pages/api-reference/cli/next\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Edge Runtime\",\"description\":\"API Reference for the Edge Runtime.\",\"path\":\"canary/pages/api-reference/edge\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Architecture\",\"description\":\"How Next.js Works\",\"path\":\"canary/architecture\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Accessibility\",\"description\":\"The built-in accessibility features of Next.js.\",\"path\":\"canary/architecture/accessibility\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fast Refresh\",\"description\":\"Fast Refresh is a hot module reloading experience that gives you instantaneous feedback on edits made to your React components.\",\"path\":\"canary/architecture/fast-refresh\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Next.js Compiler\",\"description\":\"Next.js Compiler, written in Rust, which transforms and minifies your Next.js application.\",\"path\":\"canary/architecture/nextjs-compiler\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Supported Browsers\",\"description\":\"Browser support and which JavaScript features are supported by Next.js.\",\"path\":\"canary/architecture/supported-browsers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Turbopack\",\"description\":\"Turbopack is an incremental bundler optimized for JavaScript and TypeScript, written in Rust, and built into Next.js.\",\"path\":\"canary/architecture/turbopack\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Community\",\"description\":\"Get involved in the Next.js community.\",\"path\":\"canary/community\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Contribution Guide\",\"description\":\"Learn how to contribute to Next.js Documentation\",\"path\":\"canary/community/contribution-guide\",\"version\":\"$undefined\",\"children\":[]}]}],\"stable\":[{\"title\":\"Getting Started\",\"description\":\"Learn how to create full-stack web applications with the Next.js App Router.\",\"path\":\"app/getting-started\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Installation\",\"description\":\"Learn how to create a new Next.js application with `create-next-app`, and set up TypeScript, ESLint, and Module Path Aliases.\",\"path\":\"app/getting-started/installation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Project Structure\",\"description\":\"Learn about the folder and file conventions in a Next.js project, and how to organize your project.\",\"path\":\"app/getting-started/project-structure\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Building Your Application\",\"description\":\"Learn how to use Next.js features to build your application.\",\"path\":\"app/building-your-application\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Routing\",\"description\":\"Learn the fundamentals of routing for front-end applications.\",\"path\":\"app/building-your-application/routing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Defining Routes\",\"description\":\"Learn how to create your first route in Next.js.\",\"path\":\"app/building-your-application/routing/defining-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Pages\",\"description\":\"Create your first page in Next.js\",\"path\":\"app/building-your-application/routing/pages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Layouts and Templates\",\"description\":\"Create your first shared layout in Next.js.\",\"path\":\"app/building-your-application/routing/layouts-and-templates\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Linking and Navigating\",\"description\":\"Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook.\",\"path\":\"app/building-your-application/routing/linking-and-navigating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Error Handling\",\"description\":\"Learn how to display expected errors and handle uncaught exceptions.\",\"path\":\"app/building-your-application/routing/error-handling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Loading UI and Streaming\",\"description\":\"Built on top of Suspense, Loading UI allows you to create a fallback for specific route segments, and automatically stream content as it becomes ready.\",\"path\":\"app/building-your-application/routing/loading-ui-and-streaming\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Redirecting\",\"description\":\"Learn the different ways to handle redirects in Next.js.\",\"path\":\"app/building-your-application/routing/redirecting\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Groups\",\"description\":\"Route Groups can be used to partition your Next.js application into different sections.\",\"path\":\"app/building-your-application/routing/route-groups\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Dynamic Routes\",\"description\":\"Dynamic Routes can be used to programmatically generate route segments from dynamic data.\",\"path\":\"app/building-your-application/routing/dynamic-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Parallel Routes\",\"description\":\"Simultaneously render one or more pages in the same view that can be navigated independently. A pattern for highly dynamic applications.\",\"path\":\"app/building-your-application/routing/parallel-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Intercepting Routes\",\"description\":\"Use intercepting routes to load a new route within the current layout while masking the browser URL, useful for advanced routing patterns such as modals.\",\"path\":\"app/building-your-application/routing/intercepting-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Handlers\",\"description\":\"Create custom request handlers for a given route using the Web's Request and Response APIs.\",\"path\":\"app/building-your-application/routing/route-handlers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Middleware\",\"description\":\"Learn how to use Middleware to run code before a request is completed.\",\"path\":\"app/building-your-application/routing/middleware\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Internationalization\",\"description\":\"Add support for multiple languages with internationalized routing and localized content.\",\"path\":\"app/building-your-application/routing/internationalization\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Data Fetching\",\"description\":\"Learn how to fetch, cache, revalidate, and mutate data with Next.js.\",\"path\":\"app/building-your-application/data-fetching\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Data Fetching and Caching\",\"description\":\"Learn best practices for fetching data on the server or client in Next.js.\",\"path\":\"app/building-your-application/data-fetching/fetching\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Server Actions and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"app/building-your-application/data-fetching/server-actions-and-mutations\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Incremental Static Regeneration (ISR)\",\"description\":\"Learn how to create or update static pages at runtime with Incremental Static Regeneration.\",\"path\":\"app/building-your-application/data-fetching/incremental-static-regeneration\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Rendering\",\"description\":\"Learn the differences between Next.js rendering environments, strategies, and runtimes.\",\"path\":\"app/building-your-application/rendering\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Server Components\",\"description\":\"Learn how you can use React Server Components to render parts of your application on the server.\",\"path\":\"app/building-your-application/rendering/server-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client Components\",\"description\":\"Learn how to use Client Components to render parts of your application on the client.\",\"path\":\"app/building-your-application/rendering/client-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Composition Patterns\",\"description\":\"Recommended patterns for using Server and Client Components.\",\"path\":\"app/building-your-application/rendering/composition-patterns\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Partial Prerendering\",\"description\":\"Learn how to combine the benefits of static and dynamic rendering with Partial Prerendering.\",\"path\":\"app/building-your-application/rendering/partial-prerendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Runtimes\",\"description\":\"Learn about the switchable runtimes (Edge and Node.js) in Next.js.\",\"path\":\"app/building-your-application/rendering/edge-and-nodejs-runtimes\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Caching\",\"description\":\"An overview of caching mechanisms in Next.js.\",\"path\":\"app/building-your-application/caching\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Styling\",\"description\":\"Learn the different ways you can style your Next.js application.\",\"path\":\"app/building-your-application/styling\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CSS\",\"description\":\"Style your Next.js Application with CSS Modules, Global Styles, and external stylesheets.\",\"path\":\"app/building-your-application/styling/css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Tailwind CSS\",\"description\":\"Style your Next.js Application using Tailwind CSS.\",\"path\":\"app/building-your-application/styling/tailwind-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Sass\",\"description\":\"Style your Next.js application using Sass.\",\"path\":\"app/building-your-application/styling/sass\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CSS-in-JS\",\"description\":\"Use CSS-in-JS libraries with Next.js\",\"path\":\"app/building-your-application/styling/css-in-js\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Optimizing\",\"description\":\"Optimize your Next.js application for best performance and user experience.\",\"path\":\"app/building-your-application/optimizing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Images\",\"description\":\"Optimize your images with the built-in `next/image` component.\",\"path\":\"app/building-your-application/optimizing/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Videos\",\"description\":\"Recommendations and best practices for optimizing videos in your Next.js application.\",\"path\":\"app/building-your-application/optimizing/videos\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fonts\",\"description\":\"Optimize your application's web fonts with the built-in `next/font` loaders.\",\"path\":\"app/building-your-application/optimizing/fonts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Metadata\",\"description\":\"Use the Metadata API to define metadata in any layout or page.\",\"path\":\"app/building-your-application/optimizing/metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Scripts\",\"description\":\"Optimize 3rd party scripts with the built-in Script component.\",\"path\":\"app/building-your-application/optimizing/scripts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Package Bundling\",\"description\":\"Learn how to optimize your application's server and client bundles.\",\"path\":\"app/building-your-application/optimizing/package-bundling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Lazy Loading\",\"description\":\"Lazy load imported libraries and React Components to improve your application's loading performance.\",\"path\":\"app/building-your-application/optimizing/lazy-loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Analytics\",\"description\":\"Measure and track page performance using Next.js Speed Insights\",\"path\":\"app/building-your-application/optimizing/analytics\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Instrumentation\",\"description\":\"Learn how to use instrumentation to run code at server startup in your Next.js app\",\"path\":\"app/building-your-application/optimizing/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"OpenTelemetry\",\"description\":\"Learn how to instrument your Next.js app with OpenTelemetry.\",\"path\":\"app/building-your-application/optimizing/open-telemetry\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Assets\",\"description\":\"Next.js allows you to serve static files, like images, in the public directory. You can learn how it works here.\",\"path\":\"app/building-your-application/optimizing/static-assets\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Third Party Libraries\",\"description\":\"Optimize the performance of third-party libraries in your application with the `@next/third-parties` package.\",\"path\":\"app/building-your-application/optimizing/third-party-libraries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Memory Usage\",\"description\":\"Optimize memory used by your application in development and production.\",\"path\":\"app/building-your-application/optimizing/memory-usage\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuring\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"app/building-your-application/configuring\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Environment Variables\",\"description\":\"Learn to add and access environment variables in your Next.js application.\",\"path\":\"app/building-your-application/configuring/environment-variables\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"MDX\",\"description\":\"Learn how to configure MDX and use it in your Next.js apps.\",\"path\":\"app/building-your-application/configuring/mdx\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"src Directory\",\"description\":\"Save pages under the `src` directory as an alternative to the root `pages` directory.\",\"path\":\"app/building-your-application/configuring/src-directory\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Server\",\"description\":\"Start a Next.js app programmatically using a custom server.\",\"path\":\"app/building-your-application/configuring/custom-server\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Draft Mode\",\"description\":\"Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with App Router here.\",\"path\":\"app/building-your-application/configuring/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Content Security Policy\",\"description\":\"Learn how to set a Content Security Policy (CSP) for your Next.js application.\",\"path\":\"app/building-your-application/configuring/content-security-policy\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Debugging\",\"description\":\"Learn how to debug your Next.js application with VS Code, Chrome DevTools, or Firefox DevTools.\",\"path\":\"app/building-your-application/configuring/debugging\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Progressive Web Applications (PWA)\",\"description\":\"Learn how to build a Progressive Web Application (PWA) with Next.js.\",\"path\":\"app/building-your-application/configuring/progressive-web-apps\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Testing\",\"description\":\"Learn how to set up Next.js with four commonly used testing tools — Cypress, Playwright, Vitest, and Jest.\",\"path\":\"app/building-your-application/testing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Vitest\",\"description\":\"Learn how to set up Vitest with Next.js for Unit Testing.\",\"path\":\"app/building-your-application/testing/vitest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Jest\",\"description\":\"Learn how to set up Jest with Next.js for Unit Testing and Snapshot Testing.\",\"path\":\"app/building-your-application/testing/jest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Playwright\",\"description\":\"Learn how to set up Playwright with Next.js for End-to-End (E2E) Testing.\",\"path\":\"app/building-your-application/testing/playwright\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Cypress\",\"description\":\"Learn how to set up Cypress with Next.js for End-to-End (E2E) and Component Testing.\",\"path\":\"app/building-your-application/testing/cypress\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Authentication\",\"description\":\"Learn how to implement authentication in your Next.js application.\",\"path\":\"app/building-your-application/authentication\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Deploying\",\"description\":\"Learn how to deploy your Next.js app to production, either managed or self-hosted.\",\"path\":\"app/building-your-application/deploying\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Production Checklist\",\"description\":\"Recommendations to ensure the best performance and user experience before taking your Next.js application to production.\",\"path\":\"app/building-your-application/deploying/production-checklist\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Exports\",\"description\":\"Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server.\",\"path\":\"app/building-your-application/deploying/static-exports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Multi-Zones\",\"description\":\"Learn how to build micro-frontends using Next.js Multi-Zones to deploy multiple Next.js apps under a single domain.\",\"path\":\"app/building-your-application/deploying/multi-zones\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Upgrading\",\"description\":\"Learn how to upgrade to the latest versions of Next.js.\",\"path\":\"app/building-your-application/upgrading\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Codemods\",\"description\":\"Use codemods to upgrade your Next.js codebase when new features are released.\",\"path\":\"app/building-your-application/upgrading/codemods\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 15\",\"description\":\"Upgrade your Next.js Application from Version 14 to 15.\",\"path\":\"app/building-your-application/upgrading/version-15\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 14\",\"description\":\"Upgrade your Next.js Application from Version 13 to 14.\",\"path\":\"app/building-your-application/upgrading/version-14\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"App Router Migration\",\"description\":\"Learn how to upgrade your existing Next.js application from the Pages Router to the App Router.\",\"path\":\"app/building-your-application/upgrading/app-router-migration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Create React App\",\"description\":\"Learn how to migrate your existing React application from Create React App to Next.js.\",\"path\":\"app/building-your-application/upgrading/from-create-react-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Vite\",\"description\":\"Learn how to migrate your existing React application from Vite to Next.js.\",\"path\":\"app/building-your-application/upgrading/from-vite\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Examples\",\"description\":\"Examples of popular Next.js UI patterns and use cases.\",\"path\":\"app/building-your-application/examples\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"API Reference\",\"description\":\"Next.js API Reference for the App Router.\",\"path\":\"app/api-reference\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Directives\",\"description\":\"Directives are used to modify the behavior of your Next.js application.\",\"path\":\"app/api-reference/directives\",\"version\":\"$undefined\",\"children\":[{\"title\":\"use client\",\"description\":\"Learn how to use the use client directive to render a component on the client.\",\"path\":\"app/api-reference/directives/use-client\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"use server\",\"description\":\"Learn how to use the use server directive to execute code on the server.\",\"path\":\"app/api-reference/directives/use-server\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Components\",\"description\":\"API Reference for Next.js built-in components.\",\"path\":\"app/api-reference/components\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Font\",\"description\":\"Optimizing loading web fonts with the built-in `next/font` loaders.\",\"path\":\"app/api-reference/components/font\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cForm\u003e\",\"description\":\"Learn how to use the `\u003cForm\u003e` component to handle form submissions and search params updates with client-side navigation.\",\"path\":\"app/api-reference/components/form\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e\",\"description\":\"Optimize Images in your Next.js Application using the built-in `next/image` Component.\",\"path\":\"app/api-reference/components/image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cLink\u003e\",\"description\":\"Enable fast client-side navigation with the built-in `next/link` component.\",\"path\":\"app/api-reference/components/link\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cScript\u003e\",\"description\":\"Optimize third-party scripts in your Next.js application using the built-in `next/script` Component.\",\"path\":\"app/api-reference/components/script\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"File Conventions\",\"description\":\"API Reference for Next.js Special Files.\",\"path\":\"app/api-reference/file-conventions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"default.js\",\"description\":\"API Reference for the default.js file.\",\"path\":\"app/api-reference/file-conventions/default\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"error.js\",\"description\":\"API reference for the error.js special file.\",\"path\":\"app/api-reference/file-conventions/error\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"instrumentation.js\",\"description\":\"API reference for the instrumentation.js file.\",\"path\":\"app/api-reference/file-conventions/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"layout.js\",\"description\":\"API reference for the layout.js file.\",\"path\":\"app/api-reference/file-conventions/layout\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"loading.js\",\"description\":\"API reference for the loading.js file.\",\"path\":\"app/api-reference/file-conventions/loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"mdx-components.js\",\"description\":\"API reference for the mdx-components.js file.\",\"path\":\"app/api-reference/file-conventions/mdx-components\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"middleware.js\",\"description\":\"API reference for the middleware.js file.\",\"path\":\"app/api-reference/file-conventions/middleware\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"not-found.js\",\"description\":\"API reference for the not-found.js file.\",\"path\":\"app/api-reference/file-conventions/not-found\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"page.js\",\"description\":\"API reference for the page.js file.\",\"path\":\"app/api-reference/file-conventions/page\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"route.js\",\"description\":\"API reference for the route.js special file.\",\"path\":\"app/api-reference/file-conventions/route\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Route Segment Config\",\"description\":\"Learn about how to configure options for Next.js route segments.\",\"path\":\"app/api-reference/file-conventions/route-segment-config\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"template.js\",\"description\":\"API Reference for the template.js file.\",\"path\":\"app/api-reference/file-conventions/template\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Metadata Files\",\"description\":\"API documentation for the metadata file conventions.\",\"path\":\"app/api-reference/file-conventions/metadata\",\"version\":\"$undefined\",\"children\":[{\"title\":\"favicon, icon, and apple-icon\",\"description\":\"API Reference for the Favicon, Icon and Apple Icon file conventions.\",\"path\":\"app/api-reference/file-conventions/metadata/app-icons\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"manifest.json\",\"description\":\"API Reference for manifest.json file.\",\"path\":\"app/api-reference/file-conventions/metadata/manifest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"opengraph-image and twitter-image\",\"description\":\"API Reference for the Open Graph Image and Twitter Image file conventions.\",\"path\":\"app/api-reference/file-conventions/metadata/opengraph-image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"robots.txt\",\"description\":\"API Reference for robots.txt file.\",\"path\":\"app/api-reference/file-conventions/metadata/robots\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"sitemap.xml\",\"description\":\"API Reference for the sitemap.xml file.\",\"path\":\"app/api-reference/file-conventions/metadata/sitemap\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"Functions\",\"description\":\"API Reference for Next.js Functions and Hooks.\",\"path\":\"app/api-reference/functions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"connection\",\"description\":\"API Reference for the connection function.\",\"path\":\"app/api-reference/functions/connection\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"cookies\",\"description\":\"API Reference for the cookies function.\",\"path\":\"app/api-reference/functions/cookies\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"draftMode\",\"description\":\"API Reference for the draftMode function.\",\"path\":\"app/api-reference/functions/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"fetch\",\"description\":\"API reference for the extended fetch function.\",\"path\":\"app/api-reference/functions/fetch\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateImageMetadata\",\"description\":\"Learn how to generate multiple images in a single Metadata API special file.\",\"path\":\"app/api-reference/functions/generate-image-metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateMetadata\",\"description\":\"Learn how to add Metadata to your Next.js application for improved search engine optimization (SEO) and web shareability.\",\"path\":\"app/api-reference/functions/generate-metadata\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateSitemaps\",\"description\":\"Learn how to use the generateSiteMaps function to create multiple sitemaps for your application.\",\"path\":\"app/api-reference/functions/generate-sitemaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateStaticParams\",\"description\":\"API reference for the generateStaticParams function.\",\"path\":\"app/api-reference/functions/generate-static-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateViewport\",\"description\":\"API Reference for the generateViewport function.\",\"path\":\"app/api-reference/functions/generate-viewport\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"API reference for the headers function.\",\"path\":\"app/api-reference/functions/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ImageResponse\",\"description\":\"API Reference for the ImageResponse constructor.\",\"path\":\"app/api-reference/functions/image-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextRequest\",\"description\":\"API Reference for NextRequest.\",\"path\":\"app/api-reference/functions/next-request\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextResponse\",\"description\":\"API Reference for NextResponse.\",\"path\":\"app/api-reference/functions/next-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"notFound\",\"description\":\"API Reference for the notFound function.\",\"path\":\"app/api-reference/functions/not-found\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"permanentRedirect\",\"description\":\"API Reference for the permanentRedirect function.\",\"path\":\"app/api-reference/functions/permanentRedirect\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirect\",\"description\":\"API Reference for the redirect function.\",\"path\":\"app/api-reference/functions/redirect\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"revalidatePath\",\"description\":\"API Reference for the revalidatePath function.\",\"path\":\"app/api-reference/functions/revalidatePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"revalidateTag\",\"description\":\"API Reference for the revalidateTag function.\",\"path\":\"app/api-reference/functions/revalidateTag\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"unstable_after\",\"description\":\"API Reference for the after function.\",\"path\":\"app/api-reference/functions/unstable_after\",\"version\":\"unstable\",\"children\":[]},{\"title\":\"unstable_cache\",\"description\":\"API Reference for the unstable_cache function.\",\"path\":\"app/api-reference/functions/unstable_cache\",\"version\":\"legacy\",\"children\":[]},{\"title\":\"unstable_noStore\",\"description\":\"API Reference for the unstable_noStore function.\",\"path\":\"app/api-reference/functions/unstable_noStore\",\"version\":\"legacy\",\"children\":[]},{\"title\":\"unstable_rethrow\",\"description\":\"API Reference for the unstable_rethrow function.\",\"path\":\"app/api-reference/functions/unstable_rethrow\",\"version\":\"unstable\",\"children\":[]},{\"title\":\"useParams\",\"description\":\"API Reference for the useParams hook.\",\"path\":\"app/api-reference/functions/use-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"usePathname\",\"description\":\"API Reference for the usePathname hook.\",\"path\":\"app/api-reference/functions/use-pathname\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useReportWebVitals\",\"description\":\"API Reference for the useReportWebVitals function.\",\"path\":\"app/api-reference/functions/use-report-web-vitals\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useRouter\",\"description\":\"API reference for the useRouter hook.\",\"path\":\"app/api-reference/functions/use-router\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSearchParams\",\"description\":\"API Reference for the useSearchParams hook.\",\"path\":\"app/api-reference/functions/use-search-params\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSelectedLayoutSegment\",\"description\":\"API Reference for the useSelectedLayoutSegment hook.\",\"path\":\"app/api-reference/functions/use-selected-layout-segment\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useSelectedLayoutSegments\",\"description\":\"API Reference for the useSelectedLayoutSegments hook.\",\"path\":\"app/api-reference/functions/use-selected-layout-segments\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"userAgent\",\"description\":\"The userAgent helper extends the Web Request API with additional properties and methods to interact with the user agent object from the request.\",\"path\":\"app/api-reference/functions/userAgent\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"next.config.js Options\",\"description\":\"Learn how to configure your application with next.config.js.\",\"path\":\"app/api-reference/next-config-js\",\"version\":\"$undefined\",\"children\":[{\"title\":\"appDir\",\"description\":\"Enable the App Router to use layouts, streaming, and more.\",\"path\":\"app/api-reference/next-config-js/appDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"assetPrefix\",\"description\":\"Learn how to use the assetPrefix config option to configure your CDN.\",\"path\":\"app/api-reference/next-config-js/assetPrefix\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"basePath\",\"description\":\"Use `basePath` to deploy a Next.js application under a sub-path of a domain.\",\"path\":\"app/api-reference/next-config-js/basePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"compress\",\"description\":\"Next.js provides gzip compression to compress rendered content and static files, it only works with the server target. Learn more about it here.\",\"path\":\"app/api-reference/next-config-js/compress\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"crossOrigin\",\"description\":\"Use the `crossOrigin` option to add a crossOrigin tag on the `script` tags generated by `next/script`.\",\"path\":\"app/api-reference/next-config-js/crossOrigin\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"cssChunking\",\"description\":\"Use the `cssChunking` option to control how CSS files are chunked in your Next.js application.\",\"path\":\"app/api-reference/next-config-js/cssChunking\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"devIndicators\",\"description\":\"Optimized pages include an indicator to let you know if it's being statically optimized. You can opt-out of it here.\",\"path\":\"app/api-reference/next-config-js/devIndicators\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"distDir\",\"description\":\"Set a custom build directory to use instead of the default .next directory.\",\"path\":\"app/api-reference/next-config-js/distDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"env\",\"description\":\"Learn to add and access environment variables in your Next.js application at build time.\",\"path\":\"app/api-reference/next-config-js/env\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"eslint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"app/api-reference/next-config-js/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"expireTime\",\"description\":\"Customize stale-while-revalidate expire time for ISR enabled pages.\",\"path\":\"app/api-reference/next-config-js/expireTime\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"exportPathMap\",\"description\":\"Customize the pages that will be exported as HTML files when using `next export`.\",\"path\":\"app/api-reference/next-config-js/exportPathMap\",\"version\":\"legacy\",\"children\":[]},{\"title\":\"generateBuildId\",\"description\":\"Configure the build id, which is used to identify the current build in which your application is being served.\",\"path\":\"app/api-reference/next-config-js/generateBuildId\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateEtags\",\"description\":\"Next.js will generate etags for every page by default. Learn more about how to disable etag generation here.\",\"path\":\"app/api-reference/next-config-js/generateEtags\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"Add custom HTTP headers to your Next.js app.\",\"path\":\"app/api-reference/next-config-js/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"httpAgentOptions\",\"description\":\"Next.js will automatically use HTTP Keep-Alive by default. Learn more about how to disable HTTP Keep-Alive here.\",\"path\":\"app/api-reference/next-config-js/httpAgentOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"images\",\"description\":\"Custom configuration for the next/image loader\",\"path\":\"app/api-reference/next-config-js/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"cacheHandler\",\"description\":\"Configure the Next.js cache used for storing and revalidating data to use any external service like Redis, Memcached, or others.\",\"path\":\"app/api-reference/next-config-js/incrementalCacheHandlerPath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"logging\",\"description\":\"Configure how data fetches are logged to the console when running Next.js in development mode.\",\"path\":\"app/api-reference/next-config-js/logging\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"mdxRs\",\"description\":\"Use the new Rust compiler to compile MDX files in the App Router.\",\"path\":\"app/api-reference/next-config-js/mdxRs\",\"version\":\"experimental.\",\"children\":[]},{\"title\":\"onDemandEntries\",\"description\":\"Configure how Next.js will dispose and keep in memory pages created in development.\",\"path\":\"app/api-reference/next-config-js/onDemandEntries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"optimizePackageImports\",\"description\":\"API Reference for optimizePackageImports Next.js Config Option\",\"path\":\"app/api-reference/next-config-js/optimizePackageImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"output\",\"description\":\"Next.js automatically traces which files are needed by each page to allow for easy deployment of your application. Learn how it works here.\",\"path\":\"app/api-reference/next-config-js/output\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"pageExtensions\",\"description\":\"Extend the default page extensions used by Next.js when resolving pages in the Pages Router.\",\"path\":\"app/api-reference/next-config-js/pageExtensions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"poweredByHeader\",\"description\":\"Next.js will add the `x-powered-by` header by default. Learn to opt-out of it here.\",\"path\":\"app/api-reference/next-config-js/poweredByHeader\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"ppr\",\"description\":\"Learn how to enable Partial Prerendering in Next.js.\",\"path\":\"app/api-reference/next-config-js/ppr\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"productionBrowserSourceMaps\",\"description\":\"Enables browser source map generation during the production build.\",\"path\":\"app/api-reference/next-config-js/productionBrowserSourceMaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactCompiler\",\"description\":\"Enable the React Compiler to automatically optimize component rendering.\",\"path\":\"app/api-reference/next-config-js/reactCompiler\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"reactMaxHeadersLength\",\"description\":\"The maximum length of the headers that are emitted by React and added to the response.\",\"path\":\"app/api-reference/next-config-js/reactMaxHeadersLength\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactStrictMode\",\"description\":\"The complete Next.js runtime is now Strict Mode-compliant, learn how to opt-in\",\"path\":\"app/api-reference/next-config-js/reactStrictMode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirects\",\"description\":\"Add redirects to your Next.js app.\",\"path\":\"app/api-reference/next-config-js/redirects\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"rewrites\",\"description\":\"Add rewrites to your Next.js app.\",\"path\":\"app/api-reference/next-config-js/rewrites\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"sassOptions\",\"description\":\"Configure Sass options.\",\"path\":\"app/api-reference/next-config-js/sassOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverActions\",\"description\":\"Configure Server Actions behavior in your Next.js application.\",\"path\":\"app/api-reference/next-config-js/serverActions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverComponentsHmrCache\",\"description\":\"Configure whether fetch responses in Server Components are cached across HMR refresh requests.\",\"path\":\"app/api-reference/next-config-js/serverComponentsHmrCache\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"serverExternalPackages\",\"description\":\"Opt-out specific dependencies from the Server Components bundling and use native Node.js `require`.\",\"path\":\"app/api-reference/next-config-js/serverExternalPackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"staleTimes\",\"description\":\"Learn how to override the invalidation time of the Client Router Cache.\",\"path\":\"app/api-reference/next-config-js/staleTimes\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"staticGeneration*\",\"description\":\"Learn how to configure static generation in your Next.js application.\",\"path\":\"app/api-reference/next-config-js/staticGeneration\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"trailingSlash\",\"description\":\"Configure Next.js pages to resolve with or without a trailing slash.\",\"path\":\"app/api-reference/next-config-js/trailingSlash\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"transpilePackages\",\"description\":\"Automatically transpile and bundle dependencies from local packages (like monorepos) or from external dependencies (`node_modules`).\",\"path\":\"app/api-reference/next-config-js/transpilePackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"turbo\",\"description\":\"Configure Next.js with Turbopack-specific options\",\"path\":\"app/api-reference/next-config-js/turbo\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"typedRoutes\",\"description\":\"Enable experimental support for statically typed links.\",\"path\":\"app/api-reference/next-config-js/typedRoutes\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"typescript\",\"description\":\"Next.js reports TypeScript errors by default. Learn to opt-out of this behavior here.\",\"path\":\"app/api-reference/next-config-js/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"urlImports\",\"description\":\"Configure Next.js to allow importing modules from external URLs.\",\"path\":\"app/api-reference/next-config-js/urlImports\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"useLightningcss\",\"description\":\"Enable experimental support for Lightning CSS.\",\"path\":\"app/api-reference/next-config-js/useLightningcss\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"webpack\",\"description\":\"Learn how to customize the webpack config used by Next.js\",\"path\":\"app/api-reference/next-config-js/webpack\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webVitalsAttribution\",\"description\":\"Learn how to use the webVitalsAttribution option to pinpoint the source of Web Vitals issues.\",\"path\":\"app/api-reference/next-config-js/webVitalsAttribution\",\"version\":\"experimental\",\"children\":[]}]},{\"title\":\"CLI\",\"description\":\"API Reference for the Next.js Command Line Interface (CLI) tools.\",\"path\":\"app/api-reference/cli\",\"version\":\"$undefined\",\"children\":[{\"title\":\"create-next-app\",\"description\":\"Create Next.js apps using one command with the create-next-app CLI.\",\"path\":\"app/api-reference/cli/create-next-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"next CLI\",\"description\":\"Learn how to run and build your application with the Next.js CLI.\",\"path\":\"app/api-reference/cli/next\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Edge Runtime\",\"description\":\"API Reference for the Edge Runtime.\",\"path\":\"app/api-reference/edge\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Getting Started\",\"description\":\"Learn how to create full-stack web applications with Next.js with the Pages Router.\",\"path\":\"pages/getting-started\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Installation\",\"description\":\"How to create a new Next.js application with `create-next-app`. Set up TypeScript, ESLint,and configure your `next.config.js` file.\",\"path\":\"pages/getting-started/installation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Project Structure\",\"description\":\"Learn about the folder and file conventions in a Next.js project, and how to organize your project.\",\"path\":\"pages/getting-started/project-structure\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Building Your Application\",\"description\":\"Learn how to use Next.js features to build your application.\",\"path\":\"pages/building-your-application\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Routing\",\"description\":\"Learn the fundamentals of routing for front-end applications with the Pages Router.\",\"path\":\"pages/building-your-application/routing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Pages and Layouts\",\"description\":\"Create your first page and shared layout with the Pages Router.\",\"path\":\"pages/building-your-application/routing/pages-and-layouts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Dynamic Routes\",\"description\":\"Dynamic Routes are pages that allow you to add custom params to your URLs. Start creating Dynamic Routes and learn more here.\",\"path\":\"pages/building-your-application/routing/dynamic-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Linking and Navigating\",\"description\":\"Learn how navigation works in Next.js, and how to use the Link Component and `useRouter` hook.\",\"path\":\"pages/building-your-application/routing/linking-and-navigating\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Redirecting\",\"description\":\"Learn the different ways to handle redirects in Next.js.\",\"path\":\"pages/building-your-application/routing/redirecting\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom App\",\"description\":\"Control page initialization and add a layout that persists for all pages by overriding the default App component used by Next.js.\",\"path\":\"pages/building-your-application/routing/custom-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Document\",\"description\":\"Extend the default document markup added by Next.js.\",\"path\":\"pages/building-your-application/routing/custom-document\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"API Routes\",\"description\":\"Next.js supports API Routes, which allow you to build your API without leaving your Next.js app. Learn how it works here.\",\"path\":\"pages/building-your-application/routing/api-routes\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Errors\",\"description\":\"Override and extend the built-in Error page to handle custom errors.\",\"path\":\"pages/building-your-application/routing/custom-error\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Internationalization\",\"description\":\"Next.js has built-in support for internationalized routing and language detection. Learn more here.\",\"path\":\"pages/building-your-application/routing/internationalization\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Middleware\",\"description\":\"Learn how to use Middleware to run code before a request is completed.\",\"path\":\"pages/building-your-application/routing/middleware\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Rendering\",\"description\":\"Learn the fundamentals of rendering in React and Next.js.\",\"path\":\"pages/building-your-application/rendering\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Server-side Rendering (SSR)\",\"description\":\"Use Server-side Rendering to render pages on each request.\",\"path\":\"pages/building-your-application/rendering/server-side-rendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Site Generation (SSG)\",\"description\":\"Use Static Site Generation (SSG) to pre-render pages at build time.\",\"path\":\"pages/building-your-application/rendering/static-site-generation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Automatic Static Optimization\",\"description\":\"Next.js automatically optimizes your app to be static HTML whenever possible. Learn how it works here.\",\"path\":\"pages/building-your-application/rendering/automatic-static-optimization\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client-side Rendering (CSR)\",\"description\":\"Learn how to implement client-side rendering in the Pages Router.\",\"path\":\"pages/building-your-application/rendering/client-side-rendering\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Edge and Node.js Runtimes\",\"description\":\"Learn more about the switchable runtimes (Edge and Node.js) in Next.js.\",\"path\":\"pages/building-your-application/rendering/edge-and-nodejs-runtimes\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Data Fetching\",\"description\":\"Next.js allows you to fetch data in multiple ways, with pre-rendering, server-side rendering or static-site generation, and incremental static regeneration. Learn how to manage your application data in Next.js.\",\"path\":\"pages/building-your-application/data-fetching\",\"version\":\"$undefined\",\"children\":[{\"title\":\"getStaticProps\",\"description\":\"Fetch data and generate static pages with `getStaticProps`. Learn more about this API for data fetching in Next.js.\",\"path\":\"pages/building-your-application/data-fetching/get-static-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticPaths\",\"description\":\"Fetch data and generate static pages with `getStaticPaths`. Learn more about this API for data fetching in Next.js.\",\"path\":\"pages/building-your-application/data-fetching/get-static-paths\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Forms and Mutations\",\"description\":\"Learn how to handle form submissions and data mutations with Next.js.\",\"path\":\"pages/building-your-application/data-fetching/forms-and-mutations\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getServerSideProps\",\"description\":\"Fetch data on each request with `getServerSideProps`.\",\"path\":\"pages/building-your-application/data-fetching/get-server-side-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Incremental Static Regeneration (ISR)\",\"description\":\"Learn how to create or update static pages at runtime with Incremental Static Regeneration.\",\"path\":\"pages/building-your-application/data-fetching/incremental-static-regeneration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Client-side Fetching\",\"description\":\"Learn about client-side data fetching, and how to use SWR, a data fetching React hook library that handles caching, revalidation, focus tracking, refetching on interval and more.\",\"path\":\"pages/building-your-application/data-fetching/client-side\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Styling\",\"description\":\"Learn the different ways you can style your Next.js application.\",\"path\":\"pages/building-your-application/styling\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CSS\",\"description\":\"Style your Next.js Application using CSS.\",\"path\":\"pages/building-your-application/styling/css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Tailwind CSS\",\"description\":\"Style your Next.js Application using Tailwind CSS.\",\"path\":\"pages/building-your-application/styling/tailwind-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CSS-in-JS\",\"description\":\"Use CSS-in-JS libraries with Next.js\",\"path\":\"pages/building-your-application/styling/css-in-js\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Sass\",\"description\":\"Learn how to use Sass in your Next.js application.\",\"path\":\"pages/building-your-application/styling/sass\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Optimizing\",\"description\":\"Optimize your Next.js application for best performance and user experience.\",\"path\":\"pages/building-your-application/optimizing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Images\",\"description\":\"Optimize your images with the built-in `next/image` component.\",\"path\":\"pages/building-your-application/optimizing/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fonts\",\"description\":\"Optimize your application's web fonts with the built-in `next/font` loaders.\",\"path\":\"pages/building-your-application/optimizing/fonts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Scripts\",\"description\":\"Optimize 3rd party scripts with the built-in Script component.\",\"path\":\"pages/building-your-application/optimizing/scripts\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Assets\",\"description\":\"Next.js allows you to serve static files, like images, in the public directory. You can learn how it works here.\",\"path\":\"pages/building-your-application/optimizing/static-assets\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Bundling\",\"description\":\"Learn how to optimize your application's server and client bundles.\",\"path\":\"pages/building-your-application/optimizing/package-bundling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Analytics\",\"description\":\"Measure and track page performance using Next.js Speed Insights\",\"path\":\"pages/building-your-application/optimizing/analytics\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Lazy Loading\",\"description\":\"Lazy load imported libraries and React Components to improve your application's overall loading performance.\",\"path\":\"pages/building-your-application/optimizing/lazy-loading\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Instrumentation\",\"description\":\"Learn how to use instrumentation to run code at server startup in your Next.js app\",\"path\":\"pages/building-your-application/optimizing/instrumentation\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"OpenTelemetry\",\"description\":\"Learn how to instrument your Next.js app with OpenTelemetry.\",\"path\":\"pages/building-your-application/optimizing/open-telemetry\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Third Party Libraries\",\"description\":\"Optimize the performance of third-party libraries in your application with the `@next/third-parties` package.\",\"path\":\"pages/building-your-application/optimizing/third-party-libraries\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Configuring\",\"description\":\"Learn how to configure your Next.js application.\",\"path\":\"pages/building-your-application/configuring\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Environment Variables\",\"description\":\"Learn to add and access environment variables in your Next.js application.\",\"path\":\"pages/building-your-application/configuring/environment-variables\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"src Directory\",\"description\":\"Save pages under the `src` directory as an alternative to the root `pages` directory.\",\"path\":\"pages/building-your-application/configuring/src-directory\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"MDX\",\"description\":\"Learn how to configure MDX to write JSX in your markdown files.\",\"path\":\"pages/building-your-application/configuring/mdx\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"AMP\",\"description\":\"With minimal config, and without leaving React, you can start adding AMP and improve the performance and speed of your pages.\",\"path\":\"pages/building-your-application/configuring/amp\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Babel\",\"description\":\"Extend the babel preset added by Next.js with your own configs.\",\"path\":\"pages/building-your-application/configuring/babel\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"PostCSS\",\"description\":\"Extend the PostCSS config and plugins added by Next.js with your own.\",\"path\":\"pages/building-your-application/configuring/post-css\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Custom Server\",\"description\":\"Start a Next.js app programmatically using a custom server.\",\"path\":\"pages/building-your-application/configuring/custom-server\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Draft Mode\",\"description\":\"Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with Pages Router.\",\"path\":\"pages/building-your-application/configuring/draft-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Error Handling\",\"description\":\"Handle errors in your Next.js app.\",\"path\":\"pages/building-your-application/configuring/error-handling\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Preview Mode\",\"description\":\"Next.js has the preview mode for statically generated pages. You can learn how it works here.\",\"path\":\"pages/building-your-application/configuring/preview-mode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Content Security Policy\",\"description\":\"Learn how to set a Content Security Policy (CSP) for your Next.js application.\",\"path\":\"pages/building-your-application/configuring/content-security-policy\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Debugging\",\"description\":\"Learn how to debug your Next.js application with VS Code or Chrome DevTools.\",\"path\":\"pages/building-your-application/configuring/debugging\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Testing\",\"description\":\"Learn how to set up Next.js with three commonly used testing tools — Cypress, Playwright, Vitest, and Jest.\",\"path\":\"pages/building-your-application/testing\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Vitest\",\"description\":\"Learn how to set up Next.js with Vitest and React Testing Library - two popular unit testing libraries.\",\"path\":\"pages/building-your-application/testing/vitest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Jest\",\"description\":\"Learn how to set up Next.js with Jest for Unit Testing.\",\"path\":\"pages/building-your-application/testing/jest\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Playwright\",\"description\":\"Learn how to set up Next.js with Playwright for End-to-End (E2E) and Integration testing.\",\"path\":\"pages/building-your-application/testing/playwright\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Cypress\",\"description\":\"Learn how to set up Next.js with Cypress for End-to-End (E2E) and Component Testing.\",\"path\":\"pages/building-your-application/testing/cypress\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Authentication\",\"description\":\"Learn how to implement authentication in Next.js, covering best practices, securing routes, authorization techniques, and session management.\",\"path\":\"pages/building-your-application/authentication\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Deploying\",\"description\":\"Learn how to deploy your Next.js app to production, either managed or self-hosted.\",\"path\":\"pages/building-your-application/deploying\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Production Checklist\",\"description\":\"Recommendations to ensure the best performance and user experience before taking your Next.js application to production.\",\"path\":\"pages/building-your-application/deploying/production-checklist\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Static Exports\",\"description\":\"Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server.\",\"path\":\"pages/building-your-application/deploying/static-exports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Multi-Zones\",\"description\":\"Learn how to build micro-frontends using Next.js Multi-Zones to deploy multiple Next.js apps under a single domain.\",\"path\":\"pages/building-your-application/deploying/multi-zones\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Continuous Integration (CI) Build Caching\",\"description\":\"Learn how to configure CI to cache Next.js builds\",\"path\":\"pages/building-your-application/deploying/ci-build-caching\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Upgrading\",\"description\":\"Learn how to upgrade to the latest versions of Next.js.\",\"path\":\"pages/building-your-application/upgrading\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Codemods\",\"description\":\"Use codemods to upgrade your Next.js codebase when new features are released.\",\"path\":\"pages/building-your-application/upgrading/codemods\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"From Pages to App\",\"description\":\"Learn how to upgrade your existing Next.js application from the Pages Router to the App Router.\",\"path\":\"pages/building-your-application/upgrading/app-router-migration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Vite\",\"description\":\"Learn how to migrate your existing React application from Vite to Next.js.\",\"path\":\"pages/building-your-application/upgrading/from-vite\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Migrating from Create React App\",\"description\":\"Learn how to migrate your existing React application from Create React App to Next.js.\",\"path\":\"pages/building-your-application/upgrading/from-create-react-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 14\",\"description\":\"Upgrade your Next.js Application from Version 13 to 14.\",\"path\":\"pages/building-your-application/upgrading/version-14\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 13\",\"description\":\"Upgrade your Next.js Application from Version 12 to 13.\",\"path\":\"pages/building-your-application/upgrading/version-13\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 12\",\"description\":\"Upgrade your Next.js Application from Version 11 to Version 12.\",\"path\":\"pages/building-your-application/upgrading/version-12\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 11\",\"description\":\"Upgrade your Next.js Application from Version 10 to Version 11.\",\"path\":\"pages/building-your-application/upgrading/version-11\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 10\",\"description\":\"Upgrade your Next.js Application from Version 9 to Version 10.\",\"path\":\"pages/building-your-application/upgrading/version-10\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Version 9\",\"description\":\"Upgrade your Next.js Application from Version 8 to Version 9.\",\"path\":\"pages/building-your-application/upgrading/version-9\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"API Reference\",\"description\":\"Next.js API Reference for the Pages Router.\",\"path\":\"pages/api-reference\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Components\",\"description\":\"API Reference for Next.js built-in components in the Pages Router.\",\"path\":\"pages/api-reference/components\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Font\",\"description\":\"API Reference for the Font Module\",\"path\":\"pages/api-reference/components/font\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cForm\u003e\",\"description\":\"Learn how to use the `\u003cForm\u003e` component to handle form submissions and search params updates with client-side navigation.\",\"path\":\"pages/api-reference/components/form\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cHead\u003e\",\"description\":\"Add custom elements to the `head` of your page with the built-in Head component.\",\"path\":\"pages/api-reference/components/head\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e\",\"description\":\"Optimize Images in your Next.js Application using the built-in `next/image` Component.\",\"path\":\"pages/api-reference/components/image\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cImage\u003e (Legacy)\",\"description\":\"Backwards compatible Image Optimization with the Legacy Image component.\",\"path\":\"pages/api-reference/components/image-legacy\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cLink\u003e\",\"description\":\"API reference for the \u003cLink\u003e component.\",\"path\":\"pages/api-reference/components/link\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"\u003cScript\u003e\",\"description\":\"Optimize third-party scripts in your Next.js application using the built-in `next/script` Component.\",\"path\":\"pages/api-reference/components/script\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Functions\",\"description\":\"API Reference for Functions and Hooks in Pages Router.\",\"path\":\"pages/api-reference/functions\",\"version\":\"$undefined\",\"children\":[{\"title\":\"getInitialProps\",\"description\":\"Fetch dynamic data on the server for your React component with getInitialProps.\",\"path\":\"pages/api-reference/functions/get-initial-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getServerSideProps\",\"description\":\"API reference for `getServerSideProps`. Learn how to fetch data on each request with Next.js.\",\"path\":\"pages/api-reference/functions/get-server-side-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticPaths\",\"description\":\"API reference for `getStaticPaths`. Learn how to fetch data and generate static pages with `getStaticPaths`.\",\"path\":\"pages/api-reference/functions/get-static-paths\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"getStaticProps\",\"description\":\"API reference for `getStaticProps`. Learn how to use `getStaticProps` to generate static pages with Next.js.\",\"path\":\"pages/api-reference/functions/get-static-props\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextRequest\",\"description\":\"API Reference for NextRequest.\",\"path\":\"pages/api-reference/functions/next-request\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"NextResponse\",\"description\":\"API Reference for NextResponse.\",\"path\":\"pages/api-reference/functions/next-response\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useAmp\",\"description\":\"Enable AMP in a page, and control the way Next.js adds AMP to the page with the AMP config.\",\"path\":\"pages/api-reference/functions/use-amp\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useReportWebVitals\",\"description\":\"useReportWebVitals\",\"path\":\"pages/api-reference/functions/use-report-web-vitals\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"useRouter\",\"description\":\"Learn more about the API of the Next.js Router, and access the router instance in your page with the useRouter hook.\",\"path\":\"pages/api-reference/functions/use-router\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"userAgent\",\"description\":\"The userAgent helper extends the Web Request API with additional properties and methods to interact with the user agent object from the request.\",\"path\":\"pages/api-reference/functions/userAgent\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"next.config.js Options\",\"description\":\"Learn about the options available in next.config.js for the Pages Router.\",\"path\":\"pages/api-reference/next-config-js\",\"version\":\"$undefined\",\"children\":[{\"title\":\"assetPrefix\",\"description\":\"Learn how to use the assetPrefix config option to configure your CDN.\",\"path\":\"pages/api-reference/next-config-js/assetPrefix\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"basePath\",\"description\":\"Use `basePath` to deploy a Next.js application under a sub-path of a domain.\",\"path\":\"pages/api-reference/next-config-js/basePath\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"bundlePagesRouterDependencies\",\"description\":\"Enable automatic dependency bundling for Pages Router\",\"path\":\"pages/api-reference/next-config-js/bundlePagesRouterDependencies\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"compress\",\"description\":\"Next.js provides gzip compression to compress rendered content and static files, it only works with the server target. Learn more about it here.\",\"path\":\"pages/api-reference/next-config-js/compress\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"crossOrigin\",\"description\":\"Use the `crossOrigin` option to add a crossOrigin tag on the `script` tags generated by `next/script` and `next/head`.\",\"path\":\"pages/api-reference/next-config-js/crossOrigin\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"devIndicators\",\"description\":\"Optimized pages include an indicator to let you know if it's being statically optimized. You can opt-out of it here.\",\"path\":\"pages/api-reference/next-config-js/devIndicators\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"distDir\",\"description\":\"Set a custom build directory to use instead of the default .next directory.\",\"path\":\"pages/api-reference/next-config-js/distDir\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"env\",\"description\":\"Learn to add and access environment variables in your Next.js application at build time.\",\"path\":\"pages/api-reference/next-config-js/env\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"eslint\",\"description\":\"Next.js reports ESLint errors and warnings during builds by default. Learn how to opt-out of this behavior here.\",\"path\":\"pages/api-reference/next-config-js/eslint\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"exportPathMap\",\"description\":\"Customize the pages that will be exported as HTML files when using `next export`.\",\"path\":\"pages/api-reference/next-config-js/exportPathMap\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateBuildId\",\"description\":\"Configure the build id, which is used to identify the current build in which your application is being served.\",\"path\":\"pages/api-reference/next-config-js/generateBuildId\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"generateEtags\",\"description\":\"Next.js will generate etags for every page by default. Learn more about how to disable etag generation here.\",\"path\":\"pages/api-reference/next-config-js/generateEtags\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"headers\",\"description\":\"Add custom HTTP headers to your Next.js app.\",\"path\":\"pages/api-reference/next-config-js/headers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"httpAgentOptions\",\"description\":\"Next.js will automatically use HTTP Keep-Alive by default. Learn more about how to disable HTTP Keep-Alive here.\",\"path\":\"pages/api-reference/next-config-js/httpAgentOptions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"images\",\"description\":\"Custom configuration for the next/image loader\",\"path\":\"pages/api-reference/next-config-js/images\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"onDemandEntries\",\"description\":\"Configure how Next.js will dispose and keep in memory pages created in development.\",\"path\":\"pages/api-reference/next-config-js/onDemandEntries\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"optimizePackageImports\",\"description\":\"API Reference for optimizePackageImports Next.js Config Option\",\"path\":\"pages/api-reference/next-config-js/optimizePackageImports\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"output\",\"description\":\"Next.js automatically traces which files are needed by each page to allow for easy deployment of your application. Learn how it works here.\",\"path\":\"pages/api-reference/next-config-js/output\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"pageExtensions\",\"description\":\"Extend the default page extensions used by Next.js when resolving pages in the Pages Router.\",\"path\":\"pages/api-reference/next-config-js/pageExtensions\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"poweredByHeader\",\"description\":\"Next.js will add the `x-powered-by` header by default. Learn to opt-out of it here.\",\"path\":\"pages/api-reference/next-config-js/poweredByHeader\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"productionBrowserSourceMaps\",\"description\":\"Enables browser source map generation during the production build.\",\"path\":\"pages/api-reference/next-config-js/productionBrowserSourceMaps\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"reactStrictMode\",\"description\":\"The complete Next.js runtime is now Strict Mode-compliant, learn how to opt-in\",\"path\":\"pages/api-reference/next-config-js/reactStrictMode\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"redirects\",\"description\":\"Add redirects to your Next.js app.\",\"path\":\"pages/api-reference/next-config-js/redirects\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"rewrites\",\"description\":\"Add rewrites to your Next.js app.\",\"path\":\"pages/api-reference/next-config-js/rewrites\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Runtime Config\",\"description\":\"Add client and server runtime configuration to your Next.js app.\",\"path\":\"pages/api-reference/next-config-js/runtime-configuration\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"serverExternalPackages\",\"description\":\"Opt-out specific dependencies from the dependency bundling enabled by `bundlePagesRouterDependencies`.\",\"path\":\"pages/api-reference/next-config-js/serverExternalPackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"trailingSlash\",\"description\":\"Configure Next.js pages to resolve with or without a trailing slash.\",\"path\":\"pages/api-reference/next-config-js/trailingSlash\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"transpilePackages\",\"description\":\"Automatically transpile and bundle dependencies from local packages (like monorepos) or from external dependencies (`node_modules`).\",\"path\":\"pages/api-reference/next-config-js/transpilePackages\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"turbo\",\"description\":\"Configure Next.js with Turbopack-specific options\",\"path\":\"pages/api-reference/next-config-js/turbo\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"typescript\",\"description\":\"Next.js reports TypeScript errors by default. Learn to opt-out of this behavior here.\",\"path\":\"pages/api-reference/next-config-js/typescript\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"urlImports\",\"description\":\"Configure Next.js to allow importing modules from external URLs.\",\"path\":\"pages/api-reference/next-config-js/urlImports\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"useLightningcss\",\"description\":\"Enable experimental support for Lightning CSS.\",\"path\":\"pages/api-reference/next-config-js/useLightningcss\",\"version\":\"experimental\",\"children\":[]},{\"title\":\"webpack\",\"description\":\"Learn how to customize the webpack config used by Next.js\",\"path\":\"pages/api-reference/next-config-js/webpack\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"webVitalsAttribution\",\"description\":\"Learn how to use the webVitalsAttribution option to pinpoint the source of Web Vitals issues.\",\"path\":\"pages/api-reference/next-config-js/webVitalsAttribution\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Edge Runtime\",\"description\":\"API Reference for the Edge Runtime.\",\"path\":\"pages/api-reference/edge\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"CLI\",\"description\":\"API Reference for the Next.js Command Line Interface (CLI) tools.\",\"path\":\"pages/api-reference/cli\",\"version\":\"$undefined\",\"children\":[{\"title\":\"CLI\",\"description\":\"Create Next.js apps using one command with the create-next-app CLI.\",\"path\":\"pages/api-reference/cli/create-next-app\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"next CLI\",\"description\":\"Learn how to run and build your application with the Next.js CLI.\",\"path\":\"pages/api-reference/cli/next\",\"version\":\"$undefined\",\"children\":[]}]}]},{\"title\":\"Architecture\",\"description\":\"How Next.js Works\",\"path\":\"architecture\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Accessibility\",\"description\":\"The built-in accessibility features of Next.js.\",\"path\":\"architecture/accessibility\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Fast Refresh\",\"description\":\"Fast Refresh is a hot module reloading experience that gives you instantaneous feedback on edits made to your React components.\",\"path\":\"architecture/fast-refresh\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Next.js Compiler\",\"description\":\"Next.js Compiler, written in Rust, which transforms and minifies your Next.js application.\",\"path\":\"architecture/nextjs-compiler\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Supported Browsers\",\"description\":\"Browser support and which JavaScript features are supported by Next.js.\",\"path\":\"architecture/supported-browsers\",\"version\":\"$undefined\",\"children\":[]},{\"title\":\"Turbopack\",\"description\":\"Turbopack is an incremental bundler optimized for JavaScript and TypeScript, written in Rust, and built into Next.js.\",\"path\":\"architecture/turbopack\",\"version\":\"$undefined\",\"children\":[]}]},{\"title\":\"Community\",\"description\":\"Get involved in the Next.js community.\",\"path\":\"community\",\"version\":\"$undefined\",\"children\":[{\"title\":\"Contribution Guide\",\"description\":\"Learn how to contribute to Next.js Documentation\",\"path\":\"community/contribution-guide\",\"version\":\"$undefined\",\"children\":[]}]}]},\"versions\":{\"13\":\"v13.5.7\",\"14\":\"v14.2.18\",\"canary\":\"v15.0.4-canary.24\",\"stable\":\"v15.0.3\"}}]}],[\"$\",\"div\",null,{\"className\":\"relative mx-auto max-w-screen-xl px-4 py-10 md:flex md:flex-row md:py-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"sticky top-[121px] hidden h-[calc(100vh-121px)] w-[284px] md:flex md:shrink-0 md:flex-col md:justify-between\",\"children\":[\"$\",\"$L21\",null,{\"items\":\"$0:f:0:1:2:children:2:children:1:props:children:1:0:props:children:props:items\",\"versions\":\"$0:f:0:1:2:children:2:children:1:props:children:1:0:props:children:props:versions\"}]}],[\"$\",\"div\",null,{\"id\":\"geist-skip-nav\",\"ref\":\"$undefined\",\"tabIndex\":-1}],[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(next-site)\",\"children\",\"docs\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\"}]]}]]]}],{\"children\":[[\"slug\",\"getting-started/react-essentials\",\"oc\"],[\"$\",\"$d\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"(next-site)\",\"children\",\"docs\",\"children\",\"$0:f:0:1:2:children:2:children:2:children:0\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$d\",\"c\",{\"children\":[\"$L22\",null,[\"$\",\"$L23\",null,{\"children\":\"$L24\"}]]}],{},null]},null]},null]},null]},null],[\"$\",\"$d\",\"h\",{\"children\":[null,[\"$\",\"$d\",\"R48aNJUZ6NtYiZBkT-4_0\",{\"children\":[[\"$\",\"$L25\",null,{\"children\":\"$L26\"}],[\"$\",\"$L27\",null,{\"children\":\"$L28\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\"}]]}]]}]]],\"m\":\"$undefined\",\"G\":[\"$29\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"22:E{\"digest\":\"NEXT_NOT_FOUND\"}\n"])</script><script>self.__next_f.push([1,"28:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"24:E{\"digest\":\"NEXT_NOT_FOUND\"}\n"])</script><script>self.__next_f.push([1,"26:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"1\",{\"children\":\"Next.js by Vercel - The React Framework | Next.js by Vercel - The React Framework\"}],[\"$\",\"meta\",\"2\",{\"name\":\"description\",\"content\":\"Next.js by Vercel is the full-stack React framework for the web.\"}],[\"$\",\"link\",\"3\",{\"rel\":\"canonical\",\"href\":\"https://nextjs.org/docs/getting-started/react-essentials\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:title\",\"content\":\"Next.js by Vercel - The React Framework | Next.js by Vercel - The React Framework\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:description\",\"content\":\"Next.js by Vercel is the full-stack React framework for the web.\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:image\",\"content\":\"https://assets.vercel.com/image/upload/front/nextjs/twitter-card.png\"}],[\"$\",\"meta\",\"7\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"8\",{\"name\":\"twitter:site\",\"content\":\"@vercel\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:title\",\"content\":\"Next.js by Vercel - The React Framework\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:description\",\"content\":\"Production grade React applications that scale. The world's leading companies use Next.js by Vercel to build static and dynamic websites and web applications.\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:image\",\"content\":\"https://assets.vercel.com/image/upload/front/nextjs/twitter-card.png\"}],[\"$\",\"link\",\"12\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"type\":\"image/x-icon\",\"sizes\":\"48x48\"}]]\n"])</script></body></html>