# Guidance choosing web-building framework

**URL:** <https://discuss.ocaml.org/t/guidance-choosing-web-building-framework/17029>\
**Category:** Learning\
**Created:** [July 29, 2025, 8:07pm UTC](https://discuss.ocaml.org/t/guidance-choosing-web-building-framework/17029 "2025-07-29T20:07:12Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ilan](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ilan/32/6096_2.png) [@ilan](https://discuss.ocaml.org/u/ilan)\
**Post date:** [July 29, 2025, 8:07pm UTC](https://discuss.ocaml.org/t/guidance-choosing-web-building-framework/17029/1 "2025-07-29T20:07:12Z")

</div>

I’d like to build reactive webpages using 100% OCaml. I first looked at incr\_dom, but after learning Lwt is better supported (at least in [2014](http://rgrinberg.com/posts/abandoning-async/)) and this is generally true for Jane Street’s packages, I’m reconsidering my options. My priority is something with good documentation and support. I want to practice functional programming and enjoy making things rather than scrounging for tutorials, staring at build errors and deciphering documentation that assumes I know more than I do.

ChatGPT recommends Bonsai over incr\_dom, which checks out but it also hallucinated that it is featured in Real World OCaml.

The other suggestions for well-documented options are ocsigen and ReScript/ReasonReact.

Less supported but noteworthy is ocaml-tea.

Can I get some human thoughts and opinions on this? I’m fairly new to OCaml and web dev. Most of my recent work has been in Rocq and bash.

---

<div class="post-metadata">

**Author:** ![R\_Huxton](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/r_huxton/32/4216_2.png) [@R\_Huxton](https://discuss.ocaml.org/u/R_Huxton)\
**Post date:** [July 29, 2025, 8:37pm UTC](https://discuss.ocaml.org/t/guidance-choosing-web-building-framework/17029/2 "2025-07-29T20:37:03Z")

</div>

Are you familiar at all with [https://elm-lang.org/](https://elm-lang.org/) ?

It is a simple, functional web programming language that has influenced many of the popular JavaScript frameworks.

I mention it because there is what is basically a reimplementation of it in ocaml. I came across it when I first started exploring ocaml and had no real problems getting it to work. I posted some notes on it

[A short review of fmlib\_browser (web frontend library)](https://discuss.ocaml.org/t/a-short-review-of-fmlib-browser-web-frontend-library/12384)

---

<div class="post-metadata">

**Author:** ![ilan](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/ilan/32/6096_2.png) [@ilan](https://discuss.ocaml.org/u/ilan)\
**Post date:** [July 30, 2025, 12:08pm UTC](https://discuss.ocaml.org/t/guidance-choosing-web-building-framework/17029/3 "2025-07-30T12:08:33Z")

</div>

Thank you.

Yes, I kept hearing about Elm while exploring this space but I wanted to stick to using OCaml so my experience would readily transfer beyond making web apps. fmlib\_browser looks well documented, it’s now at the top of my list.

---

<div class="post-metadata">

**Author:** ![sporkl](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/sporkl/32/5242_2.png) [@sporkl](https://discuss.ocaml.org/u/sporkl)\
**Post date:** [July 30, 2025, 2:46pm UTC](https://discuss.ocaml.org/t/guidance-choosing-web-building-framework/17029/4 "2025-07-30T14:46:53Z")

</div>

Another similar option is [ocaml-vdom](https://github.com/LexiFi/ocaml-vdom) .

---

<div class="post-metadata">

**Author:** ![Khady](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/khady/32/469_2.png) [@Khady](https://discuss.ocaml.org/u/Khady)\
**Post date:** [July 31, 2025, 3:23am UTC](https://discuss.ocaml.org/t/guidance-choosing-web-building-framework/17029/5 "2025-07-31T03:23:09Z")

</div>

[https://melange.re](https://melange.re) + [ReasonReact · All your ReactJS knowledge, codified.](https://reasonml.github.io/reason-react/)

There’s a book which contains quite a lot of general guidance on that topic [Melange for React Developers | Melange for React Devs](https://react-book.melange.re/intro/)

And a bunch of templates to get started

- [GitHub - ml-in-barcelona/fullstack-reason-react-demo: Demo to showcase server-reason-react with Melange](https://github.com/ml-in-barcelona/fullstack-reason-react-demo)
- [GitHub - melange-re/melange-opam-template: A simple project template using Melange with opam](https://github.com/melange-re/melange-opam-template)
- [GitHub - dmmulroy/create-melange-app: The fastest, friendliest, and most delightful way to get started with OCaml, ReasonML, and Melange, geared towards JavaScript and TypeScript developers](https://github.com/dmmulroy/create-melange-app)
