package html_of_jsx

  1. Overview
  2. Docs
Render HTML with JSX

Install

dune-project
 Dependency

Authors

Maintainers

Sources

html_of_jsx-0.0.5.tbz
sha256=53406f788909fdab597fe4b627a87b61543417e0bc1133a000629e12be444062
sha512=e2be5fa788c450b6ccbfef9390625b6abc26616b03fa111e3549f4d28a6410f2f8f27c63c91f6f93d5c1b00908480ed286d0bfe28c2c9d58d0cf829a8df66163

Description

html_of_jsx is a JSX transformation that allows you to write HTML declaratively.

Published: 05 Aug 2025

README

Html_of_jsx logo Html_of_jsx logo

Render HTML with JSX

html_of_jsx is a JSX transformation and a library to write HTML declaratively in OCaml, Reason and mlx.

Features

  • Brings the "component model" to HTML
  • Supports all of the Reason's JSX features (uppercase components, fragments, optional attributes, punning)
  • but with a few improvements (lowercase components, no need to add the ppx annotation)
  • No React idioms (no className, no htmlFor, no onChange, etc...)
  • Integrates well with htmx
  • Type-safe, validates attributes and their types (it can be better thought)
  • Works with OCaml, Reason and mlx
  • Minimal

    • JSX.render to render a JSX element to a HTML string
    • JSX.* to construct DOM Elements and DOM nodes (JSX.string, JSX.int, JSX.null, JSX.list and JSX.unsafe)
  • Designed to work on the server, but can be used on the client-side as well (with Melange or jsoo)

Installation

opam install html_of_jsx
+ (library html_of_jsx)
+ (preprocess (pps html_of_jsx.ppx))

Usage

let element: JSX.element = <a href="https://x.com/davesnx">
  <span> {"Click me!"} </span>
</a>

let html: string = JSX.render(element);

Check the demo/server.re file to see a full example.

Documentation

Check the Documentation to know more about the API and features.

Credits

This library was extracted from server-reason-react and later simplified to work only with HTML5.

Dependencies (3)

  1. ppxlib >= "0.25.0"
  2. ocaml >= "4.14"
  3. dune >= "3.16"

Dev Dependencies (9)

  1. ocamlformat-mlx with-dev-setup
  2. mlx with-test | with-dev-setup
  3. tiny_httpd with-dev-setup
  4. ocaml-lsp-server with-dev-setup
  5. ocamlformat = "0.26.1" & (with-dev-setup | with-test)
  6. odoc with-doc
  7. reason >= "3.10.0" & with-test
  8. benchmark with-test
  9. alcotest with-test

Used by (1)

  1. dream >= "1.0.0~alpha7"

Conflicts

None

OCaml

Innovation. Community. Security.