# Next.js 15 Documentation > Reference and guides for Next.js v15.5.21 — the React framework for building full-stack web applications. Sections cover Getting Started, App Router, Architecture, and Community Resources. @doc-version: v15.5.21 ## [Getting Started](https://nextjs.org/docs/15/app/getting-started) Learn how to create full-stack web applications with the Next.js App Router. - [Installation](https://nextjs.org/docs/15/app/getting-started/installation): Learn how to create a new Next.js application with the `create-next-app` CLI, and set up TypeScript, ESLint, and Module Path Aliases. - [Project Structure](https://nextjs.org/docs/15/app/getting-started/project-structure): Learn the folder and file conventions in Next.js, and how to organize your project. - [Layouts and Pages](https://nextjs.org/docs/15/app/getting-started/layouts-and-pages): Learn how to create your first pages and layouts, and link between them with the Link component. - [Linking and Navigating](https://nextjs.org/docs/15/app/getting-started/linking-and-navigating): Learn how the built-in navigation optimizations work, including prefetching, prerendering, and client-side navigation, and how to optimize navigation for dynamic routes and slow networks. - [Server and Client Components](https://nextjs.org/docs/15/app/getting-started/server-and-client-components): Learn how you can use React Server and Client Components to render parts of your application on the server or the client. - [Partial Prerendering](https://nextjs.org/docs/15/app/getting-started/partial-prerendering): Learn how to use Partial Prerendering and combine the benefits of static and dynamic rendering. - [Fetching Data](https://nextjs.org/docs/15/app/getting-started/fetching-data): Learn how to fetch data and stream content that depends on data. - [Updating Data](https://nextjs.org/docs/15/app/getting-started/updating-data): Learn how to mutate data using Server Functions. - [Caching and Revalidating](https://nextjs.org/docs/15/app/getting-started/caching-and-revalidating): Learn how to cache and revalidate data in your application. - [Error Handling](https://nextjs.org/docs/15/app/getting-started/error-handling): Learn how to display expected errors and handle uncaught exceptions. - [CSS](https://nextjs.org/docs/15/app/getting-started/css): Learn about the different ways to add CSS to your application, including Tailwind CSS, CSS Modules, Global CSS, and more. - [Image Optimization](https://nextjs.org/docs/15/app/getting-started/images): Learn how to optimize images in Next.js - [Font Optimization](https://nextjs.org/docs/15/app/getting-started/fonts): Learn how to optimize fonts in Next.js - [Metadata and OG images](https://nextjs.org/docs/15/app/getting-started/metadata-and-og-images): Learn how to add metadata to your pages and create dynamic OG images. - [Route Handlers and Middleware](https://nextjs.org/docs/15/app/getting-started/route-handlers-and-middleware): Learn how to use Route Handlers and Middleware - [Deploying](https://nextjs.org/docs/15/app/getting-started/deploying): Learn how to deploy your Next.js application. - [Upgrading](https://nextjs.org/docs/15/app/getting-started/upgrading): Learn how to upgrade your Next.js application to the latest version or canary. ## [Guides](https://nextjs.org/docs/15/app/guides) Learn how to implement common patterns and real-world use cases using Next.js - [Analytics](https://nextjs.org/docs/15/app/guides/analytics): Measure and track page performance using Next.js Speed Insights - [Authentication](https://nextjs.org/docs/15/app/guides/authentication): Learn how to implement authentication in your Next.js application. - [Backend for Frontend](https://nextjs.org/docs/15/app/guides/backend-for-frontend): Learn how to use Next.js as a backend framework - [Caching](https://nextjs.org/docs/15/app/guides/caching): An overview of caching mechanisms in Next.js. - [CI Build Caching](https://nextjs.org/docs/15/app/guides/ci-build-caching): Learn how to configure CI to cache Next.js builds - [Content Security Policy](https://nextjs.org/docs/15/app/guides/content-security-policy): Learn how to set a Content Security Policy (CSP) for your Next.js application. - [CSS-in-JS](https://nextjs.org/docs/15/app/guides/css-in-js): Use CSS-in-JS libraries with Next.js - [Custom Server](https://nextjs.org/docs/15/app/guides/custom-server): Start a Next.js app programmatically using a custom server. - [Data Security](https://nextjs.org/docs/15/app/guides/data-security): Learn the built-in data security features in Next.js and learn best practices for protecting your application's data. - [Debugging](https://nextjs.org/docs/15/app/guides/debugging): Learn how to debug your Next.js application with VS Code, Chrome DevTools, or Firefox DevTools. - [Draft Mode](https://nextjs.org/docs/15/app/guides/draft-mode): Next.js has draft mode to toggle between static and dynamic pages. You can learn how it works with App Router here. - [Environment Variables](https://nextjs.org/docs/15/app/guides/environment-variables): Learn to add and access environment variables in your Next.js application. - [Forms](https://nextjs.org/docs/15/app/guides/forms): Learn how to create forms in Next.js with React Server Actions. - [ISR](https://nextjs.org/docs/15/app/guides/incremental-static-regeneration): Learn how to create or update static pages at runtime with Incremental Static Regeneration. - [Instrumentation](https://nextjs.org/docs/15/app/guides/instrumentation): Learn how to use instrumentation to run code at server startup in your Next.js app - [Internationalization](https://nextjs.org/docs/15/app/guides/internationalization): Add support for multiple languages with internationalized routing and localized content. - [JSON-LD](https://nextjs.org/docs/15/app/guides/json-ld): Learn how to add JSON-LD to your Next.js application to describe your content to search engines and AI. - [Lazy Loading](https://nextjs.org/docs/15/app/guides/lazy-loading): Lazy load imported libraries and React Components to improve your application's loading performance. - [Development Environment](https://nextjs.org/docs/15/app/guides/local-development): Learn how to optimize your local development environment with Next.js. - [MDX](https://nextjs.org/docs/15/app/guides/mdx): Learn how to configure MDX and use it in your Next.js apps. - [Memory Usage](https://nextjs.org/docs/15/app/guides/memory-usage): Optimize memory used by your application in development and production. - [Migrating](https://nextjs.org/docs/15/app/guides/migrating): Learn how to migrate from popular frameworks to Next.js - [App Router](https://nextjs.org/docs/15/app/guides/migrating/app-router-migration): Learn how to upgrade your existing Next.js application from the Pages Router to the App Router. - [Create React App](https://nextjs.org/docs/15/app/guides/migrating/from-create-react-app): Learn how to migrate your existing React application from Create React App to Next.js. - [Vite](https://nextjs.org/docs/15/app/guides/migrating/from-vite): Learn how to migrate your existing React application from Vite to Next.js. - [Multi-tenant](https://nextjs.org/docs/15/app/guides/multi-tenant): Learn how to build multi-tenant apps with the App Router. - [Multi-zones](https://nextjs.org/docs/15/app/guides/multi-zones): Learn how to build micro-frontends using Next.js Multi-Zones to deploy multiple Next.js apps under a single domain. - [OpenTelemetry](https://nextjs.org/docs/15/app/guides/open-telemetry): Learn how to instrument your Next.js app with OpenTelemetry. - [Package Bundling](https://nextjs.org/docs/15/app/guides/package-bundling): Learn how to optimize your application's server and client bundles. - [Prefetching](https://nextjs.org/docs/15/app/guides/prefetching): Learn how to configure prefetching in Next.js - [Production](https://nextjs.org/docs/15/app/guides/production-checklist): Recommendations to ensure the best performance and user experience before taking your Next.js application to production. - [PWAs](https://nextjs.org/docs/15/app/guides/progressive-web-apps): Learn how to build a Progressive Web Application (PWA) with Next.js. - [Redirecting](https://nextjs.org/docs/15/app/guides/redirecting): Learn the different ways to handle redirects in Next.js. - [Sass](https://nextjs.org/docs/15/app/guides/sass): Style your Next.js application using Sass. - [Scripts](https://nextjs.org/docs/15/app/guides/scripts): Optimize 3rd party scripts with the built-in Script component. - [Self-Hosting](https://nextjs.org/docs/15/app/guides/self-hosting): Learn how to self-host your Next.js application on a Node.js server, Docker image, or static HTML files (static exports). - [SPAs](https://nextjs.org/docs/15/app/guides/single-page-applications): Next.js fully supports building Single-Page Applications (SPAs). - [Static Exports](https://nextjs.org/docs/15/app/guides/static-exports): Next.js enables starting as a static site or Single-Page Application (SPA), then later optionally upgrading to use features that require a server. - [Tailwind CSS v3](https://nextjs.org/docs/15/app/guides/tailwind-v3-css): Style your Next.js Application using Tailwind CSS v3 for broader browser support. - [Testing](https://nextjs.org/docs/15/app/guides/testing): Learn how to set up Next.js with four commonly used testing tools — Cypress, Playwright, Vitest, and Jest. - [Cypress](https://nextjs.org/docs/15/app/guides/testing/cypress): Learn how to set up Cypress with Next.js for End-to-End (E2E) and Component Testing. - [Jest](https://nextjs.org/docs/15/app/guides/testing/jest): Learn how to set up Jest with Next.js for Unit Testing and Snapshot Testing. - [Playwright](https://nextjs.org/docs/15/app/guides/testing/playwright): Learn how to set up Playwright with Next.js for End-to-End (E2E) Testing. - [Vitest](https://nextjs.org/docs/15/app/guides/testing/vitest): Learn how to set up Vitest with Next.js for Unit Testing. - [Third Party Libraries](https://nextjs.org/docs/15/app/guides/third-party-libraries): Optimize the performance of third-party libraries in your application with the `@next/third-parties` package. - [Upgrading](https://nextjs.org/docs/15/app/guides/upgrading): Learn how to upgrade to the latest versions of Next.js. - [Codemods](https://nextjs.org/docs/15/app/guides/upgrading/codemods): Use codemods to upgrade your Next.js codebase when new features are released. - [Version 14](https://nextjs.org/docs/15/app/guides/upgrading/version-14): Upgrade your Next.js Application from Version 13 to 14. - [Version 15](https://nextjs.org/docs/15/app/guides/upgrading/version-15): Upgrade your Next.js Application from Version 14 to 15. - [Videos](https://nextjs.org/docs/15/app/guides/videos): Recommendations and best practices for optimizing videos in your Next.js application. ## [API Reference](https://nextjs.org/docs/15/app/api-reference) Next.js API Reference for the App Router. - [Directives](https://nextjs.org/docs/15/app/api-reference/directives): Directives are used to modify the behavior of your Next.js application. - [use cache](https://nextjs.org/docs/15/app/api-reference/directives/use-cache): Learn how to use the use cache directive to cache data in your Next.js application. - [use client](https://nextjs.org/docs/15/app/api-reference/directives/use-client): Learn how to use the use client directive to render a component on the client. - [use server](https://nextjs.org/docs/15/app/api-reference/directives/use-server): Learn how to use the use server directive to execute code on the server. - [Components](https://nextjs.org/docs/15/app/api-reference/components): API Reference for Next.js built-in components. - [Font](https://nextjs.org/docs/15/app/api-reference/components/font): Optimizing loading web fonts with the built-in `next/font` loaders. - [Form Component](https://nextjs.org/docs/15/app/api-reference/components/form): Learn how to use the `