@ohos-ports/zapp-react-native-android-tv-ui-components
v10.1.5-beta.1
Published
OpenHarmony port of @applicaster/zapp-react-native-android-tv-ui-components (pure JS React Native Android TV UI component library)
Readme
@ohos-ports/zapp-react-native-android-tv-ui-components
OpenHarmony (ohos-ports) port of @applicaster/zapp-react-native-android-tv-ui-components — pure JS React Native Android TV UI component library (River, HorizontalList, Header, Cell, etc.).
This is a pure JS package: no native module compilation is required on OpenHarmony. The migration changes are dependency-level only (see "Migration notes" below).
Usage
npm install @ohos-ports/[email protected]Peer dependencies ([email protected], [email protected]) must be provided by the host app, exactly as with the upstream package. Entry point: index.js (default export = Components namespace), transpiled by the host metro/babel toolchain at consume time (same as upstream).
⚠️ IMPORTANT: consumer installability notes (upstream ecosystem issue)
This port keeps @applicaster/[email protected] and @applicaster/[email protected] in dependencies (they are still resolvable as tarballs), but the Applicaster npm packages were unpublished from the npm registry, so a clean npm install of the full dependency tree will currently fail with ETARGET on the unpublished @applicaster/[email protected] (and friends). This is an upstream ecosystem problem, not a defect of this package's code.
Recommended mitigation (npm overrides + tarball direct install)
In your project package.json, add an npm overrides entry that redirects the pure-TS type package @applicaster/applicaster-types (zero runtime exports) to a local empty stub, and install the two Applicaster tarballs directly:
// package.json (your app)
{
"dependencies": {
"@ohos-ports/zapp-react-native-android-tv-ui-components": "10.1.5-beta.1",
"@applicaster/zapp-react-native-utils": "https://registry.npmmirror.com/@applicaster/zapp-react-native-utils/-/zapp-react-native-utils-10.1.5.tgz",
"@applicaster/zapp-react-native-ui-components": "https://registry.npmmirror.com/@applicaster/zapp-react-native-ui-components/-/zapp-react-native-ui-components-10.1.5.tgz"
},
"overrides": {
"@applicaster/applicaster-types": "file:./stubs/applicaster-types",
"@applicaster/zapp-react-native-redux": "file:./stubs/zapp-react-native-redux"
}
}// ./stubs/applicaster-types/package.json
{ "name": "@applicaster/applicaster-types", "version": "10.1.5", "main": "index.js" }
// ./stubs/applicaster-types/index.js
module.exports = {};// ./stubs/zapp-react-native-redux/package.json (only needed if some dependency still pulls it)
{ "name": "@applicaster/zapp-react-native-redux", "version": "10.1.5", "main": "index.js" }
// ./stubs/zapp-react-native-redux/index.js
module.exports = {};Alternatively, when installing in an environment where the Applicaster deps cannot be resolved at all, use:
npm install <this-package>.tgz --ignore-scripts --legacy-peer-deps --install-linksand manage the Applicaster tarballs manually (they are downloadable from npmmirror: https://registry.npmmirror.com/@applicaster/<pkg>/-/<pkg>-10.1.5.tgz).
Migration notes (vs upstream @[email protected])
This port was produced because three upstream dependencies were unpublished from npm and are unobtainable anywhere. They are replaced by vendored shims inside vendor/:
| Unpublished upstream package | Replacement | Fidelity |
|---|---|---|
| @applicaster/[email protected] (unpublished 2024-05-16) | vendor/zapp-react-native-redux/ (8 files) | connectToStore / usePickFromState are real implementations on top of react-redux@^7.2.9 (new runtime dep). useZappPipesFeeds / loadPipesData return a "not-loaded" state (original depended on the likewise-unpublished zapp-pipes-v2-client network layer). setStore/getStore/appState/AppStore are module-level registries. Store-wiring fidelity cannot be verified line-by-line against the original source (unavailable); disclosed in the patch header. |
| @applicaster/zapp-react-dom-ui-components/Contexts (unpublished 2026-09-25) | vendor/zapp-react-dom-ui-components/Contexts.js | 4 React Contexts (DisplayState/HorizontalScroll/PlayerContent/RiverOffset) built with the real @applicaster/zapp-react-native-utils reactUtils/createContext (monorepo-sibling utility); initial values/validators aligned with the [email protected] same-named Context implementations. |
| @applicaster/[email protected] (unpublished 2024-05-16) | vendor/applicaster-types/index.js | Pure TS type package with zero runtime exports — empty stub is semantically equivalent. |
Additional changes:
- Source imports rewritten from the three unpublished packages to the vendored paths (
Components/HorizontalList,Components/River/*,Contexts/index.js). dependencies: removed@applicaster/zapp-react-native-redux(vendored); addedreact-redux@^7.2.9(runtime dep of the vendored shim).@applicaster/[email protected]and@applicaster/[email protected]are kept (tarball-installable, see mitigation above).- Validated on OpenHarmony (node v26, arm64): 37/37 functional tests pass.
When Applicaster republishes the packages upstream, consumers are advised to migrate back to the original dependency set.
License
ISC (as upstream).
