Quickstart
Get a miso app running in minutes using the sampler template
Installation
Set up GHC with WASM or JS backend and compile your first app
Architecture
Understand the Model-View-Update pattern and component system
API Reference
Explore every module and type exported by miso
Why miso?
Virtual DOM
High-performance recursive diffing and patching with 100% test coverage on the core engine
Pure by default
Side effects are explicit and typed via the
Effect monad — no surprisesWASM & JS targets
Compile to WebAssembly or JavaScript using standard GHC tooling
Type-safe routing
Servant-style routing with correct-by-construction URL encoding and decoding
Component system
Nest components with typed parent-child bindings, lifecycle hooks, and data bindings
Isomorphic
Render on the server, hydrate on the client — one codebase for both
Compilation targets
Miso supports three compilation backends:| Backend | Compiler | Use case |
|---|---|---|
| WebAssembly | wasm32-wasi-ghc | Recommended default — full GHC, best tooling |
| JavaScript | javascript-unknown-ghcjs-ghc | GHCJS-compatible JS output |
| Vanilla GHC | Standard ghc | Server-side rendering and testing |
Real-world examples
Miso has been used in quantitative finance, network security, defense research, SaaS products, and academic settings. The largest known installation runs ~200,000 lines of miso code serving 10,000+ users.TodoMVC
Classic TodoMVC implementation
2048
A clone of the 2048 puzzle game
Snake
Classic Snake game
Fetch
AJAX/HTTP request example
Community
GitHub
Browse the haskell-miso organization
Matrix
Chat on Matrix
Discord
Join the Discord server
Hackage
Official Haskell package on Hackage