
- Next.js - Home
- Next.js - Overview
- Next.js - Project Setup
- Next.js - Folder Structure
- Next.js - App Router
- Next.js - Page Router
- Next.js Features
- Next.js - Pages
- Next.js - Data Fetching
- Next.js - ISR
- Next.js - Static File Serving
- Next.js - Pre-Rendering
- Next.js - Partial Pre Rendering
- Next.js - Server Side Rendering
- Next.js - Client Side Rendering
- Next.js Routing
- Next.js - Routing
- Next.js - Nested Routing
- Next.js - Dynamic Routing
- Next.js - Parallel Routing
- Next.js - Imperative Routing
- Next.js - Shallow Routing
- Next.js - Intercepting Routes
- Next.js - Redirecting Routes
- Next.js - Navigation and Linking
- Next.js Configuration
- Next.js - TypeScript
- Next.js - Environment Variables
- Next.js - File Conventions
- Next.js - ESLint
- Next.js API & Backend
- Next.js - API Routes
- Next.js - Dynamic API Routes
- Next.js - Route Handlers
- Next.js - API MiddleWares
- Next.js - Response Helpers
- Next.js API Reference
- Next.js - CLI Commands
- Next.js - Functions
- Next.js - Directives
- Next.js - Components
- Next.js - Image Component
- Next.js - Font Component
- Next.js - Head Component
- Next.js - Form Component
- Next.js - Link Component
- Next.js - Script Component
- Next.js Styling & SEO
- Next.js - CSS Support
- Next.js - Global CSS Support
- Next.js - Meta Data
- Next.js Advanced Topics
- Next.js - Error Handling
- Next.js - Server Actions
- Next.js - Fast Refresh
- Next.js - Internationalization
- Next.js - Authentication
- Next.js - Session Management
- Next.js - Authorization
- Next.js - Caching
- Next.js - Data Caching
- Next.js - Router Caching
- Next.js - Full Route Caching
- Next.js - Request Memoization
- Next.js Performance Optimization
- Next.js - Optimizations
- Next.js - Image Optimization
- Next.js - Lazy Loading
- Next.js - Font Optimization
- Next.js - Video Optimization
- Next.js - Script Optimization
- Next.js - Memory Optimization
- Next.js - Using OpenTelemetry
- Next.js - Package Bundling Optimization
- Next.js Testing
- Next.js - Testing
- Next.js - Testing with Jest
- Next.js - Testing with Cypress
- Next.js - Testing with Vitest
- Next.js - Testing with Playwright
- Next.js Debugging & Deployment
- Next.js - Debugging
- Next.js - Deployment
- Next.js Useful Resources
- Next.js - Interview Questions
- Next.js - Quick Guide
- Next.js - Useful Resources
- Next.js - Discussion
Next.js - getStaticPaths Function
In Next.js getStaticPaths() function is used fetch data in dynamic routes at the build time. In this chapter we will learn, what is getStaticPaths function, how to use it, syntax and example usage of getStaticPaths method.
Next.js getStaticPaths Method
In Next.js, getStaticPaths() is a data-fetching method used with getStaticProps() to generate dynamic routes at build time. This method is used in static site generation for creating HTML pages at the time of building application in the production.
Syntax
Following is syntax of getStaticPaths() function.
export async function getStaticPaths() { return { paths: [ { params: { id: '1' } }, // Define a dynamic route like /posts/1 { params: { id: '2' } }, ], fallback: false, // Determines fallback behavior }; }
- Paths: An array of objects, where each object represents a dynamic route.
- fallback: Define what happen when user visit a route that is not defined.
Example of Using getStaticPaths in Next.js
In the below example code, we created a dynamic page using dynamic routes in Next.js. Then we used 'getStaticPaths' function to use dynamic id that are fetched form server. See the code below.
// page/product/[id]/index.tsx file // This function gets called at build time export async function getStaticPaths() { // Call an external API endpoint to get product ids const res = await fetch('https://link/to/api'); const products = await res.json(); // Get the paths we want to pre-render based on products const paths = products.map((product) => ({ params: { id: product.id }, })); // We'll pre-render only these paths at build time. return { paths, fallback: false }; } // This also gets called at build time export async function getStaticProps({ params }) { // params contains the product `id`. // If the route is like /product/1, then params.id is 1 const res = await fetch(`https://.../product/${params.id}`); const product = await res.json(); // Pass product data to the page via props return { props: { product } }; } // Page component to display the product details export default function ProductPage({ product }) { return ( <div> <h1>Product {product.id}</h1> <p>This is the product page for item {product.id}</p> <p>Title: {product.title}</p> </div> ); }
Output
This is output for dynamic routing. You can see that the title of product changes based on product ID fetched from server.
