EveryState.js

Observable state management with dot-path addressing.
Works with React, Vue, Angular, Solid, or no framework at all.

get, set, subscribe - that's the whole API. ~6 KB, zero dependencies.

app.js
Live Preview
0
State Tree

Why EveryState?

One Primitive

get, set, subscribe. No actions, reducers, selectors, or slices. State in, state out.

Path-Based

Nested state via dot paths: user.profile.name. Wildcard subscriptions: user.* fires on any child change.

Framework-Agnostic

Works with React, Vue, Angular, vanilla JS, or server-side Node. The same store, same logic, any view layer.

Async Built-In

setAsync manages loading/success/error lifecycle automatically. Auto-aborts in-flight requests.

Zero Dependencies

~6 KB total. Pure JavaScript. No build step required. Works in a <script type="module"> tag.

Testable by Design

Business logic lives in subscribers, not components. Test everything without mounting a single component.

The Ecosystem

Every package is MIT-licensed, independently versioned, and has zero third-party dependencies.

@everystate/core

Reactive store with path-based get/set/subscribe, wildcard listeners, async operations, batch updates, and query client.

@everystate/angular

Angular 17+ adapter. usePath, useIntent, useWildcard, useAsync bridged to Angular signals.

@everystate/react

React 18 adapter. usePath, useIntent, useWildcard, useAsync hooks + EventStateProvider.

@everystate/solid

Solid adapter. usePath, useIntent, useWildcard, useAsync bridged to Solid signals.

@everystate/vue

Vue 3 adapter. provideStore, usePath, useIntent, useWildcard, useAsync composables.

@everystate/css

State-driven CSSOM engine. Reactive design tokens, typed validation, WCAG contrast enforcement - all via dot paths.

@everystate/view

DOM structure as first-class state. DOMless resolve + surgical DOM projector. View tree is state.

@everystate/renderer

Direct-binding reactive renderer: bind-*, set, each attributes. Zero build step.

@everystate/router

SPA routing as state. Routes, params, query strings live in your store at ui.route.*.

@everystate/test

Event-sequence testing. Trigger state changes and assert values, types, and event firings.

PackageDescriptionType
@everystate/core Path-based state management with wildcard subscriptions and async support core
@everystate/css Reactive CSSOM engine: design tokens, typed validation, WCAG enforcement core
@everystate/angular Angular 17+ signals adapter: usePath, useIntent, useAsync adapter
@everystate/react React 18 hooks adapter: usePath, useIntent, useAsync adapter
@everystate/solid Solid signals adapter: usePath, useIntent, useAsync adapter
@everystate/vue Vue 3 composables adapter: provideStore, usePath, useIntent adapter
@everystate/view State-driven view: DOMless resolve + surgical DOM projector core
@everystate/renderer Direct-binding reactive renderer. Zero build step tool
@everystate/router SPA routing as state tool
@everystate/perf Performance monitoring overlay tool
@everystate/test Event-sequence testing for stores tool
@everystate/aliases Ergonomic single-character DOM aliases for vanilla JS util
@everystate/types Typed dot-path autocomplete for TypeScript util
@everystate/examples Example applications and patterns util

How It Compares

FeatureEveryStateReduxZustandPinia
Framework-agnostic---
Dot-path addressing---
Wildcard subscriptions---
Built-in async lifecycle---
State-driven CSS---
Zero dependencies--
No build step needed---
Test without framework-

Three Lines to Reactive State

import { createEveryState } from '@everystate/core';

const store = createEveryState({ count: 0, user: { name: 'Alice' } });

store.subscribe('count', (value) => console.log('Count:', value));
store.set('count', 1);  // logs "Count: 1"
store.get('count');      // 1
Start the Tutorial →