---
title: v0.10.0
description: "Incremental builds: dev server skips rebuilding unchanged content for faster iteration"
date: 2026-03-13
tags:
- feature
- performance
---

## 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

| Change | Effect |
|--------|--------|
| Content file edited | Rebuild that page only |
| Content file added | Build the new page |
| Content file deleted | Remove from indexes |
| Template changed | Full rebuild |
| Data file changed | Full rebuild |
| `seite.toml` changed | Full rebuild |
| Static file changed | Re-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
