Fusée is a JavaScript framework, currently at v1.6.0, designed for high-performance and fine-grained reactivity. It emphasizes a "signals-first" approach, where atomic updates ensure only modified DOM parts are rendered, aiming for peak performance. The framework features a recursive, non-greedy compiler for efficient node traversal and a strict component system that includes prop validation, lifecycle hooks like `onMount` and `onUnmount`, and automated cleanup. It also provides optimized directives such as `f-if`, `f-for`, and `f-model`, alongside a `Performance Shield (f-once)` for stabilizing static subtrees. Fusée integrates with Vite for a fast development workflow and offers a comprehensive CLI for project scaffolding, supporting both JavaScript and TypeScript templates. It differentiates itself through its custom compiler and strong focus on explicit performance optimizations, backed by a robust test suite covering reactivity, components, dependency injection, and type safety. There's no fixed release cadence mentioned, but updates appear regular.
npm install fusee-frameworkVerified import paths — ran on the pinned version, not inferred.
This demonstrates how to install the Fusée CLI globally and scaffold a new project, then run it in development mode.
Always update signals by calling them with the new value: `mySignal(newValue)` instead of `mySignal.value = newValue` or other direct mutations.
Reserve `f-once` for genuinely static subtrees of your DOM. If content within `f-once` needs to react to changes, remove the directive or restructure your component.
Ensure all `onMount`, `onUnmount` (and similar) calls are made directly at the top level of your `setup` function and not inside `if` statements, `setTimeout`, or `async` blocks.
Follow the official Fusée scaffolding via `create-fusee-app` for a guaranteed working Vite setup. If customizing, ensure Vite targets a browser environment for client-side rendering.
Add `import { defineComponent } from 'fusee-framework';` at the top of your component file.Ensure `import { signal } from 'fusee-framework';` is present and that `signal` is not redeclared in your scope.Ensure `f-model` is assigned directly to a signal's name (e.g., `<input f-model="mySignal" />`) and not an expression like `mySignal()` or `mySignal.value`.
No dependency data recorded yet.