F# excels at building efficient, scalable and robust web solutions. Web programming is based around receiving a single HTTP request and replying with a result, which maps very well to a stateless, functional approach. Advantages to using F# for web programming include:

The Cloud Programming section contains more details on scalable cloud-hosted web programming with F#.

To contribute to tooling for F# web programming, please join the F# Web Stack Google Group.

To contribute to this guide, edit this page on GitHub.


The resources listed below are provided for educational purposes related to the F# programming language. The F# Software Foundation does not endorse or recommend any specific commercial products, processes, or services

Resources for Web Programming

Frameworks for Web Applications

Suave.io

Suave is a simple web development F# library providing a lightweight web server and a set of combinators to manipulate route flow and task composition.

WebSharper

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.

Fable

Fable is an F# to JS compiler designed to generate clean and standard 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 to develop node.js services, desktop apps with Electron and mobile apps with React native.

Pure F# ASP.NET MVC

ASP.NET MVC is a widely used open source web framework from Microsoft. Pure F# ASP.NET MVC is a pure, F#-only project template for implementing a web application with ASP.NET MVC 5. Views are implemented in HTML5 using modern Javascript frameworks, also known as single-page applications, or SPAs. Models and controllers are implemented in F#.

NancyFx

NancyFx is a lightweight, low-ceremony framework for building HTTP-based micro-applications and micro-services on .NET and Mono. F# templates are available.

Frameworks for Micro-services and Server-Side Web APIs

Serving Requests with IHttpHandler

Do it the simple way, and serve web requests direct from code using F# asynchronous programming.

Serving Requests with Suave.io

Suave can be used for microservices in addition to serving web content.

Pure F# Web API 2.0

Web API 2.0 is a widely used open source web framework from Microsoft. The Pure F# Web Templates (Visual Studio, Web API 2.0). These templates provide a Pure F# project for implementing a web API with Web API 2.0. Everything is implemented in F#.

OWIN and Katana provide a flexible set of components for building and hosting Open Web Interface for .NET (OWIN)-based web applications. Web API can be hosted directly on Katana using the Owin Web API package.

Some resources on using F# with Web API:

Canopy for Client-side Testing

canopy is a web testing framework built on top of selenium and written in F#. It’s syntax is clean and concise. You can easily leverage your existing .NET code to help you test.

Freya

Freya provides a functional web stack built on top of OWIN. At its core, Freya wraps the OWIN environment dictionary with a computation expression and provides access to that dictionary with lenses. Additional layers of the stack provide types based on the HTTP and related RFCs, a pipeline abstraction for connecting Freya computations, a router, and an implementation of the HTTP finite state machine, like that found in webmachine.

Frank

Frank provides combinators for composing web applications using the types in System.Net.Http, the library that drives ASP.NET Web API.

SignalR

SignalR provides bi-directional communication between web servers and clients using one of several mechanisms, beginning with web sockets and falling back through several other approaches depending on client and server capabilities. One example is a Web Application Server (F#).

ServiceStack

ServiceStack is a framework for simple and fast web services on .NET and Mono.

NancyFx

NancyFx is a lightweight, low-ceremony framework for building HTTP-based micro-services on .NET and Mono.

Live Examples

TodoBackend

TodoBackend is a project that aims to be “a shared example to showcase backend tech stacks.” The F# community has contributed some examples, and a few more are in progress:

Please consider contributing, either directly to the TodoBackend project or via the TodoBackendFSharp project.

Tutorials

Books

Several books have been written that include information on building web applications with F#:

Presentations

There are several presentations and tutorials available that include information on build web applications with F#:

Hosting

Common hosting options are:

Unit Testing Libraries

Some open source libraries that assist with web unit testing are:

Here are a few Visual Studio project templates available for building unit tests: