| name | react-library-port |
| description | Port a React ecosystem library to an @octanejs/* binding. Use when adding a new binding package or bringing an existing one closer to upstream parity. |
Skill: React-like package bridge/port into Octane compatibility
Use this when asked to port or bridge a React ecosystem package into Octane, add an @octanejs/* binding, or evaluate whether a React package can run on Octane.
Mental model
Do not assume React component code can run unchanged. Octane is compiler-first:
- React JSX output and slotless hook calls are not valid Octane component runtime input.
- Reuse framework-agnostic cores unchanged.
- Re-implement thin React bindings with Octane hooks.
- Re-author representative UI tests/fixtures in
.tsrx and compare behavior to React when possible.
A binding is a port of a specific upstream release, not an
Octane-flavored library that borrows the name. Work from the upstream source at a
pinned version, module by module, and account for every export it publishes. A
subset that covers the demo path is not a port, and neither is a rewrite from
memory of the README.
Read first:
AGENTS.md
docs/react-library-compat-plan.md
docs/react-parity-testing.md
docs/differences-from-react.md
- Existing closest binding in
packages/{zustand,query,motion,stylex,router,lexical,floating-ui,radix}/
packages/three/UPSTREAM.md for the pin, source-boundary, and crosswalk format
vitest.config.js aliases/exclusions for existing binding packages
Workflow
-
Classify the target library