Skip to content

chore(rnative): support react-native 0.86 (LIVE-39312) - #938

Merged
gamegee merged 6 commits into
mainfrom
chore/live-39312-rn-086
Oct 30, 2026
Merged

gamegee merged 6 commits into
mainfrom
chore/live-39312-rn-086

Conversation

@gamegee

@gamegee gamegee commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Context

LWM is moving to React Native 0.86.3, Expo SDK 57 and React 19.2.3 (LIVE-39331). This lets @ledgerhq/lumen-ui-rnative support it while still working on RN 0.81.

Closes LIVE-39312

What changes for consumers

Peer Before After
react-native ~0.81.6 >=0.81.6 <0.87
expo-haptics ~15.0.8 ~15.0.8 || ^55 || ^56 || ^57
react-native-worklets ^0.8.0 >=0.8.0 <0.11

RN 0.85 removed StyleSheet.absoluteFillObject. Card, AvatarButton, TabBar, Linear/RadialGradient and DonutChart now write out position: 'absolute', top/left/right/bottom: 0, which looks the same and works on both 0.81 and 0.86.

Repo only (not shipped)

  • The workspace and the sandbox move to RN 0.86.3, React 19.2.3, Expo SDK 57, reanimated 4.5.1, worklets 0.10.1, plus the matching gesture-handler, safe-area-context, svg, screens and @react-native/* versions.
  • Jest uses @react-native/jest-preset, the package the preset moved to in RN 0.85.
  • New CI job RN 0.81 compatibility (ui-rnative): it re-runs ui-rnative typecheck and tests on LWM's current stack (RN 0.81.6, React 19.1.4, reanimated 4.3.4, worklets 0.8.1, Expo 54), so nothing that only works on 0.86 reaches LWM. Remove it, internals/repo-tools/src/ci/rn-081-compat/ and the Jest preset fallback once LWM is on 0.86.

How to test

  • RN 0.86 (LWM, or the sandbox: cd apps/app-sandbox-rnative && npx expo prebuild && npx expo run:ios): Card with an image, AvatarButton, the TabBar active pill, the gradients and the DonutChart center still fill their container, and haptics fire on TabBar press and chart scrub.
  • RN 0.81 (current LWM): no new peer warnings, no visual change.

Verified on a clean install, on both RN 0.86 and 0.81: typecheck and all 1,479 tests. Not yet tested on a device.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
ldls Ready Ready Preview Oct 29, 2026 1:35pm UTC
ldls-react-native Ready Ready Preview Oct 29, 2026 1:35pm UTC

Request Review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Expo Haptics is installed only within the sandbox, leaving library tooling unable to resolve it after a clean install.

1 open issue
What changed in this PR

Updates Lumen’s React Native support for Ledger Wallet Mobile’s move to RN 0.86 and Expo SDK 57, while retaining the existing RN 0.81 peer range.

Changes:

  • Widens native peer dependencies and upgrades workspace and sandbox tooling.
  • Replaces removed StyleSheet.absoluteFillObject usage with StyleSheet.absoluteFill.
  • Migrates Jest presets, adjusts test typing, and adds a patch release plan.
File Description
package.json Upgrades React, native dependencies, and development tooling.
libs/​ui-rnative/​src/​lib/​Components/​visualization/​DonutChart/​DonutChartAnimatedCenter.tsx Updates absolute overlay styling.
libs/​ui-rnative/​src/​lib/​Components/​primitives/​Gradient/​RadialGradient/​RadialGradient.tsx Updates absolute gradient styling.
libs/​ui-rnative/​src/​lib/​Components/​primitives/​Gradient/​LinearGradient/​LinearGradient.tsx Updates absolute gradient styling.
libs/​ui-rnative/​src/​lib/​Components/​core/​TabBar/​TabBar.tsx Updates blur and fallback background positioning.
libs/​ui-rnative/​src/​lib/​Components/​core/​Card/​Card.tsx Updates absolute outline styling.
libs/​ui-rnative/​src/​lib/​Components/​core/​AvatarButton/​AvatarButton.tsx Updates absolute overlay styling.
libs/​ui-rnative/​src/​lib/​Components/​core/​Avatar/​Avatar.test.tsx Adds explicit renderer JSON types.
libs/​ui-rnative/​package.json Widens RN, Worklets, and Haptics peer ranges.
libs/​ui-rnative/​jest.config.ts Uses the standalone React Native Jest preset.
apps/​app-sandbox-rnative/​package.json Upgrades the sandbox to RN 0.86 and Expo 57.
apps/​app-sandbox-rnative/​metro.config.js Removes the custom React resolution override.
apps/​app-sandbox-rnative/​jest.config.js Uses the standalone React Native Jest preset.
.nx/​version-plans/​version-plan-1793030941000-ui-rnative.md Schedules a native library patch release.

Review effort: Balanced

Comment thread apps/app-sandbox-rnative/package.json Resolved
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

📦 Dev packages published

Tarballs are hosted as assets on a per-PR GitHub pre-release and are deleted automatically when this PR is closed.

Package Version Install
@ledgerhq/lumen-design-core 0.1.34-pr.938.0a351c4 npm i https://github.com/LedgerHQ/lumen/releases/download/dev-pr-938/ledgerhq-lumen-design-core-0.1.34-pr.938.0a351c4.tgz
@ledgerhq/lumen-lint-plugin 0.1.2-pr.938.0a351c4 npm i https://github.com/LedgerHQ/lumen/releases/download/dev-pr-938/ledgerhq-lumen-lint-plugin-0.1.2-pr.938.0a351c4.tgz
@ledgerhq/lumen-ui-react 0.1.68-pr.938.0a351c4 npm i https://github.com/LedgerHQ/lumen/releases/download/dev-pr-938/ledgerhq-lumen-ui-react-0.1.68-pr.938.0a351c4.tgz
@ledgerhq/lumen-ui-rnative 0.1.71-pr.938.0a351c4 npm i https://github.com/LedgerHQ/lumen/releases/download/dev-pr-938/ledgerhq-lumen-ui-rnative-0.1.71-pr.938.0a351c4.tgz
@ledgerhq/lumen-utils-shared 0.1.18-pr.938.0a351c4 npm i https://github.com/LedgerHQ/lumen/releases/download/dev-pr-938/ledgerhq-lumen-utils-shared-0.1.18-pr.938.0a351c4.tgz

Release: dev-pr-938
Commit: 0a351c48329048042700cb73d85231238d044eea

@ledger-wiz-cspm-secret-detection

ledger-wiz-cspm-secret-detection Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Wiz Scan Summary

Scanner Findings
Data Finding Sensitive Data -
Secret Finding Secrets -
IaC Misconfiguration IaC Misconfigurations 1 Medium
SAST Finding SAST Findings -
Software Management Finding Software Management Findings -
Total 1 Medium

View scan details in Wiz

To detect these findings earlier in the dev lifecycle, try the Wiz Code extension for VS Code, JetBrains, or Visual Studio.

LIVE-39312. Ledger Wallet Mobile is moving to RN 0.86.3 / Expo SDK 57 /
React 19.2.3.

- Widen ui-rnative peers: react-native >=0.81.6 <0.87, expo-haptics
  ~15.0.8 || ^55 || ^56 || ^57, react-native-worklets >=0.8.0 <0.11
  (Expo 57 pins worklets 0.10.1, which ^0.8.0 rejected).
- Replace StyleSheet.absoluteFillObject (removed in RN 0.85) with
  StyleSheet.absoluteFill.
- Move the workspace and the RN sandbox to RN 0.86.3, React 19.2.3,
  Expo SDK 57 and the matching native libs.
- Use @react-native/jest-preset (the preset left react-native in 0.85).
- Drop the sandbox Metro React pin now that one React version is used.
With Expo SDK 57, npm nests expo and expo-haptics under the RN sandbox
instead of hoisting them, so the ui-rnative bob typescript build (and
Jest) could not resolve expo-haptics in CI. Declare it at the root like
the other ui-rnative peers.
The workspace now develops against RN 0.86, but Ledger Wallet Mobile still
ships RN 0.81.6 / React 19.1.4 / reanimated 4.3.4 / worklets 0.8.1. Add a
temporary rn-081-compat job that installs that stack on top of the
lockfile and re-runs ui-rnative typecheck and tests, so code relying on
newer APIs can't land unnoticed. Jest falls back to the preset bundled in
react-native when it is older than 0.85.

Declare @types/react-test-renderer explicitly: the Avatar test imports
its types, which only arrived through react-native-gesture-handler 2.32.

Remove the job and the preset fallback once LWM is on RN 0.86.
….absoluteFill

RN 0.81's types declare StyleSheet.absoluteFill as a RegisteredStyle, so
spreading it fails typecheck there (TS2698), even though at runtime it is
the same object as absoluteFillObject. Write the five properties out, as
ChartEmptyLabel, SegmentedControl and Avatar already do, so the code
type-checks on both RN 0.81 and 0.86.
Rebuilt from this branch's lockfile with main's manifest changes applied, so
the RN 0.86 resolution verified before the rebase is kept. @types/react stays
on the 19.2 line to match React 19.2.3 under main's ^19.0.0 range.
Comment thread apps/app-sandbox-rnative/package.json Resolved
Since Expo SDK 57, prebuild recreates the native folders by default
(--no-clean opts out), so --clean is accepted but does nothing.
@sonarqubecloud

Copy link
Copy Markdown

@gamegee
gamegee enabled auto-merge (squash) October 30, 2026 09:24
@gamegee
gamegee merged commit 80c4560 into main Oct 30, 2026
26 checks passed
@gamegee
gamegee deleted the chore/live-39312-rn-086 branch October 30, 2026 09:26

This branch was successfully deployed

2 active deployments
Preview – ldls — 0a351c48 Deployed Oct 29, 2026 by vercel[bot]
Preview – ldls-react-native — 0a351c48 Deployed Oct 29, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

publish-dev-package Publishes affected packages to the JFrog sandbox registry on each commit

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants