FS Skia UI
FS Skia UI is an F# desktop UI framework: an Elmish/MVU runtime driving a Skia-on-Vulkan renderer, with a typed control suite, a Yoga-backed layout engine, and a compiled, single-source governance system that decides which validation gates run for any change.
This site combines a generated API reference (from the published packages' XML doc comments) with authored architecture documentation — and, distinctively, every architecture page closes with an honest strengths/weaknesses + pros/cons analysis rather than a one-sided summary.
Find your entry point
Pick the path that matches what you are doing. Each lands in one step.
I'm building an app on FS Skia UI (consumer)
- Controls Catalog — the authoritative list of every supported control, grouped by category, each with a detail page and API link. Start with Controls in the Spec Kit workflow.
- API Reference — every supported public type and member, with summaries, parameters, and returns.
- Typed controls & the design-token / Penpot flow — author against the typed Props/MVU front door.
-
Runnable examples — literate
.fsxscripts, compiler-verified at build time.
I'm contributing to the framework (contributor)
- Architecture overview — one page per major part (host, scene, layout, input, Elmish/MVU, controls, testing, governance), each with a closing analysis.
- Governance system — routing, evidence/audit, and single-source generation.
- Roadmap & TODO — planned and in-progress work, each item linked to its design/implementation plan.
I'm running the Spec Kit process (speckit practitioner)
- Governance & speckit placement — which speckit phase each governance touchpoint governs and how to respond.
- The Spec Kit process — where custom FS Skia UI components are created and consumed across the phases.
The published packages
The API reference covers the ten published packages:
Package |
What it provides |
|---|---|
|
Scene primitives and the drawing vocabulary |
|
The Skia/Vulkan rendering host |
|
The Elmish/MVU runtime and animation tick |
|
Keyboard binding/command/mode runtime (pointer/mouse events live in the host's |
|
Lightweight key→command reducer |
|
Yoga-backed flexbox layout |
|
The control suite + typed front door |
|
Elmish bindings for the controls |
|
Test/evidence helpers |
|
Skill-support helpers |
Building this site
|
The site publishes to GitHub Pages
automatically on push to main (see .github/workflows/docs.yml); no generated
output is committed.