Filter EngineZ
A generic, isomorphic, framework-agnostic TypeScript data filter engine — for filtering arbitrarily-complex data on arbitrarily-shaped datasets, anywhere JavaScript runs.
Live demos
Learn the engine
Install the core
pnpm add @filter-enginez/core
Then add the binding for your stack, such as
@filter-enginez/react-signals
for React or
@filter-enginez/angular-rxjs
for Angular.
Live demos
Six stacks, one engine
The same engine over the same three datasets — books, wine reviews and real estate — under six front-end stacks. Each demo is its own site, and its Compare button opens your current filters in all six.
- React + Redux Toolkit Live The optional Redux mirror, with the engine as the source of truth react-rtk.filterenginez.com
- React Live The same app with no store library at all react.filterenginez.com
- SvelteKit Live The engine in SvelteKit’s own server tier, with server rendering svelte.filterenginez.com
- Vue Live Vue 3 and Vue Router over the signals binding vue.filterenginez.com
- Angular Live Zoneless and standalone, consuming the engine’s Observables angular.filterenginez.com
- Vanilla TypeScript Live No framework: hand-written DOM over the signals facade and the bare core vanilla.filterenginez.com
All six apps, the documentation site and the design system are one open-source repository: mlilli/filter-enginez-examples
The engine
What it does
You describe filters as rules, in code or as JSON, and the engine evaluates them over your data, returns what passes, and tells subscribers when that changes. The core has no framework and no browser dependency, so the same engine runs in a browser, in Node, or in a Web Worker.
-
Built-in rules
Range, set membership, numeric comparison, date range, text and fuzzy search, regex, geo proximity, hierarchy and more, plus a contract for writing your own.
-
Boolean composition
And, or and not, arbitrarily nested; or flat rules grouped into “any of these” facets.
-
Filters as data
Round-trip a whole filter panel through validated JSON:
exportConfigwrites it andloadConfigreads it back. -
Acceleration
Roaring Bitmaps for rule intersection, an R-tree for geo queries, Bayesian co-occurrence for suggested filters, and MinHash with LSH for “find similar items”.
-
Exclusion-aware panels
Disable the options that would lead to zero results, before anyone selects them.
-
Devtools
Action log, time travel, state diffing, replay, and a Redux DevTools bridge.