Skip to content

Releases: reactnativecn/react-native-update-cli

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].

v2.21.2

Choose a tag to compare

@sunnylqm sunnylqm released this 03 Aug 09:46
c5b972e

feat(diff): record copiesCrc for every copied entry in package diffs (pdiff). Same-path copies now carry a content checksum so clients can verify path-matched files before copying; backward-compatible (existing clients only consult copiesCrc on path-lookup miss). Part of BUNDLEHASH_MIGRATION §4.2.1 runtime guarantee.

v2.21.1

Choose a tag to compare

@sunnylqm sunnylqm released this 02 Aug 15:03
e5e43a2

修复

发布流程

  • 发布版本号改为以 GitHub Release tag 为唯一来源,发布前硬校验 package.json 版本与 tag 一致,并用 npm pack --dry-run 验证包内容(修复 v2.21.0 发布失败)
  • Node 18 验证扩展为同时加载 CLI 与编程入口(exports/diff)

控制面

  • 编程接口 publish() 现在正确转发 appId / config,不再静默回退到 update.json 中的应用
  • minPackageVersionmaxPackageVersion 同时提供时取交集(此前上界被忽略);混用不同的包选择器(packageId / packageVersion / packageVersionRange / min+max)现在显式报错
  • 登录 token 文件以 0600 权限写入(已存在文件同样收紧),并在登录时即加入 .gitignore

打包与差分

  • 原生包内 bundle 查找改为锚定精确匹配,.map / .backup 等条目不再可能顶替真实 bundle 的 bundleHash
  • bundletool 仅在 PATH 中不存在(ENOENT)时才回退 npx node-bundletool,其余错误原样报告
  • AAB 上传的中间 APK 改用私有 mkdtemp 临时目录,避免共享 /tmp 的可预测路径
  • diff 产物 ZIP 与 universal.apk 提取补全读写流错误传播(只读目录 / 磁盘满不再挂起)
  • 流式 diff 路径下 HBC 变换补丁仅在小于基线补丁时才被采用,与内存路径约束一致

v2.21.0 因发布流水线版本号问题未能上 npm,本版本包含其全部内容。

v2.21.0

Choose a tag to compare

@sunnylqm sunnylqm released this 31 Jul 10:52
bddb282

Full Changelog: v2.20.3...v2.21.0

v2.20.4

Choose a tag to compare

@sunnylqm sunnylqm released this 31 Jul 10:48
v2.20.4
bddb282

parseAab now reports bundleHash, hashing the base-module bundle (base/assets/index.android.bundle) — the same bytes the universal APK carries, so it matches what uploadAab registers. parseIpa/parseApk/parseApp already reported it since 2.20.3.

v2.20.3

Choose a tag to compare

@sunnylqm sunnylqm released this 30 Jul 04:19
v2.20.3
eb389d4

Register bundleHash when uploading native packages: the sha256 of the JS bundle embedded in the ipa/apk/app is now computed at upload and sent with package/create, so the server can decide pdiff applicability by content identity instead of the buildTime heuristic. AABs are covered via the extractApk path. No behavior change against older servers (unknown fields are ignored).