You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(harmony): register 10.50+ methods in the RNOH TurboModule glue
PushyTurboModule.cpp's methodMap is the only bridge RNOH gives JS into
the ArkTS module, and it was never taught the four methods added since
10.50: syncNativeConfig, getNativeCheckCache, getBundleHash,
resetToPackagedBundle. Missing registration means `undefined` on the JS
side, and the JS feature-detects then treat the capability as "old
native" and silently skip it — so the native cold-start check never
armed on Harmony in 10.51.0-10.52.0 (nativeConfig was never persisted;
the ets orchestrator, resume and zero-delay marker were dead code), and
resetToPackagedBundle was unusable from JS.
Why CI missed it: the harmony e2e suite only runs e2e/harmony/** (smoke
+ local-update); native-check.test.ts never executed there, and the
graceful old-native fallback hid the breakage for three releases.
Verified on the DevEco api20 simulator end-to-end, which also settled
the open Harmony question: an uncaught JS error does NOT kill the
process on RNOH (it only logs), so the orchestrator completes its round
after JS dies — a brick that crashes 1s into every launch was replaced
and booted the fix on the next launch with no crash-hold needed. Design
doc §11.5 rewritten accordingly; probe scaffolding checked in
(entry.crashprobe.ts, entry.diag.ts).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,7 +38,7 @@ What to know:
38
38
-**Whether it activates depends on your configuration**: only with `updateStrategy` set to `silentAndNow` / `silentAndLater`*and* automatic checks left on (`checkStrategy` not `null`) will the native side mark a downloaded version for the next launch. Otherwise it downloads and leaves activation to JS.
39
39
-**Rescue directive**: the dashboard can mark a version "force boot", which activates on the next launch regardless of the strategies above — this is how a fleet stuck on a broken version is recovered. The device-local crash-rollback guard still wins: a version this device already rolled back from is never reinstalled.
40
40
-**Crash-moment rescue** (since 10.52.0, Android & iOS): when the app dies of an uncaught JS error during startup, the SDK briefly holds the dying process (a few seconds, bounded) to finish the check and download — so even a version that crashes a fraction of a second into every launch gets replaced. In that window the downloaded fix is always activated for the next launch, since JS is no longer around to decide. Crash reporters keep working: the SDK chains the previous crash handler and always hands the crash over afterwards. Not covered: native (non-JS) crashes, ANRs, OOM kills, and — on iOS — apps that install a custom `RCTSetFatalHandler` (React Native then no longer raises the exception this rescue intercepts).
41
-
-**Resumable downloads** (since 10.52.0): update downloads survive process death and resume from where they stopped (HTTP Range), so repeated short-lived launches still make monotonic progress; a launch that follows an interrupted round skips the startup delay and resumes immediately. On HarmonyOS the crash-moment hold is not available yet, but resume + immediate retry apply.
41
+
-**Resumable downloads** (since 10.52.0): update downloads survive process death and resume from where they stopped (HTTP Range), so repeated short-lived launches still make monotonic progress; a launch that follows an interrupted round skips the startup delay and resumes immediately. HarmonyOS does not need the crash-moment hold: an uncaught JS error does not kill the process there, so the native check completes normally even when JS dies on launch (requires 10.52.1 — earlier versions never armed the native check on HarmonyOS due to a bridging bug).
42
42
-**It can be turned off**: `disableNativeCheck: true` removes one background request per cold start, at the cost of **giving up the recovery above** — a device bricked by a bad update can no longer heal itself. Choose it only when that request is itself the problem (traffic/battery budgets, privacy manifests, consent-gated networking).
0 commit comments