A fresh retake of the React API in Fable, optimized for happiness.
Here is how it looks like:
module App open Feliz [<ReactComponent>] let Counter() = let (count, setCount) = React.useState(0) Html.div [ Html.button [ prop.style [ style.marginRight 5 ] prop.onClick (fun _ -> setCount(count + 1)) prop.text "Increment" ] Html.button [ prop.style [ style.marginLeft 5 ] prop.onClick (fun _ -> setCount(count - 1)) prop.text "Decrement" ] Html.h1 count ] open Browser.Dom let root = ReactDOM.createRoot (document.getElementById "root") root.render (Counter())- Flexible API design: Combine the reliability of F# type safety with the flexibility to interop easily with native JavaScript.
- Discoverable attributes with no more functions,
Htmlattributes or CSS properties globally available so they are easy to find. - Proper documentation: each attribute and CSS property
- Full React API support: Feliz aims to support the React API for building components using hooks, context and more.
- Fully Type-safe: no more
Margin of objbut instead utilizing a plethora of overloaded functions to account for the overloaded nature ofCSSattributes, covering 90%+ of the CSS styles, values and properties. - Compatible with Femto.
- Approximately Zero bundle size increase where everything function body is erased from the generated JavaScript unless you actually use said function.
# install the template (if you haven't already) dotnet new -i Feliz.Template # create a new Feliz project from the installed template dotnet new feliz -n MyProject # navigate to the created project folder cd MyProject # install the npm dependencies npm install # install .NET tools dotnet tool restore # start the development server npm startExplore the full docs at https://fable-hub.github.io/Feliz/ — packed with live examples and practical guidance. Highlights:
- Feliz syntax: comprehensive reference for
Html,prop,style, React hooks, and more. Browse: https://fable-hub.github.io/Feliz/category/feliz - Guides: curated walkthroughs and best practices — from getting started to advanced patterns. Start here: https://fable-hub.github.io/Feliz/category/guides
- Ecosystem: discover community libraries and official add‑ons (UI, components, hooks, testing, tooling). Explore: https://fable-hub.github.io/Feliz/ecosystem
- Feliz.UseElmish: integrate Elmish state machines with React components. Learn more: https://fable-hub.github.io/Feliz/ecosystem/Hooks/Feliz.UseElmish
- Vitest: testing library for Feliz components. Learn more: https://fable-hub.github.io/Feliz/ecosystem/Testing/Feliz.Vitest
If anything’s unclear or you’re missing an example, please open an issue or discussion — contributions are very welcome!
Each project in Feliz has its own changelog file in the src folder. Check them out for the latest changes!
Here is a direct link to the Feliz changelog.