Option 1: Use Fable

logo Fable is an F# to JS compiler designed to generate clean and standard JavaScript code in order to maximize interoperability in both ways. It integrates with most of JS development pipelines like Babel, Webpack or React Hot Loader. Fable allows you develop not only web apps but also node.js, desktop with Electron or mobile with React native.

Option 2: Use WebSharper

logo WebSharper allows end-to-end web applications with both client and server developed in F#. It includes TypeScript interoperability, mobile web apps, getting started material, templates and much more.

Option 3: Use SAFE Stack

logo SAFE Stack is an end-to-end, functional-first stack for cloud-ready web development that emphasizes type-safe programming. It is an application development stack that brings several technologies together into a single, coherent stack for type-safe, flexible, web-enabled applications that can be written almost entirely in F#.

Option 4: Use WebAssembly with Bolero

logo Bolero - F# on the client side, no JavaScript - Bolero uses Blazor to bring F# to WebAssembly. Create dynamic HTML content using syntax familiar from WebSharper and Fable, in a full-fledged client-side .NET web framework.

There are other options, see also F# Web Programming.