Next.js offers multiple ways to fetch data, depending on whether you want static generation, server-side rendering, or client-side fetching.
1. Static Site Generation (SSG) with getStaticProps
-
Fetch data at build time.
-
Great for pages where data doesn’t change often.
-
Pages are pre-rendered to static HTML.
Example:
2. Static Generation with Dynamic Routes: getStaticPaths
-
Required for dynamic pages using SSG.
-
Defines which paths to pre-render.
Example:
3. Server-Side Rendering (SSR) with getServerSideProps
-
Fetch data on every request.
-
Useful when data changes frequently or is user-specific.
Example:
4. Client-Side Data Fetching
-
Use React hooks like
useEffectandfetchto load data after the page loads. -
Good for interactive components or user-triggered updates.
Example:
Summary Table
| Method | When to Use | Data Fetch Timing | Usage |
|---|---|---|---|
getStaticProps |
Static content, rarely changing | Build time | SSG |
getStaticPaths |
Dynamic routes with static generation | Build time | Defines paths for dynamic pages |
getServerSideProps |
Frequently changing or user-specific data | On every request | SSR |
| Client-side fetching | Interactive, user-triggered updates | After page load | React hooks (useEffect) |
