Skip to content

Releases: reactnativecn/react-native-update-cli

v2.22.9

Choose a tag to compare

@sunnylqm sunnylqm released this 26 Aug 10:32
3f304ab
  • Native package upload (pushy package upload / publish --package): the slim package is now built by copying the bundle and asset entries byte-for-byte from the apk / ipa / app instead of re-deflating each of them, so it is bound by disk I/O rather than CPU. Archives that would need zip64 keep the previous repack path.
  • Dropped the semver dependency (version comparisons use compare-versions).

v2.22.8

Choose a tag to compare

@sunnylqm sunnylqm released this 26 Aug 08:15
8e9cc2b

Performance and robustness batch across the CLI:

Startup

  • The npm "newer version" check no longer blocks every command: 1-day cache, background request, hint printed after the command. pushy help goes from ~0.5 s to ~0.09 s; offline commands (hdiff, parseApk, …) no longer ping the API endpoints or resolve dependency versions at startup.

Bundle / Hermes delta mode

  • hermes-base-error.log (full hermesc output of a failed base attempt) is written next to the intermediate directory — it used to be packed into the ppk.
  • Base selection starts only after Metro is spawned; the JS bundle is no longer copied twice; the packager map is renamed instead of copied; compose-source-maps runs asynchronously while the disassembly check runs.
  • A failed verification compile keeps the base compile (reported separately) instead of dropping it and compiling a third time. A base still downloading when Metro finishes is waited for at most 60 s (PUSHY_HERMES_BASE_WAIT_MS).
  • A base whose content differs from the server-recorded hash is rejected immediately instead of triggering two full archive downloads; cache hits for legacy/native-package bases verify the HBC version; downloads and Range requests have timeouts; stale cache staging files are cleaned.
  • New --resetCache false skips Metro's --reset-cache for much faster repeated bundles.
  • Zip payload deflate level 9 → 6 (≈4× less CPU for 0.6 % larger ppk).

Diff

  • Moved-file detection requires equal size in addition to equal CRC32 (a CRC collision could ship the wrong file).
  • A failing diff no longer leaves a truncated patch file or an open handle behind.
  • The streaming diff transforms Hermes bytecode on disk section by section; no full bundle is held in memory.

Network

  • Uploads have a size-scaled timeout and one retry on transient errors; publish overlaps the upload with hashing and git.
  • Range reads of remote archives use less memory, skip re-fetching cached bytes, send If-Range, and always prefetch the central directory in one request.

v2.22.7

Choose a tag to compare

@sunnylqm sunnylqm released this 24 Aug 15:59
c93c907

Hermes delta-mode (-base-bytecode) pipeline speedups:

  • The base compile and the --verifyHermesBase plain compile now run concurrently, and a rejected base reuses the plain output instead of compiling a third time.
  • The base lookup and download run while Metro bundles instead of after it.
  • Base downloads over HTTP Range need fewer requests (tail aligned with yauzl, central-directory prefetch for large apk/ipa, header + bundle in one request), and native packages uploaded by this version can be fetched with a single Range request (requires the matching server release).
  • Cheaper disassembly comparison, single sha256 per bundle, cached hermesc HBC-version probe.

v2.22.6

Choose a tag to compare

@sunnylqm sunnylqm released this 24 Aug 15:20
966d109

Hermes base downloads now fetch only the bundle instead of the whole base package: a single HTTP Range request when the server knows where the bundle sits inside the ppk (reported at publish time), otherwise the zip central directory plus the bundle entry over Range (ppk / apk / ipa), falling back to the full download when the storage ignores Range or verification fails. Publishing reports the bundle location alongside the existing Hermes chain metadata.

v2.22.5

Choose a tag to compare

@sunnylqm sunnylqm released this 24 Aug 01:33
88598a9

Surface the real hermesc error when a Hermes base compile fails: diagnostics are now filtered so errors are no longer buried under minified-bundle warning echoes, and the full compiler output is written to /hermes-base-error.log.

v2.22.4

Choose a tag to compare

@github-actions github-actions released this 23 Aug 07:44
ef375f3

Fix Hermes base equivalence verification for UIntSwitchImm jump-table offsets. Tighten StringSwitchImm/UIntSwitchImm normalization so semantic operands remain checked, with regression coverage for IDs, labels, ranges, and malformed switch shapes.

v2.22.3

Choose a tag to compare

@sunnylqm sunnylqm released this 22 Aug 02:43
f372289

Fix: publish no longer sends JSON null for the Hermes chain metadata (baseVersionId / baseHash / bytecodeVersion) when no base was used — servers rejected that with "Expected baseHash string". Fields are now omitted, which every server version accepts.

v2.22.2

Choose a tag to compare

@sunnylqm sunnylqm released this 22 Aug 02:24

Fix Hermes delta-base discovery for apps that have an uploaded native package but no published hot-update version. The CLI now downloads and extracts APK, IPA, or Harmony APP base artifacts returned by the server.

v2.22.1

Choose a tag to compare

@sunnylqm sunnylqm released this 21 Aug 16:25
17ca6a1

Fix: the Hermes delta-mode verification (--verifyHermesBase) reported false mismatches when the base came from a different lineage (wider GetById/LoadConstString variants, moved switch jump tables) and needlessly fell back to a plain compile. No behavior change otherwise.

v2.22.0

Choose a tag to compare

@sunnylqm sunnylqm released this 21 Aug 15:52
2d6f597

Hermes delta mode (-base-bytecode)

  • bundle now compiles Hermes bundles against the app's previous HBC (--hermesBase auto, default), keeping Hermes string IDs stable across versions: hot-update patches shrink 5–30×. Base comes from the server (GET /app/:id/hermesBase), is verified by sha256 and cached under .pushy/cache/<sha256> (500 MB / 20 files, --cacheMaxMb, PUSHY_CACHE_DIR).
  • --hermesBase none disables it; --hermesBase <file.hbc|.ppk|.apk|.ipa> uses a local artifact (e.g. the store build) as base.
  • --verifyHermesBase (default on) compares the delta build's disassembly with a plain compile and silently falls back on any mismatch — the feature can never block a release.
  • hermesc always runs with -output-source-map: debug info is stripped from the bytecode (15–40% smaller, same as RN release builds); the Hermes .map stays in the intermediate directory.
  • publish / uploadApk / uploadIpa / uploadApp report bundleHash, bytecodeVersion, baseVersionId, baseHash and seed the local cache.
  • New command: pushy cache [clean].