Bird
Raised Fist0
NextJSframework~10 mins

Revalidation patterns in NextJS - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Revalidation patterns
Page Request
↓
Check Cache
↓
Serve Cached
↓
Check Revalidation
↓
Fetch New Data
↓
Update Cache
↓
Serve Updated
When a page is requested, Next.js checks if cached data exists. If cached, it serves it immediately. Then it checks if revalidation is needed. If yes, it fetches fresh data, updates the cache, and serves the updated page.
Execution Sample
NextJS
export async function getStaticProps() {
  const data = await fetchData();
  return {
    props: { data },
    revalidate: 10,
  };
}
This code fetches data at build time and sets the page to revalidate every 10 seconds.
Execution Table
StepActionCache StateRevalidation CheckResult
1Page requestedNo cacheN/AFetch data and cache it
2Page requested again within 10sCache validNoServe cached page
3Page requested after 10sCache expiredYesFetch new data, update cache, serve updated page
4Page requested immediately after updateCache validNoServe cached page
💡 Execution stops after serving cached or updated page depending on cache validity and revalidation timing.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4
cacheemptydata fetched and storedunchangedupdated with new dataunchanged
revalidate timer10s setcountdown startsstill countingreset after updatecountdown starts again
Key Moments - 2 Insights
Why does Next.js serve cached data even if revalidation is needed?
Next.js serves cached data immediately for fast response, then triggers background revalidation to update cache for future requests, as shown in execution_table rows 2 and 3.
What happens if a request comes exactly when the cache expires?
The cache is considered expired, so Next.js fetches fresh data, updates the cache, and serves the updated page, as in execution_table row 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is served at step 2 when the cache is still valid?
AFresh data fetched and served
BPage not served, waiting for data
CCached page served immediately
DError because cache is stale
💡 Hint
Check the 'Result' column in execution_table row 2
At which step does Next.js update the cache with new data?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look at the 'Cache State' and 'Result' columns in execution_table row 3
If the revalidate time was set to 20 seconds instead of 10, how would step 3 change?
AStep 3 would happen after 20 seconds instead of 10
BStep 3 would happen immediately
CStep 3 would never happen
DStep 3 would happen before step 2
💡 Hint
Refer to the 'revalidate timer' variable in variable_tracker and timing in execution_table
Concept Snapshot
Next.js revalidation pattern:
- getStaticProps fetches data at build time
- revalidate sets seconds to refresh cached page
- Cached page served immediately for speed
- Background fetch updates cache after revalidate time
- Ensures fast and fresh content without blocking users
Full Transcript
When a user requests a Next.js page using getStaticProps with a revalidate time, Next.js first checks if cached data exists. If no cache exists, it fetches data and caches it. If cache exists and is still valid within the revalidate time, it serves the cached page immediately. When the cache expires, Next.js serves the cached page but triggers a background fetch to update the cache with fresh data. This pattern balances fast page loads with up-to-date content. Variables like cache and revalidate timer track the data and timing. This flow repeats for each page request, ensuring users get quick responses and fresh data after the revalidation period.

Practice

(1/5)
1. What does the revalidate export in Next.js control?
easy
A. How often a cached page updates after initial generation
B. The maximum number of pages to cache
C. The delay before a page is first generated
D. The priority of server-side rendering

Solution

  1. Step 1: Understand the role of revalidate

    The revalidate export sets the time in seconds for Next.js to update a cached page after it was first generated.
  2. Step 2: Compare options with this behavior

    Only How often a cached page updates after initial generation correctly describes this update frequency control. Other options describe unrelated concepts.
  3. Final Answer:

    How often a cached page updates after initial generation -> Option A
  4. Quick Check:

    Revalidate controls update frequency = D [OK]
Hint: Remember revalidate sets cache update time in seconds [OK]
Common Mistakes:
  • Confusing revalidate with cache size
  • Thinking revalidate delays first page generation
  • Mixing revalidate with rendering priority
2. Which of the following is the correct syntax to set a page to revalidate every 60 seconds in Next.js?
easy
A. export revalidate = 60;
B. export const revalidate = 60;
C. const revalidate = 60 export;
D. export const revalidate(60);

Solution

  1. Step 1: Recall correct export syntax in Next.js

    To export a constant, the syntax is export const name = value;.
  2. Step 2: Match this with revalidate usage

    export const revalidate = 60; matches this pattern exactly. Other options have syntax errors or misplaced keywords.
  3. Final Answer:

    export const revalidate = 60; -> Option B
  4. Quick Check:

    Correct export syntax = A [OK]
Hint: Use 'export const' to export revalidate value [OK]
Common Mistakes:
  • Omitting 'const' keyword
  • Using parentheses incorrectly
  • Placing export keyword after variable
3. Given this Next.js page code snippet:
export const revalidate = 10;

export default function Page() {
  return <div>Time: {Date.now()}</div>;
}

What will happen if you visit this page multiple times within 10 seconds?
medium
A. The page updates the timestamp on every visit immediately
B. The page never updates after the first visit
C. The page throws an error because Date.now() is not allowed
D. The page shows the same timestamp for 10 seconds before updating

Solution

  1. Step 1: Understand revalidate timing effect

    With revalidate = 10, Next.js caches the page and only regenerates it after 10 seconds.
  2. Step 2: Predict page behavior on multiple visits

    Within 10 seconds, the cached page is served, so the timestamp stays the same. After 10 seconds, it updates.
  3. Final Answer:

    The page shows the same timestamp for 10 seconds before updating -> Option D
  4. Quick Check:

    Revalidate caches page for 10 seconds = B [OK]
Hint: Revalidate delays page update by set seconds [OK]
Common Mistakes:
  • Assuming Date.now() updates on every visit
  • Thinking revalidate disables page updates
  • Confusing revalidate with client-side rendering
4. You wrote this code in a Next.js page:
export const revalidate = '30';

export default function Page() {
  return <div>Hello</div>;
}

What is the problem with this code?
medium
A. revalidate must be a number, not a string
B. Page component must be async to use revalidate
C. You cannot export revalidate in a page component
D. The return statement is missing parentheses

Solution

  1. Step 1: Check the type of revalidate value

    The revalidate export expects a number representing seconds, not a string.
  2. Step 2: Identify the error caused by wrong type

    Using a string will cause Next.js to ignore or error on revalidation timing.
  3. Final Answer:

    revalidate must be a number, not a string -> Option A
  4. Quick Check:

    revalidate requires number type = A [OK]
Hint: Use number, not quotes, for revalidate seconds [OK]
Common Mistakes:
  • Using quotes around the number
  • Thinking revalidate needs async function
  • Misunderstanding export rules
5. You want a Next.js page to show fresh data but also improve performance by caching for 5 minutes. Which revalidation pattern should you use?
export const revalidate = ?;

Choose the best value and explain why.
hard
A. 60, to update every minute for fresher data
B. 0, to disable caching and always fetch fresh data
C. 300, because 300 seconds equals 5 minutes, balancing freshness and caching
D. Infinity, to cache forever and never update

Solution

  1. Step 1: Convert 5 minutes to seconds

    5 minutes equals 300 seconds, so revalidate should be set to 300.
  2. Step 2: Understand caching vs freshness tradeoff

    Setting revalidate to 300 caches the page for 5 minutes, improving performance but still updating regularly.
  3. Step 3: Evaluate other options

    0 disables caching (no performance gain), 60 updates too often, Infinity never updates (stale data).
  4. Final Answer:

    300, because 300 seconds equals 5 minutes, balancing freshness and caching -> Option C
  5. Quick Check:

    5 minutes = 300 seconds revalidate [OK]
Hint: Set revalidate to seconds matching desired cache time [OK]
Common Mistakes:
  • Using 0 thinking it improves performance
  • Choosing too short or too long revalidate values
  • Confusing minutes with seconds
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard