Status: adopted for
0.1.0. Stable exports follow semantic versioning from0.1.0; experimental exports may change in any minor release.
Each public export is labeled stable or experimental:
- Stable: Breaking changes after
0.1.0need a major version (or, while0.x, a minor version with a changelog migration note). - Experimental: May change in any minor release. These exports carry an
@experimentalJSDoc tag, so editors show the label in hover info.
| Export | Status | Reason |
|---|---|---|
DuoProvider |
Stable | Small surface; native on iOS and Android foldables, fallback on web. |
useDuo, useDuoHinge, useDuoReservedRegions |
Stable | Read-only state with documented fallbacks. |
useDuoGeometry, useDuoWindow |
Stable | Read-only state; added in preview.2 without changes since. |
DuoGeometryView |
Stable | View-local measurement with a JavaScript fallback. |
DuoArrangementView |
Stable | Maps directly to UIArrangementViewController; the props mirror UIKit's. |
defaultDuoEnvironment and exported types |
Stable | Shapes the stable hooks return. |
DuoAdaptiveToolbar |
Experimental | Largest prop surface; placement, compression, and content-layout options are still settling. |
DuoNavigationToolbar |
Experimental | Depends on navigator internals; horizontalPresentation="inline" is a workaround for wrapped native tabs. |
DuoCameraView, useDuoCameras |
Experimental | Hardware-only paths (physical cameras, smart framing, interruptions) are unverified on a device. |
DuoSceneAccessory |
Experimental | React children support is new, and connecting a real accessory scene is unverified on a device. |
@cawrestler/react-native-duo/jest (setMockDuoEnvironment, etc.) |
Experimental | New test helper. |
0.1.0 shipped with the current names. Renaming a stable export below is now a breaking change, so it needs a deprecation period and a minor-version migration note:
DuoAdaptiveToolbarvsDuoNavigationToolbar. The names don't make clear that one owns its bars and the other attaches to a navigator. Options: keep both; rename toDuoToolbarHost/DuoScreenToolbar; or document the split only.- Duplicate geometry.
useDuo().reservedRegionsanduseDuo().geometry.reservedRegionsboth exist, andgeometryoverlaps withwindowfor width and height. Keep both, or drop the top-levelreservedRegionsfrom the environment? - Hinge angle units.
hinge.angleRadiansandhinge.angleDegreesare both always present. Keep both, or keep one? isDuovssupportsDuoApis. These are easy to confuse: one means the device or window is a Duo, the other that the runtime has the SDK. Possible renames:isDuoDevice/hasDuoSdk.- Scene accessory kinds.
kind="externalDisplay"maps to Apple'sexternalNonInteractive…accessory. Keep the shorter name, or match Apple's? DuoSceneAccessorycontent. With Reactchildrenavailable, should the declarativecontentstay a first-class option, or become just the fallback and background?
Record each decision in the CHANGELOG.