Skip to content

ci(native): RN 0.83 / Expo 55 packed consumer, native Jest and typecheck (#68) - #79

Closed
joeblau wants to merge 1 commit into
mainfrom
claude/hig-68-rn083
Closed

joeblau wants to merge 1 commit into
mainfrom
claude/hig-68-rn083

Conversation

@joeblau

@joeblau joeblau commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Refs #68

Adds an RN 0.83 / Expo SDK 55 packed consumer next to the 0.81.5 one and runs it in CI. Peer ranges are not widened: the issue says to update them only after the simulator and emulator runs pass, and those are blocked here.

Changes

  • fixtures/native/profiles/rn-0.83.json pins the bloxwap/monorepo#4540 host: RN 0.83.10, React 19.2.0, Expo 55.0.31 and the native module versions from Expo 55's bundledNativeModules.json.
  • npm run smoke:packed-native-rn083 (in CI) runs the packed tarballs through:
    • the React renderer guard;
    • the Expo native-module guard;
    • a peer-gap check;
    • Android and iOS Metro export of the gallery and the gesture-sheet entry.
  • npm run test:native-rn083 (in CI) runs the full native Jest suite with jest-expo 55, and the @bloxwap/hig-native typecheck against RN 0.83 types, in an isolated install.
  • Peer check: verifyPeerGaps makes "the declared peer ranges match what is tested" an actual check.
    • The certified 0.81.5 consumer must satisfy every declared peer.
    • The 0.83 profile must differ in exactly its recorded peers: native react-native, react-native-svg, @react-native-community/slider, react-native-worklets; feedback expo-audio, expo-haptics.
    • Widening a range, or a new gap, fails the smoke and reports what changed.
  • verifyNativeReact: RN 0.83's renderer removed the runtime isomorphic-React check and only embeds reconcilerVersion. The guard now reads that value, and is now the only thing that catches a React mismatch on 0.83.
  • HIG_NATIVE_PROFILE=rn-0.83 scripts/native-sim/prepare-app.sh builds the simulator/emulator gallery on the profile.
  • docs/installation.md and the platform matrix describe the candidate status and the peer exception hosts must record.

Proof (headless)

Command Result
npm run check (rebased on #78) pass. Vitest 16 files, including the new peer-gap test; native Jest 47
npm run smoke:packed-native certified consumer passes with Uncertified peers {}
npm run smoke:packed-native-rn083 renderer 19.2.0/19.2.0, Expo 55 module guard passes, peer gaps match the profile. Exported Android 766 / iOS 768 modules; gesture entry 1127 / 1126
npm run test:native-rn083 RN 0.83.10 + jest-expo 55.0.22: typecheck passes, 47/47 tests pass
HIG_NATIVE_PROFILE-equivalent prebuild + ./gradlew assembleRelease (new arch, Hermes, Gradle 9.0.0) BUILD SUCCESSFUL in 15m 27s. The APK contains com.bloxwap.hig.HIGAdjustableView (#71), Reanimated 4.2.1 / Worklets 0.7.4 native libraries

Details are in evidence/native-sim/headless/rn-0.83.json.

Still open (why this doesn't close #68)

  • Simulator and emulator gallery runs on RN 0.83 are blocked. This host has no KVM (so no Android emulator) and no macOS (so no iOS Simulator or Xcode build).
  • Peer ranges stay at RN ^0.81.5 / Expo 54 until those runs pass, or until each difference has its own issue.

🤖 Generated with Claude Code

…ative Jest and typecheck

Adds fixtures/native/profiles/rn-0.83.json (the monorepo host pair) and runs it
in CI: native Jest + hig-native typecheck on RN 0.83 types, and a packed
consumer with the React renderer guard, Expo native-module guard and Android/iOS
Metro export. Peer ranges stay at RN ^0.81.5: the smoke now verifies every
declared peer on the certified fixture and pins exactly which peers the
uncertified profile misses. verifyNativeReact reads RN 0.83's reconcilerVersion
because its renderer no longer checks the React version at runtime.
prepare-app.sh accepts HIG_NATIVE_PROFILE for simulator/emulator runs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@joeblau
joeblau force-pushed the claude/hig-68-rn083 branch from 298e229 to eb80910 Compare October 15, 2026 18:12
@joeblau

joeblau commented Oct 15, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #90, which landed the same RN 0.83 / Expo 55 profile and packed-export CI, plus real iOS Simulator / Android emulator certification. That certification closed #68. Not carried over from this PR: running the native Jest suite and the hig-native typecheck against RN 0.83 types (scripts/native-profile-check.mjs). It passed 47/47 headless. It can be re-proposed separately if wanted.

@joeblau joeblau closed this Oct 15, 2026
@joeblau
joeblau deleted the claude/hig-68-rn083 branch October 15, 2026 20:37
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.

Certify HIG native packages on React Native 0.83

1 participant