React hooks continuously AI-mapped from VueUse and other upstream libraries
✅ VueUse mapping complete: the base architecture is a 1:1 mirror of VueUse, and every
@vueuse/*composable is accounted for — either mirrored by a React hook, or recorded as intentionally impractical (Vue-onlyref/reactivity APIs, decided per mapping issue). The other sources (see Sources) are an open, growing set tracked per mapping issue — no completeness is claimed for them. The generated function mapping table tracks each export with the source it came from; §3.2 of docs/upstream-monitoring.md documents the coverage audit behind the VueUse claim.
reause is an experimental React hooks library mapped from several upstream sources. VueUse is the foundational one — it defines the package layout, the architecture and most of the surface — but it is not the only one:
- The official vueuse/vueuse repository is referenced as a git submodule (
source/vueuse) and is the source of truth for every port that names no other source - Each other source is pinned as its own read-only checkout under
source/*and is the source of truth for the ports that name it - The package structure mirrors VueUse 1:1 and is fixed, but every API is React-flavored (
useState/useEffect/useMemo…) - AI continuously maps upstream implementations to React hooks, and each port records its upstream in a
Map from <source> `<upstream-symbol>`JSDoc annotation
See packages/guide/architecture.md for the full source → reause architecture mapping.
reause maps from five upstream sources. The source id in the table is the one the generated function mapping table records per export:
| source | upstream | how it is ported |
|---|---|---|
vueuse |
vueuse/vueuse | adapted to React — naming conversions (ref* → useState*, on* → use*) and React return conventions |
react-use |
streamich/react-use | direct mirror — upstream names and return shapes kept |
react-hookz |
react-hookz/web | direct mirror |
mantine |
mantinedev/mantine (@mantine/hooks) |
direct mirror, detached from @mantine/core |
ahooks |
alibaba/hooks | direct mirror with documented renames |
All five sources are pinned as read-only submodule checkouts under source/* (vueuse, react-use, react-hookz, mantine, ahooks), and every port is checked against its own source's pin. A source/usehooks checkout is also mounted, but it has no ports yet and is not a registry source.
Only source/vueuse is polled for upstream updates — the other checkouts are provenance-only (docs/upstream-monitoring.md §1). Per-source naming and return-value rules are in AGENTS.md §1, and docs/mapping-issue-template.md is the template for mapping decisions.
| VueUse | reause | status |
|---|---|---|
@vueuse/core |
@reause/core |
✅ completed |
@vueuse/shared |
@reause/shared |
✅ completed |
@vueuse/integrations |
@reause/integrations |
✅ completed |
@vueuse/math |
@reause/math |
✅ completed |
@vueuse/metadata |
@reause/metadata |
✅ completed |
@vueuse/rxjs |
@reause/rxjs |
✅ completed |
@vueuse/electron |
@reause/electron |
✅ completed |
@vueuse/firebase |
@reause/firebase |
✅ completed |
@vueuse/skills |
@reause/skills |
✅ completed |
@vueuse/components |
— | ⏳ TODO |
The layout above is fixed and still mirrors VueUse 1:1: hooks ported from the other sources are added to these existing packages, so there is no @reause/react-use-style package to install.
git clone --recurse-submodules https://github.com/hairyf/reause.git
cd reause
pnpm install
npm run typecheckThe complete list lives in the generated function mapping table. A few entry points:
useToggle→packages/shared/useToggle/index.tsxuseCounter→packages/shared/useCounter/index.tsxuseNow→packages/core/useNow/index.tsxuseStorage→packages/core/useStorage/index.tsx
- Large-scale AI mapping of all
@vueuse/corefunctions -
rxjs/electron/firebase/skillssub-packages - Publish to npm (
@reause/*)
MIT. VueUse logo from vueuse/vueuse (MIT licensed); the reause logo is a React-colored variant of the same lettering.