I built Effuse as a lightweight, reactive UI library designed for building modern web interfaces with a focus on simplicity and composability. My goal was to create a framework that prioritizes fine-grained reactivity through Signals, providing a familiar developer experience without the inherent complexity of a Virtual DOM.
import { define, signal } from '@effuse/core'
const Container = define({
script: () => {
const name = signal('World')
return { name }
},
template: ({ name }) => (
<div>
<h1>Hello {name}!</h1>
<p>Welcome to Effuse</p>
</div>
)
})
export default Container
A Powerful Internal Engine
One of the most important technical choices I made was to power Effuse internally with the Effect library. I use Effect to make side effects and asynchronous flows more predictable and expressive.
However, I want to emphasize that Effect is used strictly under the hood. I have designed the public API to be 100% Vanilla TypeScript, so you do not need to learn Effect or manage its complex return types to use Effuse. You get all the stability and performance of a functional engine while writing standard, clean TypeScript code.
A Comprehensive Ecosystem
I have expanded Effuse into a suite of specialized packages to handle different aspects of modern web development:
• @effuse/core: My core reactivity engine and DOM rendering system.
• @effuse/compiler: An optimized JSX/TSX transformer I developed to handle reactive signal access automatically, reducing boilerplate.
• @effuse/router: A simple, type-safe router for SPA navigation.
• @effuse/store: A functional state management library based on Effect.
• @effuse/query: A library for reactive data fetching with built-in reliability.
• @effuse/ink: A reactive Markdown renderer with support for embedded components.
Project Status & Vision
I want to be clear that Effuse is currently an experimental project driven by my own learning and exploration. It is not intended to compete with or replace established frameworks like React, Vue, or Solid. Instead, it is my personal space to experiment with new APIs and reactive patterns.
Because the project is still in development, it is not yet ready for production use. I am primarily looking for thoughts and feedback from developers who enjoy poking around experimental projects and exploring different approaches to UI development.
If you find my work interesting, please consider supporting the project with a ⭐ on GitHub!
GitHub: https://github.com/chrismichaelps/effuse
Docs: https://effuse-doc.vercel.app/
Top comments (0)