the problem
Filter UIs that change page state but live outside the URL are a UX trap: users can’t share links, can’t refresh without losing context, and back/forward buttons do the wrong thing. Most projects fix this with ad-hoc serialisation glue per page.
the approach
A zero-dependency TypeScript library that takes a list of input/select elements and a config,
then keeps them and URLSearchParams two-way synced. Updates push to history cleanly so
back/forward replays user intent. Works in any framework or vanilla DOM.
stack
- TypeScript, no runtime dependencies
- Vite library build
- Demo + tests on GitHub Pages