It's more than 18 months since the release of SAFE Stack 5.0, the last major upgrade to SAFE Stack. Of course we love SAFE Stack at Compositional IT. In addition to upgrading to the then-latest LTS version of .NET 8 and F# 8 it also saw the upgrade to Fable 4, switching from Webpack to Vite for JavaScript bundling, and moving to Tailwind for styling.
.NET upgrade
As Microsoft readies to ship .NET 10, we're planning for the next major release of SAFE Stack. What can we expect in version 6?
Certainly we'll upgrade to .NET 10 and F# 10. What else?
Built-in component library with Daisy UI
We've posted before that we like using Daisy UI, a component library built on top of Tailwind, in our SAFE Stack applications, and many of our customers do the same. For SAFE Stack 6, we intend to include Daisy UI as part of the default package.
JavaScript compiler upgrade - Fable 5
We'll explore migrating from Fable 4 to Fable 5, the latest version of the F# to JavaScript compiler, currently in alpha.
Stretch goal: better support for task
in API functions
Finally for now we want to look at whether we can use task
Computation Expressions in Remoting, the mechanism that makes client-server API calls exceptionally straightforward in SAFE Stack.
Currently this requires that the API functions return Async<'T>
. In practice we find that many of our API functions take the form:
let apiMethod() =
task {
(** ... .NET asynchronous calls which return Task<'T> here ... **)
}
|> Async.AwaitTask
Whereas ASP.NET Core and Giraffe support Task<'T>
out of the box. We'd love to be able to skip the Async.AwaitTask
call to support better interoperability with .NET libraries - eliminate task->async->task in the API implementation - and reduce the boilerplate.
Comments? And thanks!
As always, we are incredibly thankful to the wonderful F# community who maintain these amazing projects, and we're glad to be able to make our own contribution. And thank you to all those using SAFE Stack in your projects.
Is there something you'd like to see in SAFE Stack 6? Please share your thoughts with us on BlueSky. We look forward to hearing from you.