← All releases

v0.10.0

featureperformance

Incremental builds: dev server skips rebuilding unchanged content for faster iteration

Incremental Builds

The dev server (seite serve) now uses incremental builds. A build cache (.seite/build-cache.json) tracks file modification times and content hashes across builds. When the file watcher triggers a rebuild:

  • Nothing changed → build is skipped entirely (no wasted CPU, instant response)
  • Only content changed → output directory is preserved, only changed pages are re-rendered (indexes, feeds, sitemap still regenerate — they're fast)
  • Template, data, or config changed → full rebuild (correctness requires it)

This means editing a single blog post on a 200-page site no longer rebuilds all 200 pages.

How It Works

  • BuildCache stores per-file mtimes and FNV-1a content hashes in .seite/build-cache.json
  • On each rebuild, the cache diffs current file state against the stored snapshot
  • Changed content items are re-processed through markdown rendering and template expansion
  • Unchanged items keep their existing HTML in dist/
  • The cache is updated after every successful build

What Triggers What

ChangeEffect
Content file editedRebuild that page only
Content file addedBuild the new page
Content file deletedRemove from indexes
Template changedFull rebuild
Data file changedFull rebuild
seite.toml changedFull rebuild
Static file changedRe-copy that file

Build Output

The build stats now show whether a build was incremental:

Incremental build 42 posts, 12 docs in 0.3s (5 static files copied, 51 items unchanged)

Notes

  • seite build (production) always does a full clean build — incremental is dev-server only
  • Add .seite/ to .gitignore if not already present (the cache is machine-local)
  • The cache uses FNV-1a hashing for speed — it's a build cache, not a security mechanism