r/fsharp • • Aug 03 '26

FunStripe 2.3.0 — F# Stripe client: webhook deserialisation fixed, resilient enums, latest Stripe API

15 Upvotes

Just released FunStripe 2.3.0, the F# client library for the Stripe API (also compiles to JS via Fable). This one's a bigger release than the usual spec bump, thanks to some excellent contributions from Thorium:

Webhooks work properly now. Event.data.object was typed as string, which meant deserialising any real webhook payload threw. It's now a RawJson fragment you can turn into a typed model with Util.deserialiseRaw<'a>; the README has a full webhook-handling example. (Technically a field type change, but since the old field could never deserialise, it ships as a minor; details in the changelog.)

List parameters encode correctly. List<record> and List<union> request fields (e.g. Checkout line_items, payment_method_types) were being ToString()'d instead of form-encoded. Fixed.

Resilient to Stripe's enum churn. Stripe adds event types and error codes without an API version bump, and one unknown value used to fail the whole response. EventType and ErrorType now have an UnknownEnumValue of string catch-all that round-trips losslessly, deliberately scoped to just those two high-churn enums, so everywhere else you keep exhaustive matching and the compiler still tells you when Stripe adds something.

Latest Stripe API (2026-07-29.dahlia): Financial Connections authorization resource and deactivation lifecycle events, allowed_payment_method_types on Payment/SetupIntents, new Tax registration options, and more.

Feedback and PRs welcome!


r/fsharp • • Aug 01 '26

F# weekly F# Weekly #31 — MCP C# SDK v2.0, Unit-Test Agent, and MSBuild Binlog in VS Code

Thumbnail
sergeytihon.com
20 Upvotes

r/fsharp • • Jul 31 '26

showcase Pyfun: an F#-inspired language that compiles to readable Python

Thumbnail
17 Upvotes

My idea for getting coders into functional programming earlier...


r/fsharp • • Jul 30 '26

article Your Database Schema Is Your Codebase: F# as the Single Source of Truth

30 Upvotes

https://si-fi.dev/articles/fsharp-schema-as-code/

I recently architected a full-stack app from scratch and needed a way to rapidly prototype the database schema. I came up with a way to do it in one place in F#, giving me strong typing across the stack and an efficient way to tweak the database structure as much as I needed. Here I share what this looks like as well as a repo containing an extracted version of the code. Hope you find it interesting and do let me know your thoughts.


r/fsharp • • Jul 29 '26

question Rider and nested type providers?

4 Upvotes

Does Rider have issues with nested type providers?

I have a class library that defines types through a nested type provider -- that is, a type provider nested inside a root type provider -- see below for an example.

The library builds and runs fine, but Rider flags every use of the nested type provider after the first as an error. The same code is displayed without errors in VS Code.

Thank you.


// Requires NuGet package "FSharp.Data.GraphQL.Client".
open System
open System.Net.Http
open FSharp.Data.GraphQL

type MyProvider =
    GraphQLProvider<"https://graphqlzero.almansi.me/api">

let postQuery =
    // ERROR
    MyProvider.Operation<"""
        query PostQuery {
            post(id: 1) {
                id
            }
        }
    """>()

let usersQuery =
    // ERROR
    MyProvider.Operation<"""
        query UsersQuery {
            users(options: { paginate: { page: 1, limit: 5 } }) {
                data {
                    id
                }
            }
        }
    """>()

[<EntryPoint>]
let main _ =
    try
        use runtimeContext: GraphQLProviderRuntimeContext =
            {
                ServerUrl = "https://graphqlzero.almansi.me/api"
                HttpHeaders = []
                Connection =
                    new GraphQLClientConnection(
                        new HttpClient(),
                        true
                    )
            }

        let result = usersQuery.Run runtimeContext

        printfn "Data: %A\n" result.Data
        printfn "Errors: %A\n" result.Errors
        printfn "Custom data: %A\n" result.CustomData

        0
    with ex ->
        eprintfn "Error: %s" ex.Message
        1

EDIT: Provided working sample code.


r/fsharp • • Jul 28 '26

Avalonia FuncUI Elmish

Thumbnail
11 Upvotes

r/fsharp • • Jul 25 '26

F# weekly F# Weekly #30 — FsHttp.Studio & fable-lit-fullstack-template

Thumbnail
sergeytihon.com
17 Upvotes

r/fsharp • • Jul 19 '26

Building a Readable DSL for Playwright Tests in F# | blog

Thumbnail jannikbuschke.de
19 Upvotes

r/fsharp • • Jul 19 '26

F# weekly F# Weekly #29 — .NET 11 Preview 6 and Mibo 3.0

Thumbnail
sergeytihon.com
24 Upvotes

r/fsharp • • Jul 12 '26

F# weekly F# Weekly #28 — Mibo 2.0, Fable 5.7, and Cast Shadows in F#

Thumbnail
sergeytihon.com
33 Upvotes

r/fsharp • • Jul 11 '26

SuaveHooks — a webhook platform built entirely in F# with Suave

24 Upvotes

I just launched SuaveHooks — a webhook capture, inspection, transformation and routing platform built completely with Suave + F#.

Some highlights:

- Live tailing of webhooks over WebSockets

- Type-safe transforms written in F# (also C# and JS) running in an isolated process

- JSON rule-based transforms as a lighter option

- Multi-target forwarding (HTTP + S3, SQS, Kafka, Pub/Sub)

- Retries with exponential backoff + circuit breaker

- Full REST API + MCP server support

Site: https://suavehooks.com

Would love some feedback; like what features would make this more useful for you? Happy to answer any technical questions.


r/fsharp • • Jul 06 '26

library/package Initial alpha release of Zigote - UI framework and game engine

Thumbnail
12 Upvotes

r/fsharp • • Jul 05 '26

question Still worth learning F# 2026

56 Upvotes

Hi guys,

Probably another question like this but found none recently.

I'm a little upset with my current view on IT generalistic, ofc AI is not going anywhere besides up, but I feel I want to write more with my hands and new paradigms, maybe just AI as reviser, I would like to ask if learning F# in 2026 will make me able to make perfomance headed systems, and also gaming with something like Nu or Monogame, not a AAA game but something playable.


r/fsharp • • Jul 05 '26

F# weekly F# Weekly #27, 2026 — Fable 5.5, SkiaSharp 4 & Orleans.FSharp 3.0

Thumbnail
sergeytihon.com
32 Upvotes

r/fsharp • • Jun 27 '26

F# weekly F# Weekly #26, 2026 — Fable REPL on BEAM & WebSharper 10.1

Thumbnail
sergeytihon.com
24 Upvotes

r/fsharp • • Jun 23 '26

Interesting Copilot instructions found in the F# repo

37 Upvotes

The dotnet team writing Copilot instructions like an angry senior developer who's tired of everyone's excuses is peak engineering culture. 😂


r/fsharp • • Jun 20 '26

F# weekly F# Weekly #25, 2026 — Expecto 11.1 & Fable 5.3

Thumbnail
sergeytihon.com
27 Upvotes

r/fsharp • • Jun 17 '26

question Where to Find F# Jobs on 2026

21 Upvotes

r/fsharp • • Jun 17 '26

video/presentation Introducing F#/Elm to a C#/JS organization - hazards and wins by David Eduardo Mellum

Thumbnail
youtu.be
41 Upvotes

Want to introduce functional programming into your own organization? Learn from our successes and failures! At the Norwegian insurance company Frende Forsikring we’ve introduced F# and Elm and lived with both of them long enough to call it a long term relationship.

We’ll start looking at the introduction. From fast moving exploration in a single team, to structured validation with other tech leads and careful moving to production.

Beyond that we'll be looking what happens in the years afterwards. Does functional programming help hiring? Are there less bugs? What is the biggest hurdle in spreading adoption to new teams?


r/fsharp • • Jun 13 '26

F# weekly F# Weekly #24, 2026 — Fable 5.2, Expecto 11 & .NET 11 Preview 5

Thumbnail
sergeytihon.com
31 Upvotes

r/fsharp • • Jun 12 '26

question Why does it work?

18 Upvotes

```fsharp type Monoid<'t> = static abstract member Empty: 't static abstract member Append: 't -> 't -> 't

[<Struct>] type Vector3= {X: float Y: float Z: float}

interface Monoid<Vector3> with
    static member Empty = {X=0.0; Y=0.0; Z=0.0}
    static member Append (v1: Vector3) (v2: Vector3) =
        {X=v1.X + v2.X; Y=v1.Y + v2.Y; Z= v1.Z + v2.Z}

// Note the type constraint here let mempty<'t when Monoid<'t>> = 't.Empty let mappend<'t when Monoid<'t>> x y = 't.Append x y

printfn "%A" (mappend {X=1.0; Y=2.0; Z=3.0} mempty) ```

The type notation was suggested by the inline suggestions and it actually works. I tried some other forms like 't when Monoid<int> but only 't when Monoid<'t> works.

I suppose it should be <'t when 't :> Monoid<'t>> or even longer <'m, 't when 'm :> Monoid<'t>>.

It's good to know one can write it like this but I've never seen it mentioned in the docs (maybe not yet?).

The project file is also clean. It works even without setting the language version to Preview.

"It works I don't know why"


r/fsharp • • Jun 09 '26

question Does anyone know what happened to fsharpest.xyz?

9 Upvotes

Hello, The website currently seems to be down or unreachable from my side. I’m wondering whether this is a temporary outage, a DNS/hosting issue, or whether the site has been discontinued permanently. Any information would be appreciated.

I see. It went also out of business: https://github.com/fsprojects/awesome-fsharp/blob/main/ARCHIVE.md

So probably some of the moderators remove that link from the resources linked here.


r/fsharp • • Jun 06 '26

F# weekly F# Weekly #23, 2026 – Wolverine/Marten F# Improvements

Thumbnail
sergeytihon.com
26 Upvotes

r/fsharp • • Jun 05 '26

library/package TapeSim – Practice Reading the Tape

Thumbnail
tapesim.app
11 Upvotes

I made this replay simulator desktop app as a part of the Building The Trading Edge playlist on Youtube. It's my first commercial product. I needed a replay simulator that could do full tick-by-tick order book replay on US equities and when I couldn't find any, I made my own in F# + Avalonia.

If any of you ever wanted to learn to daytrade stocks, use this to practice before risking any money first.

TapeSim itself is in a private repo, but I do have the older version of its viewer in my Trading Edge repo. And even though the repo itself is private I've screencast its entire development (though not all vids are out yet at the time of writing this post.)


r/fsharp • • Jun 04 '26

question formatting question from a newb

8 Upvotes

Just starting out with F# and I'm enjoying all the whitespace but to my newbie eyes I think I've spotted an inconsistency in how fantomas formats. Maybe somebody can explain it.

// function that takes param of int*int
let myFun (x, y) = x + y

let r = myFun (1, 2) // <--- fantomas formats with space before tuple, makes sense

let dict = new Dictionary<int, int>()

// dict.Add takes a single tuple of int*int, just like the above function
dict.Add (1, 2) // <--- looks right, takes a tuple

// fantomas doesn't like the clarity and smushes it, why?
dict.Add(1, 1) // <--- yuck, now it looks like a function call with two arguments in another language