WebSharper. Making you more productive.

Ultra-efficient, functional and reactive web development
for the most demanding applications.

Download now! Learn more
WebSharper 3 RC available!

Read the announcement!

March 16, 2015

WebSharper moves into top-level namespace!

Read the announcement!

February 25, 2015

WebSharper moved to GitHub!

Read the announcement!

December 6, 2014

WebSharper 3 alpha is now Apache v2!

Read the announcement!

December 3, 2014

Want to code online?
Continue to CloudSharper!

Why WebSharper?


More robust

Thanks to strong typing, even on the client side.

More productive

Thanks to type inference, seamless client/server communication and powerful abstractions.

More maintainable

No more language interoperation hell, everything is written in F#.

More interoperable

Easily integrate with JavaScript libraries and take advantage of type safety and code completion with them.

More readable

Declare user interfaces, how they interact and how they appear with Formlets and Piglets.

More compatible

Develop on Windows, Linux or Mac and deploy to IIS, Apache, Nginx, Azure, AppHarbor...

Install WebSharper into your favorite IDE


Visual Studio
Download

Xamarin Studio
Configure

CloudSharper
Discover

Your first WebSharper application in 2 minutes


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
namespace SinglePageApplication1

open WebSharper
open WebSharper.JavaScript
open WebSharper.Html.Client
open WebSharper.Google.Visualization
open WebSharper.Google.Visualization.Base

[<JavaScript>]
module Client =
   let AreaChartData () =
      let data = new Base.DataTable()
      data.addColumn(ColumnType.NumberType,"Year") |> ignore
      data.addColumn(ColumnType.NumberType,"Sales") |> ignore
      data.addColumn(ColumnType.NumberType,"Expenses") |> ignore
      data.addRows(4) |> ignore
      [   [2004; 1000; 400]
          [2005; 1170; 460]
          [2006; 660; 1120]
          [2007; 1030; 540]   ]
      |> List.iteri (fun i yearData ->
          List.iteri (fun j value ->
             data.setValue(i, j, value)) yearData)
      data

   let Main =
      Div []
      |>! OnAfterRender (fun container ->
          let visualization = new BarChart(container.Dom)
          let options =
              BarChartOptions(
                 width = 400,
                 height= 240,
                 legend= Legend(position=LegendPosition.Bottom),
                 title = "Company Performance")
          visualization.draw(AreaChartData(), options))
      |> fun el ->
          el.AppendTo "entrypoint"

In CloudSharper

Your first WebSharper application

In Visual Studio

Prerequisites:
Nuget 2.7 or newer,
Visual Studio 2010 or newer

Your first WebSharper application
  1. Install the Visual Studio extensions
  2. Create a new WebSharper "Single-Page Application" project
  3. Add an Nuget reference to WebSharper.Google.Visualization
  4. Open Client.fs and add the code on the left
  5. Add an entry point <div id="entrypoint"></div>
  6. to your index.html in the body tag before the script link
  7. Hit F5 and see your app running

Featured Community Apps

Here we collected an assortment of recent WebSharper applications from various community members. Please understand that live site links might go bad if their authors take them offline, but even then their project sources might serve as an inspiration to others.

WebSharper demos

WebSharper demos Sources Live site

Mobile Insurance Claims

Mobile Insurance Claims Sources Live site

MobiDevDay Sample

MobiDevDay Sources Live site

Who uses WebSharper?




and 75k+ others who downloaded WebSharper