Our work
2026·Open Circle

Static documentation for Valibot and Formisch

Open Circle maintains two TypeScript libraries with large reference sections. We rebuilt both documentation sites so every page is produced once at build time and served from a CDN cache, and handed the hosting decision back to the maintainers.

Talk to an expert
Static documentation for Valibot and Formisch
See it in action

What we delivered

Open Circle maintains Valibot and Formisch, two TypeScript libraries whose documentation is the reference the rest of the ecosystem reads. Both sites carry a large reference section, and both rendered every page at request time on Vercel Edge. We rebuilt them so that every page is produced once, during the build, and served as a file.

The work landed as two pull requests over a few weekends. It was the first delivery under our OSS Partner Program.

Scope

  • Both documentation sites moved from request-time rendering to a fully pre-rendered build, every page in both reference sections included.

  • Reader preferences, the theme, the chapters column and the framework selector, moved out of server-read cookies and into the browser, applied before the page is first painted.

  • Social preview images generated once per route during the build instead of drawn per request.

  • Cache headers set per class of asset, so hashed output is frozen for a year while the navigation payload stays correct across deploys.

  • A patch to the Qwik Router static build, which had been dropping pages whose path ends in a file extension.

What changed for readers

Nothing they can point at, which was the goal. Navigation still behaves like an application, theme and layout preferences still survive a reload, and the pages look the same. The difference is underneath: a page comes back from a cache rather than being assembled for the visit, nothing on the request path wakes a function, and restoring a saved preference no longer moves the page after it has been drawn.

What changed for the maintainers

The build now leaves plain HTML, JSON, fonts and images, with nothing tied to one hosting adapter. That turns hosting back into a decision the maintainers can revisit whenever they want instead of a dependency they are locked into. Both sites currently run on Cloudflare.

For a library team, the running cost of the docs also stops scaling with how often people read them. Traffic to a reference section is exactly the traffic you want, and it should not be the line item you watch.

Why we took it on

The OSS Partner Program exists to take recurring infrastructure and maintenance work off open source teams, so their time and their funding go back into the libraries everyone else builds on. Documentation hosting is a good example of that work: it never stops needing attention, and it is never the reason anyone joined the project.

The technical detail

The interesting parts are the ones that do not fit a summary: how reader preferences get applied before first paint without a flash, why the navigation payload cannot be marked immutable, and what the build was quietly dropping. We wrote those up separately in Static docs off the request path.

Frequently Asked Questions

Docs rendering on every request? Let's pre-render them.

Talk to an expert
Zanek

Can't keep up with changes in AI world?

Let us do the heavy lifting. Every week we distill the most important AI developments into a focused 5-minute briefing - so you stay ahead without the noise.

Find out more
Weekly AIonline