Release notes1 min read
The frontend moves into the server
Pages are now rendered directly by the Rust process, and updates are compiled in as Markdown.
The single-page frontend is being retired. Pages are rendered by the server as plain HTML, which removes a build step, a bundle, and a whole category of loading states.
What changed
| Area | Before | Now |
|---|---|---|
| Rendering | Client-side, after a fetch | Server-rendered HTML |
| Updates | Compiled by the bundler | Compiled by build.rs |
| Assets | Bundled and hashed | Embedded in the binary |
Where this leaves the migration
- Home, drivers and rankings
- Project updates and the Atom feed
- Replay uploads, which hold the most client-side state
Posts are ordinary Markdown with a little frontmatter, read at build time:
$ ls content/updates
2026-08-25-hello-world.md
2026-09-02-axum-rendering.md
If a post is malformed the build fails rather than the site, which is the whole
reason for doing it this way. Runtime parsing is gone, and the feed lives at
https://lfspla.net/updates.xml.