Engine portability
The same filter state, in all 6 stacks
Every demo app reads its state from the same
?f
parameter, through a serializer whose decode detects its own format tag. A link built here opens in any of them
— React, Vue, Svelte, Angular, or no framework at all — and reproduces the identical result set.
h~{"label":"fiction · published 2000–2025","rules":[{"id":"genre","rule":{"config":{"set":["fiction"]},"field":"genre","type":"InSetRule"}},{"id":"publication-year","rule":{"config":{"max":2025,"min":2000},"field":"publicationYear","type":"RangeRule"}}],"version":1}
- React RTKReact 19
Adds the optional Redux mirror via redux-bridge — the engine stays the source of truth.
@filter-enginez/react-signalssignals - React plainReact 19
The same app with no store library at all, proving the Redux mirror is optional.
@filter-enginez/react-signalssignals - SvelteKitSvelteKit 5
Runs the isomorphic core in SvelteKit’s own server tier, with a zero-JS SSR fallback.
@filter-enginez/svelte-signalssignals - VueVue 3
Holds the engine in shallowRef — Vue’s deep proxy would break its signals.
@filter-enginez/vue-signalssignals - AngularAngular 22
Zoneless and standalone; consumes the engine’s Observables natively, so the binding is DI only.
@filter-enginez/angular-rxjsrxjs - VanillaNone
/books goes through reactive-signals, /books-raw through the bare core — the pair shows what the adapter buys.
no binding — bare corenone
Each link is a full page load into that app, which reads the state from
?f
as it boots.
Every demo