This release moves the template's client ⇄ server layer over to Serde.FS (https://github.com/serde-fs/Serde.FS), giving you end-to-end, compile-time type safety across the network
boundary — with no hand-written HTTP and no manual JSON.
✨ Highlights
- 🔗 End-to-end type-safe RPC. Define your API once as an [] F# interface in Shared. The server implements it; the client calls it like a local async function. Change the contract and both ends update on the next build — any mismatch is a compile error, not a runtime surprise.
- ⚡ Auto-generated Fable client via Serde.FS.Json.Fable (https://www.nuget.org/packages/Serde.FS.Json.Fable). Just referencing the package turns on client generation — a fully-typed proxy is written into fable-generated/ on every build. No attributes, no config, no fetch/JSON plumbing.
- 🪶 No web framework required. The server is plain ASP.NET Core + Serde.FS.Json.AspNet. No Giraffe, Saturn, or controllers —
MapRpcApiis just an endpoint-routing extension. Need a REST endpoint too? Drop a minimal-APIapp.MapGetright alongside it; the two surfaces coexist on one host. - 🧊 Reflection-free, deterministic serialization. Codecs are generated at compile time — AOT/WASM-friendly, tree-shakeable, and predictable.
- 📚 Revamped README that documents the full-stack flow end to end.
🧩 The whole contract → server → client flow
// Shared — define it once
[<RpcApi>]
type IServerApi =
abstract member GetCatFacts: PageSize * PageNumber -> Async<CatFact list>// WebApi — implement & map it (plain ASP.NET Core)
app.MapRpcApi<IServerApi>(ServerApi())// WebLit — call the generated, typed proxy
let api = SerdeGenerated.Fable.IServerApiFableClient.create "/"
let! facts = api.GetCatFacts(pageSize, pageNumber)- The RPC stack has moved from Fable.Remoting to Serde.FS. Projects generated from this template now use the Serde.FS RPC layer; the Fable.Remoting.Client dependency has been removed.
There's no in-place migration for apps already scaffolded from 2.x — this affects newly generated projects. - With huge thanks to Fable.Remoting, which powered the template's RPC layer for years and made the full-stack F# experience great long before this.
📦 Getting started
dotnet new install fable-lit-fullstack-template
dotnet new fable-lit-fullstack -n MyApp
cd MyApp && npm install && npm run dev
Requirements: .NET 10 SDK · Serde.FS 1.0.0-beta.2.