TypeScript Client
This page answers: which Wow TypeScript package does a browser or Node application need, and what does it depend on?
The Wow repository ships the TypeScript side of the Wow HTTP contract. The packages live under typescript/ and build on Fetcher, a general-purpose HTTP client that keeps its own repository and documentation.
Packages
| Package | Use it to | Status |
|---|---|---|
@ahoo-wang/wow-client | Send commands, read snapshots and event streams, and build filters, pagination, and aggregations | On npm since Wow 9.2.0 |
@ahoo-wang/wow-generator | Generate typed models, command clients, and query clients from a Wow OpenAPI document | On npm since Wow 9.2.0; CLI wow-generator |
@ahoo-wang/wow-react | Drive Wow single, list, paged, count, and stream queries from React components | On npm since Wow 9.2.0 |
@ahoo-wang/wow-view-engine | Let users filter, analyse by dimensions and metrics, chart, and save views over Wow data | On npm since Wow 9.2.0; CLI wow-view-engine theme-check |
@ahoo-wang/wow-view-store | Keep the view engine's saved views and preferences on a Wow server | On npm since Wow 9.2.0 |
Wow 9.2.0 (2026-10-03) is the first release of these packages on npm, published with provenance; pnpm add installs them from the latest dist-tag. See Compatibility and Versions for the release status, the supported servers and runtimes, and what CI verifies.
The first three came from the Fetcher repository, where they were @ahoo-wang/fetcher-wow, @ahoo-wang/fetcher-generator, and the Wow hooks of @ahoo-wang/fetcher-react. If a project still uses those names, start with the migration guide.
Dependencies
Dependencies point one way: Wow packages depend on Fetcher packages, never the reverse. Every dependency on another package is a peer dependency, so the application installs and owns each version.
| Peer | Range |
|---|---|
@ahoo-wang/fetcher, fetcher-decorator, fetcher-eventstream | ^5.1.5 || ^6.0.0 |
react (for wow-react) | ^19.0.0; React 18 is not supported |
@ahoo-wang/wow-client (for the other Wow packages) | Same minor version, ~x.y.z |
@ahoo-wang/wow-view-engine (for wow-view-store) | Same minor version, ~x.y.z |
Versions
The TypeScript packages share one version with the Kotlin modules and are released from the same tag: @ahoo-wang/wow-client 9.2.0 is released together with Wow 9.2.0. Use one version for all Wow packages of an application, preferably the version of the service it calls. Breaking changes ship only in an x.Y.0 release and are listed under "Breaking" in the release notes.
Supported servers are Wow 8.11 and later through the filter API, and Wow 8.10 through @ahoo-wang/wow-client/legacy (the deprecated Condition API). CI runs the client against a server built from the same commit and smoke-tests it against Wow 8.11.5; for Wow 8.10.8 it only type-checks the generated code. Both 8.x lines and /legacy are removed in v10. The compatibility matrix has the details, along with Node.js (22.12 or later), React (19.0 or later) and TypeScript.
Install
pnpm add @ahoo-wang/fetcher @ahoo-wang/fetcher-decorator @ahoo-wang/fetcher-eventstream @ahoo-wang/wow-client
pnpm add -D @ahoo-wang/wow-generator typescriptFor the React hooks, add react, react-dom, and @ahoo-wang/wow-react. wow-react requires React 19.0 or later: it is built with the React Compiler and imports react/compiler-runtime, which React 18 does not have. Each reference page lists the exact install command for its package.
Continue by task
| Task | Read first | Then read |
|---|---|---|
| Call a Wow service from TypeScript for the first time | Quick Start | wow-generator reference and Wow discovery |
| Sign requests with the user's token, fill tenant and owner | Authentication and Interceptors | Identity and attribution |
| Handle failed commands, queries and streams | Error Handling | Errors reference |
| Send a command and read state without generated code | Commands and Queries | wow-client reference |
| Generate a client from an OpenAPI document that is not from Wow | Generate a Client from Any OpenAPI Document | Generated output |
| Keep generated code in step with the service | Regenerate in CI | Generator CLI |
| Run on a server, in Node.js or with Next.js | SSR and Node.js | Compatibility and Versions |
| Show query results in React | wow-react query hooks | Snapshot queries |
| Evaluate saved data views | View Engine | wow-view-engine reference |
| Wire a business object into the view engine | Getting Started with the View Engine | Integration walk-through (Storybook) |
| Move off the Fetcher package names | Migration from Fetcher packages | The reference page of each package |
| Find why something fails | Troubleshooting | Error Handling |
The server side of these contracts is described in Commands, Query, and Open API. The generic Fetcher topics, including interceptor internals, cancellation, and server-sent events, stay at fetcher.ahoo.me.
Try it in Storybook
The Storybook runs the query hooks and the view engine against in-memory fixtures, so every example below works without a server. The Storybook is written in Chinese only: story titles and scenario notes included.
| Example | What it shows |
|---|---|
| Wow query hooks | Single, list, paged, count, and streaming queries through the wow-react hooks |
| View engine tour | Start here: what the engine does, the retail sample data, and which business scene to open first |
| View engine home | A host application's landing page built from an embedded dashboard |
| Record workbench | Filtering, sorting, columns, paging, and saved record views |
| Analysis workbench | Dimensions, metrics, charts, and tables with totals |
| Dashboard | Panels, global filters, and click-through between boards |