Skip to content

Upgrade React Native 0.82.1 → 0.83.9#457

Merged
wmathurin merged 18 commits into
forcedotcom:devfrom
wmathurin:rn-upgrade-0.83
Jun 2, 2026
Merged

Upgrade React Native 0.82.1 → 0.83.9#457
wmathurin merged 18 commits into
forcedotcom:devfrom
wmathurin:rn-upgrade-0.83

Conversation

@wmathurin
Copy link
Copy Markdown
Contributor

@wmathurin wmathurin commented Jun 2, 2026

Summary

Upgrade React Native from 0.82.1 to 0.83.9. This is the first RN release with zero user-facing breaking changes.

Changes

  • Version bumps: RN 0.83.9, React 19.2.6, all @react-native/* 0.83.9, react-android:0.83.9
  • Fix black screen after login (Android): In RN 0.83 Fabric/bridgeless mode, the React surface starts during onCreate while LoginActivity is on top. When login dismisses, the surface is invisible. Added loginInProgress flag — when onResume detects login just completed, calls recreate() to get a fresh visible surface.
  • RCTTest podspec: bumped to 0.83.9
  • Test credentials: moved to shared/test/test_credentials.json (single file for both platforms, with .sample template)
  • Documentation: updated for TurboModules/bridgeless mode, added docs/android-tests/

Companion PR

Test plan

  • iOS tests pass (35/35)
  • Android tests pass (35/35)
  • All 4 RN template apps: login + functionality works on both platforms
  • TypeScript compiles cleanly
  • No regressions from 0.82

wmathurin added 17 commits May 28, 2026 15:43
Version bumps done. Blocked by PlatformConstants TurboModule not found
at runtime — CoreReactPackage should register it internally via
ReactInstance but it's not being discovered. Needs investigation.
In RN 0.83 bridgeless/Fabric mode, the React surface starts rendering
while the login activity is on top. When login dismisses, the surface
is invisible (black screen) even though JS executes correctly.

Fix: detect login completion in onResume (loginInProgress flag) and
recreate() the activity to get a fresh visible surface.
…ssert.js

- Bridge files use .mm (Objective-C++), not .m
- Android bridge is in this repo (android/), not SalesforceMobileSDK-Android
- Tests use test/assert.js, not chai
- Podspec uses {h,m,mm}
- React version 19.2.6
…folder

- Remove shared/test/ directory and iosTests symlink
- Both iosTests/ and androidTests/ now expect test_credentials.json
  at their root (gitignored)
- prepareios.js and prepareandroid.js copy it to where the native
  project reads it (ios/ for Xcode, android assets for Android)
- CI workflows run create_test_credentials_from_env.js before prepare
  so the file exists when prepare copies it
Tests should always run against the local code, not a remote branch.
This removes the need to push changes before testing.
Ensures the latest test_credentials.json is always picked up
regardless of when prepareandroid.js was run.
- Single credentials file at shared/test/test_credentials.json (gitignored)
- prepareios.js and prepareandroid.js copy from there
- Gradle copyTestCredentials task also reads from there
- CI scripts write to shared/test/ from TEST_CREDENTIALS env var
- Added test_credentials.json.sample as a template
- Bumped iosTests/package.json to RN 0.83.9 / React 19.2.6
- Fix .m → .mm extensions for Objective-C++ bridge files
- Update NativeModules references to TurboModuleRegistry
- Document shared/test/test_credentials.json pattern
- Add docs/android-tests/ (README + PREPAREANDROID_DETAILED)
- Update architecture docs for bridgeless/TurboModule mode
# Conflicts:
#	.gitignore
#	androidTests/android/app/build.gradle.kts
#	androidTests/create_test_credentials_from_env.js
#	androidTests/prepareandroid.js
#	iosTests/create_test_credentials_from_env.js
#	iosTests/package.json
#	iosTests/prepareios.js
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 2, 2026

TestsPassed ✅SkippedFailed
iOS ^18 Test Results35 ran35 ✅
TestResult
No test annotations available

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (dev@673e115). Learn more about missing BASE report.
⚠️ Report is 3 commits behind head on dev.

Additional details and impacted files

Impacted file tree graph

@@          Coverage Diff           @@
##             dev     #457   +/-   ##
======================================
  Coverage       ?   76.95%           
======================================
  Files          ?       15           
  Lines          ?      651           
  Branches       ?        0           
======================================
  Hits           ?      501           
  Misses         ?      150           
  Partials       ?        0           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@JohnsonEricAtSalesforce JohnsonEricAtSalesforce left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

@wmathurin wmathurin merged commit ab1105b into forcedotcom:dev Jun 2, 2026
9 of 10 checks passed
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.

3 participants