A small, production-ready, reactive Haskell front-end framework for building interactive single-page web and mobile applications.
Miso is a Haskell front-end framework for building interactive single-page web and mobile applications. It provides a reactive, component-oriented architecture with a virtual DOM, type-safe routing, and support for real-time features like WebSockets and Server-Sent Events. It solves the problem of applying functional programming principles to modern web development while maintaining performance and developer productivity.
Haskell developers looking to build interactive web or mobile applications, and functional programming enthusiasts seeking a type-safe, pure alternative to JavaScript frameworks.
Developers choose Miso for its strong type safety, pure functional architecture, and ability to compile to both JavaScript and WebAssembly. Its performance is competitive with vanilla JS, and it offers a seamless development experience with hot reload and multi-platform support.
:ramen: A tasty Haskell web framework
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a recursive diffing/patching algorithm for performant UI updates, with benchmarks showing competitiveness against vanilla JavaScript.
Pure-by-default with side effects managed via the `Effect` type, leveraging Haskell's strong type system to reduce runtime errors and enhance reliability.
Compiles to JavaScript and WebAssembly, with mobile support via LynxJS for iOS, Android, and HarmonyOS, enabling cross-platform development from a single codebase.
Integrates WASM browser mode with ghciwatch for rapid iteration, as highlighted in the README's quick start guide, improving developer productivity.
Includes native support for WebSockets and Server-Sent Events, making it suitable for interactive applications without additional library dependencies.
React-style components are added in version 1.9 but not yet released, requiring development against the master branch which may introduce breaking changes or incomplete features.
Requires Nix or GHCup for environment management and detailed configuration files like cabal.project, creating a steep initial barrier for newcomers.
Compared to JavaScript frameworks, Haskell's frontend library ecosystem is smaller, restricting access to pre-built components and third-party tools.
Heavy reliance on Haddocks and a wiki; lacks beginner-friendly tutorials, making onboarding difficult for developers new to Haskell or functional programming.