This is the Hello World program:
let main = Preact.h1  [ Preact.string "Hello, world!" ] let () = match Preact.find "main" with | Some element -> Preact.render main element | None -> Js.Console.error "<main> not found!"
This is how a
useReducer powered Counter component looks like:
module Counter = struct type action = | Increment | Decrement let reducer state = function | Increment -> state + 1 | Decrement -> state - 1 let make = fun [@preact.component "Counter"] initial -> let[@hook] count, dispatch = P.useReducer reducer initial in P.div  [ P.button [ P.onClick (fun _ -> dispatch Decrement) ] [ P.string "-" ] ; P.string " " ; P.int count ; P.string " " ; P.button [ P.onClick (fun _ -> dispatch Increment) ] [ P.string "+" ] ] end
microbundle bundler, the code above compiles to just 4kb (!) of gzipped js. Preact itself is 3kb, so that’s 1kb for the bs-preact runtime and the component above.
A starter project is available with instructions on how to get started: https://github.com/utkarshkukreti/bs-preact-starter.