What is Fuse?
SolidJS 2.0 inside Flutter, rendering native widgets
Fuse lets you write your UI in SolidJS and render native Flutter widgets. It's not a webview — your JSX compiles to real Flutter layout, gestures, and navigation via FJS, a high-performance JavaScript runtime built with Rust and powered by QuickJS.
Signals update widget props. Flutter rebuilds. Events flow back as function calls. The reactive loop is seamless.
Because the native side is just Flutter, the whole pub.dev ecosystem is yours — drop in a charting, maps, or video package and wrap it for JSX in a few lines of Dart.
Quick taste
A counter app — the JS component and the Dart entry point that boots it:
import { createSignal } from "solid-js";
import { GestureDetector, Text, View } from "solid-fuse";
export default function App() {
const [count, setCount] = createSignal(0);
return (
<View
flex={{ align: "center", justify: "center", expand: true }}
padding={24}
>
<Text fontSize={48} fontWeight="bold">
{count()}
</Text>
<GestureDetector onTap={() => setCount((c) => c + 1)}>
<View
padding={{ horizontal: 24, vertical: 12 }}
decoration={{ color: "blue", borderRadius: 8 }}
>
<Text color="white" fontSize={16}>
Tap me
</Text>
</View>
</GestureDetector>
</View>
);
}import 'package:flutter/material.dart';
import 'package:solid_fuse/solid_fuse.dart';
import '_generated/fuse_packages.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final runtime = await FuseRuntime.create();
registerFusePackages(runtime);
await runtime.start();
runApp(MaterialApp(home: FuseView(runtime: runtime)));
}That's the entire app. fuse dev starts both Vite and Flutter — hot module replacement included.