Small TypeScript libraries for the hard parts of the browser.
Cross-tab state. Non-linear flows. The inputs nobody wants to build and everybody wants to import. Rxova ships framework-agnostic cores, React bindings where they earn their place, and APIs small enough to stay still.
Journey
@rxova/journey-core
@rxova/journey-react
@rxova/journey-devtools-bridge
Declarative journey graphs for non-linear UI flows.
Model multi-step, branching flows as a graph instead of a tangle of booleans and effects. Core is framework-agnostic; React bindings and a Chrome DevTools bridge come in the box.
$npm i @rxova/journey-core
JS Core
React
TypeScript
Chrome Extension
react-inputs
@rxova/react-inputs
@rxova/react-intl-currency-input
@rxova/react-rating-input
@rxova/react-otp-input
@rxova/react-password-input
@rxova/react-phone-input
@rxova/react-date-input
@rxova/react-time-input
@rxova/react-tags-input
@rxova/react-file-input
The tricky React inputs, done right.
Nine focused input components — currency, OTP, rating, password, phone, date, time, tags and file. Headless with no stylesheet to import, accessible by construction, and zero runtime dependencies each.
State and messages that exist in every tab, window, and worker.
Share state and messages across every tab, window, and worker — a framework-agnostic core plus React bindings, one small API.
$npm i use-everywhere
import { useSharedState } from 'use-everywhere'
// No Provider. The value now exists in every tab on the origin.
const [count, setCount] = useSharedState('count', 0)
JS Core
React
TypeScript
Cross-tab
Why Rxova
Three projects, one set of rules. These are what Journey, react-inputs and use-everywhere have in common — and what they are held to.
Focused APIs, not frameworks
Each library solves one problem and stops there. No plugin system, no configuration to learn before the first useful line.
TypeScript-first, with explicit framework boundaries
Types are part of the public API, not generated as an afterthought — and the framework-agnostic core always ships apart from its React bindings.
Accessible, tested, production-oriented behaviour
Keyboard handling, ARIA, focus, and locale are part of the component — not an issue filed after launch.
Independent packages, adopted one at a time
Nothing here requires anything else here. Take one package, keep the rest of your stack exactly as it is.
Built and maintained by Jonatan Kruszewski
Senior Frontend Engineer focused on React architecture, reusable developer infrastructure, and tools for complex user interfaces. Rxova is where I build focused open-source libraries with stable APIs, strong TypeScript support, thorough testing, and documentation that answers the question you actually arrived with.
Follow along
Everything here is new and moving. Starring a repo is what tells me which of these is worth the next month of work.