Back to Home

Today I Learned

A collection of short notes from my cross-disciplinary studies, shared as I learn in public.

status: In Progress

Status Indicator

The status indicator reflects the current state of the work: - Abandoned: Work that has been discontinued - Notes: Initial collections of thoughts and references - Draft: Early structured version with a central thesis - In Progress: Well-developed work actively being refined - Finished: Completed work with no planned major changes This helps readers understand the maturity and completeness of the content.

·
certainty: certain

Confidence Rating

The confidence tag expresses how well-supported the content is, or how likely its overall ideas are right. This uses a scale from "impossible" to "certain", based on the Kesselman List of Estimative Words: 1. "certain" 2. "highly likely" 3. "likely" 4. "possible" 5. "unlikely" 6. "highly unlikely" 7. "remote" 8. "impossible" Even ideas that seem unlikely may be worth exploring if their potential impact is significant enough.

·
importance: 7/10

Importance Rating

The importance rating distinguishes between trivial topics and those which might change your life. Using a scale from 0-10, content is ranked based on its potential impact on: - the reader - the intended audience - the world at large For example, topics about fundamental research or transformative technologies would rank 9-10, while personal reflections or minor experiments might rank 0-1.

Topics
Showing single entry
March 2026
posted on 03.30.2026

Next.js force-static Pages Require Dev Server Restart

Pages with export const dynamic = 'force-static' and export const revalidate = false are fully pre-rendered at build time via generateStaticParams(). In development mode, this means:

  • New MDX files added to a content directory are not picked up by hot reload.
  • New database entries are not reflected until the dev server restarts.
  • Changes to existing MDX files may or may not trigger recompilation depending on webpack's file watcher.
export const dynamic = 'force-static'
export const revalidate = false
 
export async function generateStaticParams() {
  // This runs ONCE at server start in dev mode
  const posts = getContentByType("news")
  return posts.map(p => ({ slug: p.slug }))
}

The generateStaticParams() function executes once when the dev server starts. Adding a new row to the database or a new .mdx file does not re-trigger it.

To see new content in dev: kill the server (fuser -k 3000/tcp), remove the lock file if needed (rm .next/dev/lock), and restart. There is no hot-reload workaround without changing the page to force-dynamic (which sacrifices static generation).

In production builds (npm run build), this is not an issue because generateStaticParams() runs during the build and all pages are pre-rendered at that point.

No reactions yet

in Naperville, IL
Last visitor from Mitaka, Japan