π Next.js App Router: Forget getStaticProps, Think Caching
When I first switched from Pages Router to the new App Router in Next.js, I noticed something strange:
π Thereβs no getStaticProps or getServerSideProps.
At first it felt like SSG & SSR were βgoneββ¦ but in reality, theyβve just been reimagined.
In App Router, rendering strategy = caching strategy.
Hereβs how it works β¬οΈ
πΉ CSR (Client-Side Rendering)
`'use client';
useEffect(() => {
fetch('/api/data').then(r => r.json());
}, []);`
Happens by default when you fetch data in a Client Component.
πΉ SSR (Server-Side Rendering)
await fetch(url, { cache: 'no-store' })
This ensures fresh data on every request.
πΉ SSG (Static Site Generation)
await fetch(url, { cache: 'force-cache' }) // default
Data is fetched at build time, HTML is reused for all users.
πΉ ISR (Incremental Static Regeneration)
await fetch(url, { next: { revalidate: 60 } })
Page is pre-rendered like SSG, but revalidated every 60s in the background.
βοΈ Old mental model:
getStaticProps = SSG
getServerSideProps = SSR
β‘ New mental model:
fetch + caching = CSR, SSR, SSG, ISR
π‘ Key takeaway:
Next.js App Router unifies rendering modes under one API. Instead of special lifecycle methods, you just decide caching rules β much more flexible (and powerful).
Top comments (0)