Installation
You can either manually install and setup or use the dotnet templates.
Partas.SolidStart
If you quickly just want to get started and give the framework a try, then we recommend using the Partas.SolidStart Templates.
Templates using solid-start can be used to quickly spin up a preconfigured environment1.
The SolidStart templates use the Solid-JS meta framework of the same name.
It is a preconfigured full-stack framework.
We are able to plugin a dotnet backend to make the best of both worlds, but that is outside the scope of these docs.
Template Quick Start
dotnet new install Partas.Solid.Start.TemplatesThis will provide you quick access to several templates:
dotnet new bare-devtoolsdotnet new tailwind-devtoolsdotnet new solidbase-devtoolsdotnet new mdx-devtools| Template Name | Included libraries | Description |
|---|---|---|
bare-devtools | solid-devtools | Barebones template with devtools pre-setup |
tailwind-devtools | tailwind v4; solid-devtools | Barebones template with tailwindcss v4 and devtools |
solidbase-devtools | solidbase; solid-devtools | SolidBase static website framework with devtools |
mdx-devtools | solid-mdx; solid-devtools | MDX based site template with devtools |
Build Scripts
Due to the nature of the SolidStart meta framework, using Fable with a run command would cause vinxi to start up a production
server which wouldn't work.
To remediate this, we use the SAFE-Stack build project based on FAKE to run Fable and vinxi in parallel.
Available Commands:
dotnet run setupdotnet run devdotnet run restoreSetup
After creating your template, navigate to the root of the solution and run:
dotnet run setupThis will:
- Install
Fable2 - Install all NPM & Dotnet dependencies
- Start the Development Server
The NPM dependency installation can take up to 5 minutes (varies) on the first run.
Be patient!
Dev Server
To startup the dev server, just run:
dotnet run devCustom Scripts
See Program.fs in the Build.fsproj to see how the scripts work.
Since the templates rely on .js and .jsx config files, the build system
compiles to .fs.jsx by default.
When running dev mode, all .fs.jsx files are cleaned out.
Manual
Fable 5
Ensure you have Fable 5.0+ installed3.
// Create your dotnet tool manifest in a new solutiondotnet new tool-manifest
// Install fable to solutiondotnet tool install FablePartas.Solid
dotnet add package Partas.Solidpaket install Partas.SolidNPM
This gives you everything you need to start (ie you can compile with fable and see the output JSX).
But to actually run the output, you'll need to setup your JavaScript runtime using Vite or whatever bundler/process
you choose. You'll then need to fulfill the JS dependencies such as solid-js to start.
npm install solid-jsBindings
Femto
When installing or using the bindings I've crafted, you can use femto to also manage the NPM dependencies. However, for some libraries this might not be possible (as they may have components packaged in versioned libraries themselves).
Compiling/Usage
Compile with the following flags passed to fable:
-e .fs.jsx -c Release [--typedArrays false]JSX
This plugin compiles to JSX. You will need to therefore tell Fable to compile your JS files with the .jsx extension.
Release vs Debug AST
F# & Fable give different AST trees between Release and Debug mode. The plugin was developed with Release mode in mind.
This is a non-issue until you try to compile with fable watch.
When compiling with
Typed arrays
Fable uses the most optimised/performant primitives when compiling to js (ie not ts). This means integer arrays are
compiled into the Int32Array primitives in js.
This becomes an issue when you're passing arrays of integers to libraries like ApexCharts.
There are two solutions to the problem, you can either disable typed arrays using a fable flag, or you can cast the integers into a different type box 5.
-e .fs.jsx-c Release--typedArrays falseFootnotes
-
These docs are made using the
solidbase-devtoolsPartas.SolidStart template! ↩ -
This will install
fableusing the--prereleaseflag, since this plugin relies on Fable 5.0 ↩ -
At the time of writing, Fable 5 is still in alpha (although it is absolutely usable, it is understandable if this is a dealbreaker until a stable release), to install it, you might need to pass the
--prereleaseflag. ↩
Last updated: 7/11/25, 1:35 AM