SignalForge logo

Fine-Grained Reactive State Management for Modern JavaScript

A simple, fast, and powerful state management library for React and React Native. Your UI automatically updates when data changes. No complexity, no boilerplate, just signals.

ðŸŠķ2KB gzipped
⚡33x faster
ðŸ“ĶZero deps
ðŸŽŊTypeScript

What is SignalForge?

SignalForge is a reactive state management library that makes building interactive UIs incredibly simple. Think of signals as "smart variables" that automatically notify your UI when they change.

// Create a signal (smart variable)
const count = createSignal(0);

// Computed values auto-update
const doubled = createComputed(() => count.get() * 2);

// Effects run when dependencies change
createEffect(() => {
  console.log('Count is now:', count.get());
});

count.set(5);  // UI updates automatically! âœĻ

Unlike Redux or Context API, SignalForge requires no providers, no actions, no reducers. Just create signals and watch your app come alive.

Why Choose SignalForge?

✅

Super Easy

Only 3 core functions to learn. No Redux complexity, no boilerplate.

⚡

Blazing Fast

Updates 33x faster with batching. Handles thousands of signals smoothly.

ðŸŠķ

Tiny Bundle

Just 2KB gzipped. Zero dependencies. Tree-shakeable.

🌍

Works Everywhere

React, React Native, Next.js, or plain JavaScript. SSR ready.

ðŸ’ū

Persistence Built-in

Auto-save to localStorage or AsyncStorage with one line of code.

🛠ïļ

DevTools Ready

Time travel debugging, signal inspection, and performance monitoring.

📚 Learn by Doing - Interactive Demos

15 hands-on examples that teach you SignalForge from beginner to advanced

ðŸ’Ą Start with "Basic Signal" - learn the fundamentals in 30 seconds!

Beginner
ðŸŽŊ

Basic Signal

Learn in 30 seconds! Create reactive state with just one hook. Perfect for beginners.

📖 How to use useSignal() to create and update state
Try it now
Beginner
ðŸ§Ū

Computed Signal

Auto-calculating values that update when dependencies change. No manual tracking needed.

📖 Derive values automatically from other signals
Try it now
Beginner
⚡

Effects

Run side effects when signals change. Built-in cleanup. Simpler than useEffect.

📖 React to signal changes with automatic cleanup
Try it now
Beginner
⚛ïļ

React Hooks

useSignal, useSignalValue, useSignalEffect - React integration made simple.

📖 All the React hooks you need for SignalForge
Try it now
Intermediate
🚀

Batch Updates

Update multiple signals at once. 33x faster than sequential updates.

📖 Optimize performance with batched updates
Try it now
Intermediate
👂

Subscribe

Listen to signal changes outside React. Perfect for logging or analytics.

📖 Monitor signal changes with subscriptions
Try it now
Intermediate
🛒

Shopping Cart

Real e-commerce cart with add/remove items, quantities, and total calculation.

📖 Build a complete shopping cart feature
Try it now
Intermediate
📝

Form Validation

Dynamic form with real-time validation, error messages, and submission handling.

📖 Create forms with live validation
Try it now
Intermediate
✅

Todo App

Full CRUD app with add, edit, delete, and filter. Classic example done right.

📖 Build a complete CRUD application
Try it now
Intermediate
📋

Array Signal

Work with arrays efficiently. Push, filter, map - all optimized for signals.

📖 Handle arrays with signal-optimized methods
Try it now
Advanced
🔓

Untrack

Read signals without creating dependencies. Advanced control over reactivity.

📖 Fine-tune reactivity with untrack()
Try it now
Advanced
ðŸ’ū

Persistent Signal

Auto-save to localStorage. One line of code for data persistence.

📖 Persist state across page reloads
Try it now
Advanced
📊

Big Data

Handle 10,000+ items smoothly. See how SignalForge scales.

📖 Test performance with large datasets
Try it now
Advanced
🛠ïļ

DevTools

Inspect signals in real-time. Debug like a pro with time-travel.

📖 Debug with signal inspector and profiler
Try it now
Advanced
⏱ïļ

Time Travel

Undo/Redo built-in. Travel back in time through state changes.

📖 Implement undo/redo functionality
Try it now

About Forge Community

Forge Community is an open-source collective dedicated to building high-quality, developer-friendly tools for the modern JavaScript ecosystem.

ðŸ”Ļ

Crafted with Care

Every tool is meticulously designed, tested, and optimized for real-world use.

🌟

Open Source

100% free and open. MIT licensed. Community-driven development.

🚀

Production Ready

Battle-tested in production apps. Comprehensive docs and support.

Get Started in 30 Seconds

1. Install
npm install signalforge
2. Use in React
import { useSignal } from 'signalforge/react';

function Counter() {
  const [count, setCount] = useSignal(0);
  
  return (
    <button onClick={() => setCount(count + 1)}>
      Clicked {count} times
    </button>
  );
}
3. That's it! 🎉

No providers, no context, no configuration needed. Just install and use.

Core Concepts

Master these three concepts and you know 90% of SignalForge

ðŸŽŊ

1. Signals - Reactive Variables

Signals are containers for values that notify subscribers when they change. Think of them as "smart variables" that your UI can watch.

const username = createSignal('John');
const count = createSignal(0);

// Read values
console.log(username.get());  // 'John'

// Update values
username.set('Jane');
count.set(count.get() + 1);

// Your React components automatically re-render! âœĻ
ReactiveType-safeWritable
ðŸ§Ū

2. Computed - Auto-Calculating Values

Computed signals automatically recalculate when their dependencies change. Perfect for derived state like totals, filtered lists, or formatted data.

const price = createSignal(100);
const quantity = createSignal(3);

// Automatically updates when price or quantity changes
const total = createComputed(() => 
  price.get() * quantity.get()
);

console.log(total.get());  // 300
price.set(150);
console.log(total.get());  // 450 - Updated automatically! 🎉
Auto-updatingMemoizedRead-only
⚡

3. Effects - Side Effects with Cleanup

Effects run code when signals change. Great for logging, API calls, DOM updates, or syncing with external systems. Cleanup functions prevent memory leaks.

const theme = createSignal('light');

createEffect(() => {
  // Runs when theme changes
  document.body.className = theme.get();
  console.log('Theme changed to:', theme.get());
  
  // Optional cleanup
  return () => {
    console.log('Cleaning up old theme');
  };
});

theme.set('dark');  // Effect runs automatically!
Side effectsAuto-cleanupReactive

How Does It Compare?

See how SignalForge stacks up against popular alternatives

FeatureSignalForgeReduxZustandContext API
Bundle Size2KB45KB3KB0KB (built-in)
Learning Curve5 mins2-3 days30 mins1 hour
BoilerplateNoneHeavyMinimalMedium
Fine-Grained Updates✅❌❌❌
TypeScript✅ Built-in✅✅✅
DevTools✅ Built-in✅ Extension⚠ïļ Limited❌
Time Travel✅ Built-in✅ Via DevTools❌❌
Persistence✅ Built-in⚠ïļ Middleware⚠ïļ Manual❌

ðŸ’Ą Pro Tip: SignalForge combines the simplicity of Context API with the power of Redux and the performance of fine-grained reactivity.

Perfect For

SignalForge shines in these scenarios

🛒

E-commerce Apps

  • ✓Shopping cart with auto-calculated totals
  • ✓Product filtering and sorting
  • ✓Persistent user preferences
  • ✓Real-time price updates
📝

Forms & Validation

  • ✓Real-time field validation
  • ✓Computed form state (valid/invalid)
  • ✓Auto-save drafts
  • ✓Complex multi-step wizards
📊

Dashboards & Analytics

  • ✓Real-time data visualization
  • ✓Filtering and aggregation
  • ✓Performance with large datasets
  • ✓Interactive charts and graphs
ðŸ“ą

Mobile Apps (React Native)

  • ✓Tiny bundle for fast app startup
  • ✓AsyncStorage persistence out-of-box
  • ✓Smooth 60fps animations
  • ✓Offline-first capabilities
ðŸŽŪ

Real-Time Applications

  • ✓Chat applications
  • ✓Collaborative editing tools
  • ✓Live sports scores
  • ✓Stock tickers and trading platforms
ðŸŽĻ

Creative Tools

  • ✓Image editors with undo/redo
  • ✓Design tools with live preview
  • ✓Configuration builders
  • ✓Theme customization panels

Performance That Matters

Real benchmarks from our test suite

33x
Faster Updates
Batched updates vs individual changes
10,000+
Signals
Handle thousands of signals smoothly
<1ms
Update Time
Sub-millisecond reactivity

Why It's So Fast

ðŸŽŊ
Fine-Grained Reactivity
Only updates components that actually use changed signals
⚡
Smart Batching
Groups multiple updates into a single render
🧠
Automatic Memoization
Computed values cache results until dependencies change
ðŸŠķ
Minimal Overhead
Tiny runtime with zero unnecessary abstractions

Built with âĪïļ by Forge Community

MIT Licensed â€Ē TypeScript â€Ē 2KB gzipped â€Ē Zero Dependencies