{"adoption": {"forks": 280, "observed_at": "2026-08-28T04:06:01.978203+00:00", "stars": 1983}, "canonical_url": "https://ross.abutalabs.com/products/react-native-update", "card": {"archived": false, "artifact_type": "library", "description": "🚀 Blazing Fast Hot Updates for React Native", "domain": ["mobile-development"], "enriched": true, "function": ["deployment", "monitoring", "analytics", "cli", "mcp"], "health_score": 99, "homepage": null, "language": "TypeScript", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["reactnativecn/react-native-update"], "name": "reactnativecn/react-native-update", "platform": ["cli"], "pushed_at": "2026-08-22T04:39:11+00:00", "repo": "reactnativecn/react-native-update", "stars": 1983, "tags": ["ota-updates", "hot-update", "codepush", "hermes-bytecode", "bsdiff", "staged-rollout", "crash-rollback", "react-native", "devops", "automation", "android", "ios", "nodejs"], "topics": ["codepush", "hotfix", "ota", "react-native"], "urls": [], "use_cases": ["push hotfixes to react native apps without app store review", "ship over-the-air updates for react native", "roll out staged percentage-based releases to mobile users", "automatically roll back a broken react native update", "reduce update download size with hermes bytecode diffs", "monitor update success rates and version distribution", "debug why a device did not receive an ota update"], "what_it_is": "A React Native library providing over-the-air (OTA) hot update capabilities with tiny bsdiff/hdiff-based update packages optimized for Hermes bytecode. It includes a global delivery service, web dashboard with analytics and staged rollouts, CLI tools, and crash rollback safety mechanisms.", "when_to_avoid": ["you target Android RN 0.73.0–0.76.0 with the new architecture (unsupported due to upstream issues)", "you need fully self-hosted infrastructure without a paid or global service", "your app is not React Native", "you require a permissive open-source license (license is non-standard)"], "when_to_choose": ["you need fast OTA updates for React Native apps with minimal package sizes", "you want staged rollouts, analytics, and crash rollback built in", "your app uses Hermes bytecode or the React Native new architecture", "you need native-side recovery even when JS fails to boot"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/react-native-update", "repo": "reactnativecn/react-native-update", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:01.978203+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:03:30.966188+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac15a6aa3c426d697c9f3e01e8e884d59121e8570ea326539e0017bec3976951", "fetched_at": "2026-08-28T04:06:01.978203+00:00", "kind": "readme", "missing": false, "url": "https://github.com/reactnativecn/react-native-update"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 86}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3861, "days_push": 11, "days_rel": 13, "gap_med": 1, "n_releases_24m": 144}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}