Skip to content

[MOO-2500] Upgrade to RN v0.88 - #74

Open
YogendraShelke wants to merge 10 commits into
mainfrom
moo/MOO-2500-rn-0.88
Open

YogendraShelke wants to merge 10 commits into
mainfrom
moo/MOO-2500-rn-0.88

Conversation

@YogendraShelke

@YogendraShelke YogendraShelke commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

1. React Native upgrade

  • react-native 0.84.1 → 0.88.0-rc.3, react 19.2.3 → 19.3.0, and the @react-native/* packages → 0.88.0-rc.3.
  • Android: Kotlin 2.2.0, compileSdk 37, Gradle 9.4.1, edge-to-edge enabled, and native modules updated for the new APIs.
  • iOS: the example app uses a scene-based lifecycle (SceneDelegate), the React host helpers were reworked, and native modules updated for the new APIs.
  • Configuration is now a TurboModule (MxConfig), and the codegen specs use the strict typings.
  • Native binary version 40 → 41.

2. Other dependency upgrades

  • @op-engineering/op-sqlite 15.2.5 → 18.2.5, with the Mendix patch rebuilt for it.
  • react-native-gesture-handler 2.31.2 → 2.33.0.
  • @react-native-community/cli 20.1.3 → 20.2.0.
  • @types/react 19.3.0, @babel/core and @babel/preset-env 7.29.7, commitlint 20.5.0.
  • Jest preset switched to @react-native/jest-preset.

3. Existing issues fixed

  1. Zip Slip: Android unzip now rejects entries that would land outside the target directory.
  2. OTA paths are kept inside the OTA directory, and the bundle that was just deployed is no longer deleted.
  3. Android download progress is correct, and copying is faster (64 KB buffer).
  4. iOS no longer leaks a URLSession on every download.
  5. Android download errors map to the right codes and reject the promise instead of crashing.
  6. Download behaviour (MIME check, existing file, timeout, error codes) is the same on both platforms.
  7. OTA deploy behaviour (missing key, zip cleanup on failure) is the same on both platforms.

Download error codes are now the same on both platforms.

4. Code cleanup

  • release-it, turbo and their config were removed, which also resolved the audit issues.
  • dev-settings.ts was trimmed.
  • Android download error mapping was moved into one function (downloadErrorFor).

5. New tests

  • Android (JUnit + Robolectric): AppUrlTest, MendixEncryptionToolkitTest, DownloadHelperTest, NativeDownloadModuleTest, NativeOtaModuleTest, CookieHelpersTest.
  • iOS (MendixNative-Unit-Tests scheme): AppUrlTests, NativeFsPathTests, OtaDeployTests, plus additions to NativeDownloadHandlerTests.
  • Harness E2E: new file-system.harness.ts, ota.harness.ts rewritten, download-handler.harness.ts extended.
  • CI: both workflows run the native unit tests before the app build.

Results: Android unit 59/59, iOS unit 40/40, harness E2E 133/133 on each platform.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant