Repository navigation
Conversation
Core upgrades: - React Native 0.87.1 -> 0.88.0, React 19.2.8 -> 19.3.1 and the matching @react-native/* toolchain packages - Re.Pack + repack-plugin-reanimated 5.4.2 -> 5.4.3-canary-20261022091009, rspack 2.2.6 -> 2.2.9, Module Federation 2.9.1 -> 2.9.2 Skia rename + charts: - @shopify/react-native-skia -> react-native-skia 2.15.1 (pinned below 3.x, which victory-native 43 does not support yet) - victory-native 42.0.1 -> 43.0.1 Edge-to-edge: - drop react-native-edge-to-edge; RN 0.88 owns edge-to-edge via edgeToEdgeEnabled, so AppTheme goes back to the AppCompat parent Fixes / chores: - resolve an Android font family in matchFont() so victory-native's chart axis labels are no longer invisible on Android - delete the react-native-bottom-tabs 1.4.0 patch and the @babel/plugin-syntax-typescript workaround, both obsolete now - alias expo-font to false in the auth container (vector-icons' web-only probe) - add @react-native/metro-config so align-deps keeps one react-native peer - bump the remaining compatible catalog deps (screens, gesture-handler, reanimated, safe-area-context, bottom-tabs, @legendapp/list, vector-icons 14, navigation, align-deps 5, bootsplash)
Picks up the Fastify FSTDEP023 fix (dev-server now passes disableRequestLogging through LogController instead of the deprecated top-level option). Verified no deprecation warning on a live dev server.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Upgrades the showcase to React Native 0.88 and Re.Pack
5.4.3-canary-20261022172059, renames Skia to the newreact-native-skiapackage, moves to victory-native 43, and dropsreact-native-edge-to-edgenow that RN owns edge-to-edge.Everything was verified end to end on the iOS Simulator and an Android emulator (details below).
Core
@react-native/*@rspack/core@module-federation/enhanced/error-codesThe canary sits on
...172059specifically because it carries the Fastify FSTDEP023 fix:@callstack/repack-dev-servernow passesdisableRequestLoggingthrough aLogControllerinstead of the deprecated top-level option. Verified against a live dev server — the banner reports5.4.3-canary-20261022172059, powered by Rspackand no[FSTDEP023]deprecation is emitted, while non-request logs (Server listening…, appconsoleforwarding) still flow. Reproduced the warning against the same Fastify 5.12.7 using the old top-level shape, so the negative result is meaningful rather than a suppressed warning.Skia rename + charts
@shopify/react-native-skia→react-native-skia. Same code, new package name (pod name changes too, soPodfile.lockis refreshed).react-native-skia >=2.15.1 <3.0.0, so 3.7.x is still unsupported by the charting layer. Worth revisiting when victory-native ships Skia 3 support.Skia.PathBuilder, which lets us delete theSkPath.addPath()deprecation-warning shim that 41/42 needed.Edge-to-edge
react-native-edge-to-edgeis removed andAppThemegoes back toTheme.AppCompat.DayNight.NoActionBar(the RN 0.88 template value, and the same base asTheme.BootSplash).edgeToEdgeEnabled=truestays ingradle.properties— RN core handles the insets, and content draws behind both bars on device.Fix: invisible chart labels on Android
Found while testing this branch: the price chart drew fine on Android but its y-axis labels were missing (they rendered on iOS). Root cause is in app code, not the bump —
matchFont()defaults to the family"System", which Skia's Android font manager does not expose (listFontFamilies()returnssans-serif,arial, …), so it resolves a glyph-less typeface (measureText('$82.1k').width === 0) and victory-native measures a zero-height label and skips it.packages/trading/src/screens/AssetDetailsScreen.tsx:130now asks forsans-serifon Android and keepsSystemelsewhere. The old@shopify/react-native-skia@2.14matchFontJS is byte-identical, so this was a latent bug rather than a regression.Smaller changes
patches/react-native-bottom-tabs@1.4.0.patch— obsolete against RN 0.88.@babel/plugin-syntax-typescriptcatalog entry; the canary declares it as a dependency now.@react-native/metro-configto the catalog and packages — without it align-deps pulls a secondreact-nativepeer copy and instantiates it twice.expo-fonttofalseinpackages/auth/rspack.config.ts, matching the host: vector-icons 14 probes it behind atry/catchon web only, and the native font is always bundled.allowBuilds/minimumReleaseAgeExcludeupdated for the renamed Skia package and the new Re.Pack + bottom-tabs versions.Deliberately not updated
@react-native/babel-presetpeers^7), Jest on ^29, ESLint on ^9.39.5, TypeScript on ^6.0.3 (typescript-eslint caps at<6.1).Verification
pnpm install,pnpm peers check(clean),pnpm -r typecheck,pnpm -r lint,pnpm -r test,pnpm format:check,pnpm check-depsall pass. Production rspack bundles build for host + trading + wallet + auth on both iOS and Android.bundle exec pod installis clean,xcodebuildDebug builds, and./gradlew assembleDebugsucceeds including the renamed:react-native-skiamodule.Runtime, on an iPhone 17 simulator and a Pixel emulator, through the full demo: auth sign-in → live Markets prices → asset details (Skia chart with axis labels on both platforms) → trade bottom sheet → wallet holdings → account → sign out → sign back in. All four dev servers (host 8081, trading 9001, wallet 9002, auth 9003) served
/{platform}/mf-manifest.jsonfor both platforms, the host dev bundle built to ~11.6 MB for iOS and Android, and every container reportedCompiled ios/Compiled android.Dev-loop check on the new canary: editing a screen in the
authcontainer triggered a watch rebuild in 0.6s/0.7s, the rebuilt__federation_expose_*.chunk.bundleserved the new code, and the running app picked it up. HMR sockets stayed connected to the host, auth and trading servers concurrently, andSIGINTshuts each server down in ~100ms.Known upstream noise (pre-existing, unchanged by this PR)
@gorhom/bottom-sheetpasses a deps array touseAnimatedStyle, so Reanimated logsDependencies should only be used on the web…repeatedly while the sheet is mounted.ReanimatedPluginadvisory because auth listsreact-native-reanimatedindependencies(trading/wallet usepeerDependencies, which is why only auth warns). Auth has no animations, so it is harmless, and auth never configured the plugin onmaineither — not a regression. Tidying that dep is out of scope here.Could not find generated setter for class com.reactnative.skia.Skia*ViewManageron Android — benign, from the new package id.@rspack/core's Node bindings printObjectRef is not unref, it considered as a memory leak— cosmetic, does not delay exit.pod install, a Debug build fails to link withUndefined symbols: facebook::react::Sealable::Sealable(), and if an stale bundle is reused the app then dies at launch withSymbol not found: ...hermes::cdp::CDPDebugAPI::addConsoleMessage....pod installstages the ReleaseReact.xcframeworkandhermesvm, butreplace-rncore-version.js/replace_hermes_version.jsskip their swap whenPods/<pod>/.last_build_configurationis absent, because they assume the staged artifact is Debug. Workaround: writeReleaseintoPods/React-Core-prebuilt/.last_build_configurationandPods/hermes-engine/.last_build_configuration, then rebuild — both printReplacing …/Done replacing hermes-engineand the build succeeds. Worth reporting upstream.pod installintermittently dies with CocoaPodsArgumentError - pathname contains null byte(known pnpm-monorepo flake, cocoapods#12866); re-running succeeds.