import { createSignal } from "solid-js";
export default function App() {
const [count, setCount] = createSignal(0);
return (
<view flex={{ align: "center", justify: "center", expand: true }}>
<text fontSize={48} fontWeight="bold">
{count()}
</text>
<gestureDetector onTap={() => setCount(c => c + 1)} />
</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),
));
}Fuse is a framework for building native apps with SolidJS and Flutter. Reactive signals drive real widgets through an embedded JS engine. No webview, no bridge serialization, no compromise. Write TSX, render with Impeller, ship to all platforms.
Why Solid Fuse
The best parts of two ecosystems, connected at the rendering layer.
Fine-grained reactivity
Signals propagate directly to widget props. No VDOM, no diffing. A signal changes, one widget rebuilds.
const [count, setCount] = createSignal(0);
// signal changes → one widget rebuilds
<text fontSize={48}>{count()}</text>
<gestureDetector onTap={() => setCount(c => c + 1)} />Native performance
Impeller GPU rendering. Rust-powered JS runtime. Even fetch and crypto run at native speed.
Easy to extend
Write a Dart class, add a JSX type, register it. Any Flutter widget becomes a JSX element.
// JSX type
badge: { label: string; color?: ColorInput };
// Dart widget
class FuseBadge extends StatelessWidget {
const FuseBadge(this.node);
final FuseNode node;
@override
Widget build(BuildContext context) {
return Chip(label: Text(node.string('label') ?? ''));
}
}
// Register
runtime.registerWidget('badge', FuseBadge.new);Hot reload
Vite HMR on a real device. Edit, save, see it update — without restarting Flutter.
From signal to pixel
TypeScript runs in QuickJS, embedded via FFI. Signals flow directly to native widgets.
The best of both worlds
TypeScript for your app logic. Flutter for rendering. You don't compromise on either.
How it stacks up
| solid-fuse | react native | flutter | capacitor | |
|---|---|---|---|---|
| language | TypeScript | JS / TS | Dart | JS / TS |
| rendering | Impeller (GPU) | native views | Impeller (GPU) | webview |
| reactivity | signals | VDOM diff | setState | VDOM diff |
| npm ecosystem | ✓ | ✓ | ✕ | ✓ |
| pixel-perfect | ✓ | ✕ | ✓ | ✕ |
| ota updates | ✓built-in | ✓codepush | ✕ | ✓native |
Start building.
Zero to running app in under a minute.