Omni Async
Framework-independent asynchronous state for TypeScript.
Omni Async keeps request state, concurrency, cancellation, and notifications in a small core operation. React, Vue, and Svelte adapters expose the same behavior through each framework's native reactivity model.
Why Omni Async?
- One state engine — adapters share the same tested lifecycle semantics.
- Separate state fields — consume
data,error, loading state, and status independently. - Typed parameters and data — handlers determine trigger arguments and result types.
- Explicit concurrency — keep all requests active or let only the latest update state.
- Cancellation — abort supported work and prevent stale requests from updating state.
- Custom equality — suppress notifications when an update is not meaningful to your application.
Packages
| Package | Purpose |
|---|---|
@omni-async/core | Dependency-free async operation primitive |
@omni-async/react | React hooks backed by useSyncExternalStore |
@omni-async/vue | Vue composables backed by refs and computed state |
@omni-async/svelte | Svelte readable stores and lifecycle helpers |
Continue with the quick start.