Repository navigation
chore: changeset version - #1485
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 9, 2026 18:09
ac5ab6a to
111bae3
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
October 9, 2026 20:27
111bae3 to
f7f3c6d
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 9, 2026 21:08
f7f3c6d to
b03d8df
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 9, 2026 21:12
b03d8df to
2ad8e6a
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 10, 2026 11:49
2ad8e6a to
7ea344c
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 10, 2026 11:53
7ea344c to
a46af02
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 12, 2026 11:19
a46af02 to
cb656d7
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 13, 2026 11:44
cb656d7 to
786c9ac
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 13, 2026 21:54
786c9ac to
ea2daab
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 15, 2026 14:17
ea2daab to
97780a4
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 16, 2026 13:32
97780a4 to
ccda645
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 16, 2026 14:55
ccda645 to
017feb5
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 22, 2026 08:48
017feb5 to
3b337da
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 22, 2026 15:49
3b337da to
190abfc
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 22, 2026 17:20
190abfc to
e1f2c53
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 25, 2026 17:23
e1f2c53 to
63e7440
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
November 4, 2026 01:25
63e7440 to
7950efa
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
November 4, 2026 11:35
7950efa to
9bf3194
Compare
dannyhw
approved these changes
Nov 4, 2026
dannyhw
added a commit
to callstack/super-app-showcase
that referenced
this pull request
Nov 8, 2026
## What Upgrades the showcase to **React Native 0.88.1** and **Re.Pack 5.4.3**, renames Skia to the new `react-native-skia` package, moves to **victory-native 43**, and drops `react-native-edge-to-edge` now 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 | 0.87.1 → **0.88.1** | | React | 19.2.8 → **19.3.1** | | `@react-native/*` | 0.87.1 → **0.88.1** | | Re.Pack + repack-plugin-reanimated | 5.4.2 → **5.4.3** | | `@rspack/core` | 2.2.6 → **2.3.1** | | `@module-federation/enhanced` / `error-codes` | 2.9.1 → **2.9.3** | | `react-native-safe-area-context` | 5.10.0 → **5.11.1** | | `react-native-screens` | 4.28.0 → **4.30.1** | | `react-native-worklets` | 0.13.0 → **0.13.1** | | `react-native-paper` | 5.15.3 → **5.15.4** (patch renamed, applies unchanged) | | `@legendapp/list` | 3.4.0 → **3.7.1** | | `react-native-bootsplash` | 7.3.3 → **7.3.5** | | `@typescript-eslint/*` | ^8.70.1 → **^8.72.1** | ### Re.Pack 5.4.3 Re.Pack 5.4.3 was validated through its canaries; the published 5.4.3 packages are identical to `5.4.3-canary-20261104085523` apart from version strings, so the results below apply to the release. It includes everything in callstack/repack#1485, including the Fastify **FSTDEP023** fix (#1513): no deprecation warning on any of the four dev servers, while normal logs still stream. It also includes **callstack/repack#1516**: `HermesBytecodePlugin` now runs `hermesc` after every asset has been written, so every chunk's source map gets composed. Comparing every published package against the previous canary, this is the only code change. This app doesn't enable the plugin, so it was tested with a temporary config on the trading mini app (66 lazy chunks), 3 builds per platform before and after: | | Chunks with a composed source map | Bytecode size | | --- | --- | --- | | Before (`…20261103170520`) | 28–39 of 66, varies per run | 4.58–4.79 MB | | After (`…20261104085523`) | **66 of 66, every run, iOS and Android** | **4.02 MB** | Looking up bytecode positions the way a crash reporter would: with the new maps, 2,024 of 2,024 app-code positions resolve to the correct line in the correct source file. With the old maps, 7 did, 1,827 pointed at the wrong file or line, and 190 had no mapping. ## Skia rename + charts - `@shopify/react-native-skia` → **`react-native-skia`**. Same code, new package name (pod name changes too, so `Podfile.lock` is refreshed). - **Skia stays on 2.x (2.15.2), not 3.x**: victory-native 43 declares `react-native-skia >=2.15.1 <3.0.0`, so 3.x (3.9.1 is current) is still unsupported by the charting layer. Worth revisiting when victory-native ships Skia 3 support. - **victory-native 42.0.1 → 43.0.1**. 43 builds paths with `Skia.PathBuilder`, which lets us delete the `SkPath.addPath()` deprecation-warning shim that 41/42 needed. ## Edge-to-edge `react-native-edge-to-edge` is removed and `AppTheme` goes back to `Theme.AppCompat.DayNight.NoActionBar` (the RN 0.88 template value, and the same base as `Theme.BootSplash`). `edgeToEdgeEnabled=true` stays in `gradle.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()` returns `sans-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:130` now asks for `sans-serif` on Android and keeps `System` elsewhere. The old `@shopify/react-native-skia@2.14` `matchFont` JS is byte-identical, so this was a latent bug rather than a regression. ## Smaller changes - Deleted `patches/react-native-bottom-tabs@1.4.0.patch` — obsolete against RN 0.88. - Deleted the `@babel/plugin-syntax-typescript` catalog entry; Re.Pack 5.4.3 declares it as a dependency now. - Added `@react-native/metro-config` to the catalog and packages — without it align-deps pulls a second `react-native` peer copy and instantiates it twice. - Aliased `expo-font` to `false` in `packages/auth/rspack.config.ts`, matching the host: vector-icons 14 probes it behind a `try/catch` on web only, and the native font is always bundled. - `allowBuilds` updated for the renamed Skia package. The `minimumReleaseAgeExclude` list is removed: every pinned version is now past pnpm's default release-age window. ## Deliberately not updated - **Reanimated 4.7.1 is already the newest stable**; only nightly builds are newer. - Babel stays on 7.x (`@react-native/babel-preset` peers `^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-deps` all pass. Production rspack bundles build for host + trading + wallet + auth on **both** iOS and Android. `bundle exec pod install` is clean, `xcodebuild` Debug builds, and `./gradlew assembleDebug` succeeds including the renamed `:react-native-skia` module. 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.json` for both platforms, the host dev bundle built to ~11.6 MB for iOS and Android, and every container reported `Compiled ios`/`Compiled android`. Dev-loop check on the Re.Pack 5.4.3 canary: editing a screen in the `auth` container triggered a watch rebuild in 0.6s/0.7s, the rebuilt `__federation_expose_*.chunk.bundle` served the new code, and the running app picked it up. HMR sockets stayed connected to the host, auth and trading servers concurrently, and `SIGINT` shuts each server down in ~100ms. ### Re-verified on 0.88.1 + Re.Pack 5.4.3 Lint, typecheck, tests, format check and `check-deps` pass, and production bundles build for all four apps on both platforms. A fresh `pod install` → `xcodebuild` Debug build works **without** the `.last_build_configuration` workaround described below, and `./gradlew assembleDebug` succeeds. On the iPhone 17 simulator: Markets with live prices → Skia chart → trade sheet → wallet → account → sign out → sign in, with no JS errors; hot reload of the `auth` remote applies in 0.2–0.3s; dev servers exit in under 100ms on `SIGINT`. Re-run on the published 5.4.3: the same checks and bundles pass, `pod install` and an incremental Debug build succeed, and the full flow, hot reload, and sub-100ms shutdown were repeated on the iPhone 17 simulator and on an Android 15 emulator (Pixel; `assembleDebug` APK). On Android the Skia chart draws with its axis labels, the trade sheet opens, wallet updates live, and sign out / sign in works. No JS errors on either platform. **Release builds** on Re.Pack 5.4.3: an iOS `Release` simulator build and an Android `assembleRelease` APK (R8 minification on), each with a Hermes bytecode main bundle and no dev server running. The auth, trading and wallet remotes were production bundles (`react-native bundle --dev false`) served from a static file server on their usual ports. On both platforms the full flow works (sign in → live Markets → Skia chart with axis labels → trade sheet → wallet → account → sign out → sign in), every remote request returned 200, and there were no crashes or JS errors. For the local Android run the release manifest temporarily allowed cleartext HTTP to reach `http://localhost`; that change isn't part of this PR. ## Known upstream noise (pre-existing, unchanged by this PR) - `@gorhom/bottom-sheet` passes a deps array to `useAnimatedStyle`, so Reanimated logs `Dependencies should only be used on the web…` repeatedly while the sheet is mounted. - Re.Pack 5.4.3 adds a plugin check, so the auth dev server logs a `ReanimatedPlugin` advisory because auth lists `react-native-reanimated` in `dependencies` (trading/wallet use `peerDependencies`, which is why only auth warns). Auth has no animations, so it is harmless, and auth never configured the plugin on `main` either — not a regression. Tidying that dep is out of scope here. - `Could not find generated setter for class com.reactnative.skia.Skia*ViewManager` on Android — benign, from the new package id. - On shutdown, `@rspack/core`'s Node bindings print `ObjectRef is not unref, it considered as a memory leak` — cosmetic, does not delay exit. - **RN 0.88.0 prebuilt-core pitfall (Re.Pack-unrelated, hit locally; did not reproduce on 0.88.1):** after a fresh `pod install`, a Debug build fails to link with `Undefined symbols: facebook::react::Sealable::Sealable()`, and if an stale bundle is reused the app then dies at launch with `Symbol not found: ...hermes::cdp::CDPDebugAPI::addConsoleMessage...`. `pod install` stages the *Release* `React.xcframework` and `hermesvm`, but `replace-rncore-version.js` / `replace_hermes_version.js` skip their swap when `Pods/<pod>/.last_build_configuration` is absent, because they assume the staged artifact is Debug. Workaround: write `Release` into `Pods/React-Core-prebuilt/.last_build_configuration` and `Pods/hermes-engine/.last_build_configuration`, then rebuild — both print `Replacing …` / `Done replacing hermes-engine` and the build succeeds. Worth reporting upstream. - `pod install` intermittently dies with CocoaPods `ArgumentError - pathname contains null byte` (known pnpm-monorepo flake, [cocoapods#12866](CocoaPods/CocoaPods#12866)); re-running succeeds. - **`HermesBytecodePlugin` can't find hermesc under pnpm on RN 0.82+ (not used by this app, unchanged since 5.4.2):** the default lookup joins `<context>/node_modules/react-native/../hermes-compiler` without resolving the pnpm symlink, then falls back to `sdks/hermesc`, which RN 0.88 no longer ships. Passing `reactNativePath: fs.realpathSync(...)` works around it. When hermesc fails, `react-native bundle` still exits 0 and leaves the chunks as plain JS.
This branch was successfully 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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@callstack/repack-dev-server@5.4.3
Patch Changes
#1513
e0b86baThanks @dannyhw! - Silence the fastifyFSTDEP023deprecation warning printed on every dev server start by passing request log suppression through fastify'slogControlleroption instead of the deprecated top-leveldisableRequestLoggingoption#1495
44431b3Thanks @dannyhw! - Fix dev server shutdown hanging on Node 18 with fastify 5.12+ by force-closing open connections on stop#1486
fd8e33eThanks @dannyhw! - Updateimage-sizeto v2 andfastifyto 5.12.5 to resolve security advisories@callstack/repack-plugin-nativewind@5.4.3
Patch Changes
87db9a1Thanks @whydidoo! - Configure the NativeWind JSX import source forbuiltin:swc-loaderrules nested inoneOforrules, such as the ones fromgetJsTransformRules. Previously only top-level rules were updated, so JSX kept importing fromreact.@callstack/repack@5.4.3
Patch Changes
#1492
6536826Thanks @whydidoo! - Fix Flow enums disappearing inbabel-loaderandbabel-swc-loader:@react-native/babel-presetstrips enum declarations before its enum plugin runs, leaving references such as React Native'sVirtualViewMode.cast()undefined at runtime. Both loaders now run the preset'sbabel-plugin-transform-flow-enumsahead of the preset, so enums are lowered toflow-enums-runtime(resolved from the project or fromreact-native) in every Flow file, with or without an@flowpragma. Flowcomponentdeclarations are also lowered for the project's React version instead of always targeting React 19 (hermesParserOverrides.reactRuntimeTargetstill takes precedence).#1452
a87b592Thanks @elirangoshen! - Send only sources carrying an@flowpragma through hermes-parser inbabelLoader, matchingbabel-plugin-syntax-hermes-parserwith the React Native preset's defaultparseLangTypes: 'flow'. hermes-parser converts its own AST into a Babel AST, and that conversionis quadratic in the number of sibling nodes, so a single prebuilt minified dependency could add
minutes to a build. Set
hermesParserOverrides.flowto'all'to keep parsing every file withhermes-parser.
#1492
6536826Thanks @whydidoo! - Fixbabel-loaderandbabel-swc-loaderfailing withSyntaxError: "[object Object]" is not valid JSONwhen a previous loader passes its source map as an object, e.g.flow-loader(for lowered Flow syntax or withpretty: true) or the stockbabel-loaderused bygetCodegenTransformRules. Both loaders now accept serialized and object source maps.#1483
37c25bbThanks @CristiCeban! - FixCannot find module '@babel/plugin-syntax-typescript'when bundling TypeScript withbabel-swc-loaderor the codegen rules. Re.Pack passed the plugin to Babel by name, so it only resolved when the project happened to have it installed. With pnpm, builds often worked only through theNODE_PATHset by script shims and failed when bundling from Xcode or Gradle.@babel/plugin-syntax-typescriptis now a dependency of Re.Pack and is passed to Babel as a resolved path.@babel/coreis now declared as a peer dependency, since Re.Pack's loaders import it.#1471
c9dab5dThanks @giaBaoJS! - FixDevelopmentPlugincrashing withCannot read properties of undefined (reading 'exposes')when an official Module Federation plugin (from@module-federation/enhanced, or the built-incontainer.ModuleFederationPluginof Rspack or webpack) is used with the dev server. The check for official plugins readexposesfromplugin.config, which only Re.Pack's own Module Federation plugins have, instead ofplugin._options.#1492
6536826Thanks @whydidoo! - Fixflow-loader, and with itgetJsTransformRules, emitting invalid JavaScript for Flowcomponentandhookdeclarations, enums andmatchexpressions, which React Native ships since 0.81. Files using them are now compiled with the project's React Native parser (hermes-parserorflow-parser),babel-plugin-transform-flow-enumsand@babel/plugin-transform-flow-strip-types, while other files still go throughflow-remove-types. Lowered enums useflow-enums-runtime, resolved from the project or fromreact-native.componentdeclarations follow the project's React version (refas a prop on React 19,forwardRefon React 18). Also fixflow-loadercrashing under webpack withMaximum call stack size exceeded.#1516
cfc11a6Thanks @emanueleperuffo! - FixHermesBytecodePluginskipping source map composition for many chunks. The plugin ran inassetEmitted, where a chunk's.mapfile might not be written yet, so hermesc ran without source maps, embedded debug info in the bytecode and skipped source map composition. It now runs inafterEmit, once all assets are on disk.#1484
253d14bThanks @whydidoo! - Keep the options of Module Federation 2.x runtime plugins passed toModuleFederationPluginV2as[path, options]inruntimePlugins. Such entries were silently dropped before.Fix the typings of the
@callstack/repack/mf/*runtime plugins with@module-federation/enhanced0.17 and newer, whereFederationRuntimePluginandFederationHostwere renamed toModuleFederationRuntimePluginandModuleFederation. The types are now derived from the installed runtime, so they work with every supported version.#1502
aed9c75Thanks @whydidoo! - Fix bundling Expo SDK 58 (React Native 0.88) projects:react-native/setup-env,react-native/react-private-interface,react-native/asset-registryandreact-native/unstable-internals-do-not-use) now resolve even whenreact-nativeis aliased to its directory, as@callstack/repack-expodoes, or when package exports are disabled. This fixesCannot find module 'react-native/react-private-interface'and'react-native/setup-env'. React Native 0.87 and newer still needenablePackageExports: truefor@react-native/asset-utils.@react-native/assets-registry/registry, still imported by libraries such asreact-native-svg15.15 and earlier, now maps to React Native's own asset registry on React Native 0.87 and newer, so assets register in a single registry.expoand@expo/metro-configon React Native 0.87 and newer. This fixesUnable to locate React Native polyfillsin Expo projects, including with pnpm, without adding@react-native/js-polyfillsby hand. React Native 0.86 and earlier keep usingrn-get-polyfills.js.react-nativeisn't aliased, it is now resolved from the project rather than from Re.Pack's own location.#1486
fd8e33eThanks @dannyhw! - Updateimage-sizeto v2 andfastifyto 5.12.5 to resolve security advisories#1493
32c32c0Thanks @whydidoo! - Make SWC JSX development transforms follow the build mode.getSwcLoaderOptions(andgetJsTransformRules) tiedjsc.transform.react.developmentto the JSX runtime, so development builds with the defaultautomaticruntime emittedjsxinstead ofjsxDEVand lost__source/__self, accurate component stacks and "open in editor", whileclassicproduction builds kept them.getSwcLoaderOptionsno longer setsjsc.transform.react.developmentby default, so Rspack'sbuiltin:swc-loaderderives it frommode, and development builds with theautomaticruntime now import<importSource>/jsx-dev-runtime. Both helpers accept adevelopmentoption to override it, e.g.getJsTransformRules({ swc: { development: false } })when a customimportSourcedoesn't ship ajsx-dev-runtimeentry.Updated dependencies [
e0b86ba,44431b3,fd8e33e]:@callstack/repack-init@5.4.3
No changes in this release.
@callstack/repack-plugin-expo-modules@5.4.3
No changes in this release.
@callstack/repack-plugin-reanimated@5.4.3
No changes in this release.