Skip to content

chore: changeset version - #1485

Merged
dannyhw merged 1 commit into
mainfrom
changeset-release/main
Nov 4, 2026
Merged

dannyhw merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

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 e0b86ba Thanks @dannyhw! - Silence the fastify FSTDEP023 deprecation warning printed on every dev server start by passing request log suppression through fastify's logController option instead of the deprecated top-level disableRequestLogging option

  • #1495 44431b3 Thanks @dannyhw! - Fix dev server shutdown hanging on Node 18 with fastify 5.12+ by force-closing open connections on stop

  • #1486 fd8e33e Thanks @dannyhw! - Update image-size to v2 and fastify to 5.12.5 to resolve security advisories

@callstack/repack-plugin-nativewind@5.4.3

Patch Changes

  • #1494 87db9a1 Thanks @whydidoo! - Configure the NativeWind JSX import source for builtin:swc-loader rules nested in oneOf or rules, such as the ones from getJsTransformRules. Previously only top-level rules were updated, so JSX kept importing from react.

@callstack/repack@5.4.3

Patch Changes

  • #1492 6536826 Thanks @whydidoo! - Fix Flow enums disappearing in babel-loader and babel-swc-loader: @react-native/babel-preset strips enum declarations before its enum plugin runs, leaving references such as React Native's VirtualViewMode.cast() undefined at runtime. Both loaders now run the preset's babel-plugin-transform-flow-enums ahead of the preset, so enums are lowered to flow-enums-runtime (resolved from the project or from react-native) in every Flow file, with or without an @flow pragma. Flow component declarations are also lowered for the project's React version instead of always targeting React 19 (hermesParserOverrides.reactRuntimeTarget still takes precedence).

  • #1452 a87b592 Thanks @elirangoshen! - Send only sources carrying an @flow pragma through hermes-parser in babelLoader, matching
    babel-plugin-syntax-hermes-parser with the React Native preset's default
    parseLangTypes: 'flow'. hermes-parser converts its own AST into a Babel AST, and that conversion
    is quadratic in the number of sibling nodes, so a single prebuilt minified dependency could add
    minutes to a build. Set hermesParserOverrides.flow to 'all' to keep parsing every file with
    hermes-parser.

  • #1492 6536826 Thanks @whydidoo! - Fix babel-loader and babel-swc-loader failing with SyntaxError: "[object Object]" is not valid JSON when a previous loader passes its source map as an object, e.g. flow-loader (for lowered Flow syntax or with pretty: true) or the stock babel-loader used by getCodegenTransformRules. Both loaders now accept serialized and object source maps.

  • #1483 37c25bb Thanks @CristiCeban! - Fix Cannot find module '@babel/plugin-syntax-typescript' when bundling TypeScript with babel-swc-loader or 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 the NODE_PATH set by script shims and failed when bundling from Xcode or Gradle.

    • @babel/plugin-syntax-typescript is now a dependency of Re.Pack and is passed to Babel as a resolved path.
    • @babel/core is now declared as a peer dependency, since Re.Pack's loaders import it.
  • #1471 c9dab5d Thanks @giaBaoJS! - Fix DevelopmentPlugin crashing with Cannot read properties of undefined (reading 'exposes') when an official Module Federation plugin (from @module-federation/enhanced, or the built-in container.ModuleFederationPlugin of Rspack or webpack) is used with the dev server. The check for official plugins read exposes from plugin.config, which only Re.Pack's own Module Federation plugins have, instead of plugin._options.

  • #1492 6536826 Thanks @whydidoo! - Fix flow-loader, and with it getJsTransformRules, emitting invalid JavaScript for Flow component and hook declarations, enums and match expressions, which React Native ships since 0.81. Files using them are now compiled with the project's React Native parser (hermes-parser or flow-parser), babel-plugin-transform-flow-enums and @babel/plugin-transform-flow-strip-types, while other files still go through flow-remove-types. Lowered enums use flow-enums-runtime, resolved from the project or from react-native. component declarations follow the project's React version (ref as a prop on React 19, forwardRef on React 18). Also fix flow-loader crashing under webpack with Maximum call stack size exceeded.

  • #1516 cfc11a6 Thanks @emanueleperuffo! - Fix HermesBytecodePlugin skipping source map composition for many chunks. The plugin ran in assetEmitted, where a chunk's .map file 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 in afterEmit, once all assets are on disk.

  • #1484 253d14b Thanks @whydidoo! - Keep the options of Module Federation 2.x runtime plugins passed to ModuleFederationPluginV2 as [path, options] in runtimePlugins. Such entries were silently dropped before.

    Fix the typings of the @callstack/repack/mf/* runtime plugins with @module-federation/enhanced 0.17 and newer, where FederationRuntimePlugin and FederationHost were renamed to ModuleFederationRuntimePlugin and ModuleFederation. The types are now derived from the installed runtime, so they work with every supported version.

  • #1502 aed9c75 Thanks @whydidoo! - Fix bundling Expo SDK 58 (React Native 0.88) projects:

    • React Native's explicit subpath exports (react-native/setup-env, react-native/react-private-interface, react-native/asset-registry and react-native/unstable-internals-do-not-use) now resolve even when react-native is aliased to its directory, as @callstack/repack-expo does, or when package exports are disabled. This fixes Cannot find module 'react-native/react-private-interface' and 'react-native/setup-env'. React Native 0.87 and newer still need enablePackageExports: true for @react-native/asset-utils.
    • @react-native/assets-registry/registry, still imported by libraries such as react-native-svg 15.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.
    • React Native polyfills are now also resolved through expo and @expo/metro-config on React Native 0.87 and newer. This fixes Unable to locate React Native polyfills in Expo projects, including with pnpm, without adding @react-native/js-polyfills by hand. React Native 0.86 and earlier keep using rn-get-polyfills.js.
    • When react-native isn't aliased, it is now resolved from the project rather than from Re.Pack's own location.
  • #1486 fd8e33e Thanks @dannyhw! - Update image-size to v2 and fastify to 5.12.5 to resolve security advisories

  • #1493 32c32c0 Thanks @whydidoo! - Make SWC JSX development transforms follow the build mode. getSwcLoaderOptions (and getJsTransformRules) tied jsc.transform.react.development to the JSX runtime, so development builds with the default automatic runtime emitted jsx instead of jsxDEV and lost __source / __self, accurate component stacks and "open in editor", while classic production builds kept them. getSwcLoaderOptions no longer sets jsc.transform.react.development by default, so Rspack's builtin:swc-loader derives it from mode, and development builds with the automatic runtime now import <importSource>/jsx-dev-runtime. Both helpers accept a development option to override it, e.g. getJsTransformRules({ swc: { development: false } }) when a custom importSource doesn't ship a jsx-dev-runtime entry.

  • Updated dependencies [e0b86ba, 44431b3, fd8e33e]:

    • @callstack/repack-dev-server@5.4.3

@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.

@vercel

vercel Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
repack-website Ready Ready Preview Nov 4, 2026 11:35am UTC

Request Review

@github-actions
github-actions Bot force-pushed the changeset-release/main branch from ac5ab6a to 111bae3 Compare October 9, 2026 18:09
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 2 times, most recently from 111bae3 to f7f3c6d Compare October 9, 2026 20:27
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from f7f3c6d to b03d8df Compare October 9, 2026 21:08
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from b03d8df to 2ad8e6a Compare October 9, 2026 21:12
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 2ad8e6a to 7ea344c Compare October 10, 2026 11:49
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 7ea344c to a46af02 Compare October 10, 2026 11:53
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from a46af02 to cb656d7 Compare October 12, 2026 11:19
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from cb656d7 to 786c9ac Compare October 13, 2026 11:44
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 786c9ac to ea2daab Compare October 13, 2026 21:54
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from ea2daab to 97780a4 Compare October 15, 2026 14:17
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 97780a4 to ccda645 Compare October 16, 2026 13:32
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from ccda645 to 017feb5 Compare October 16, 2026 14:55
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 017feb5 to 3b337da Compare October 22, 2026 08:48
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 3b337da to 190abfc Compare October 22, 2026 15:49
@dannyhw
dannyhw merged commit b0b32cb into main Nov 4, 2026
7 checks passed
@dannyhw
dannyhw deleted the changeset-release/main branch November 4, 2026 11:50
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

1 active deployment
Preview — 9bf31946 Deployed Nov 4, 2026 by vercel[bot]
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.

1 participant