Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
"tester-app",
"tester-expo",
"tester-expo-widget",
"tester-federation",
"tester-federation-v2",
"metro-compat-test",
"website"
Expand Down
5 changes: 5 additions & 0 deletions .changeset/mf-runtime-plugin-options.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@callstack/repack': patch
---

Keep Module Federation runtime plugins passed as `[path, options]` tuples in `ModuleFederationPluginV2`. They were previously dropped silently.
5 changes: 5 additions & 0 deletions .changeset/reanimated-warning-filter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@callstack/repack-plugin-reanimated': patch
---

Fix `ReanimatedPlugin` not hiding the `setUpTests` / `Critical dependency: require function` warning from Reanimated 4's Jest utilities, whose message is now prefixed with `[Reanimated] `.
5 changes: 5 additions & 0 deletions .changeset/terser-plugin-unpin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@callstack/repack': patch
---

Depend on `terser-webpack-plugin@^5.6.1` instead of pinning `5.5.0`.
5 changes: 5 additions & 0 deletions .changeset/v6-module-federation-v2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@callstack/repack': major
---

Drop Module Federation V1 and require `@module-federation/enhanced` 2.0 or newer. Removed `ModuleFederationPluginV1` and the `Federated` helpers (`Federated.SHARED_REACT`, `Federated.SHARED_REACT_NATIVE` and `Federated.createRemote` from `@callstack/repack`, `Federated.createURLResolver` and `Federated.importModule` from `@callstack/repack/client`). `Repack.plugins.ModuleFederationPlugin` is now an alias of `ModuleFederationPluginV2`.
10 changes: 10 additions & 0 deletions .changeset/v6-node-22.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@callstack/repack': major
'@callstack/repack-dev-server': major
'@callstack/repack-init': major
'@callstack/repack-plugin-expo-modules': major
'@callstack/repack-plugin-nativewind': major
'@callstack/repack-plugin-reanimated': major
---

Require Node.js 22.12 or newer. Node.js 18 and 20 are no longer supported.
5 changes: 5 additions & 0 deletions .changeset/v6-package-exports-default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@callstack/repack': major
---

`getResolveOptions()` now enables package exports by default (`enablePackageExports: true`), matching Metro's default since React Native 0.79. Pass `enablePackageExports: false` to keep resolving through main fields only.
6 changes: 6 additions & 0 deletions .changeset/v6-react-native-082.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@callstack/repack': major
'@callstack/repack-dev-server': major
---

Require React Native 0.82 or newer with the New Architecture. The native module is now built only as a TurboModule: the legacy architecture Android sources, the `IS_NEW_ARCHITECTURE_ENABLED` build config field and the iOS `RCT_NEW_ARCH_ENABLED` branches were removed, and Android reads the call invoker from `ReactContext` instead of `CatalystInstance`. Also removed code paths for older React Native versions: the pre-0.79 `HMRClient` named exports, the pre-0.79 `DevLoadingView` / `LoadingView` and `AssetSourceResolver` interop, the dev-only `__REACT_NATIVE_MAJOR_VERSION__`, `__REACT_NATIVE_MINOR_VERSION__` and `__REACT_NATIVE_PATCH_VERSION__` globals, `text/plain` symbolication requests, the `enableNewDebugger` dev-middleware experiment, the React Native <= 0.73 Android `CallInvoker` sources and the AGP < 7.3 / pre-0.76 / NDK < 27 Android build branches. The Android library no longer declares its own Android Gradle Plugin classpath and uses `BaseReactPackage`. The iOS pod now uses React Native's `min_ios_version_supported` deployment target instead of iOS 12.
5 changes: 5 additions & 0 deletions .changeset/v6-reanimated-4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@callstack/repack-plugin-reanimated': major
---

Require `react-native-reanimated` 4 or newer, since Reanimated 3 doesn't support React Native 0.82. `ReanimatedPlugin` now throws for Reanimated 3, always requires `react-native-worklets`, and only uses `react-native-worklets/plugin`. `reanimated3ModuleRules` was removed; use `reanimated4ModuleRules`.
6 changes: 6 additions & 0 deletions .changeset/v6-remove-deprecated.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@callstack/repack': major
'@callstack/repack-plugin-reanimated': major
---

Remove APIs deprecated in Re.Pack 5: `ChunksToHermesBytecodePlugin` (use `HermesBytecodePlugin`), `getPublicPath`, the `--webpackConfig` CLI option (use `--config`), the `@callstack/repack/commands/rspack` and `@callstack/repack/commands/webpack` entry points (use `@callstack/repack/commands`), and `reanimatedModuleRules` from `@callstack/repack-plugin-reanimated` (use `reanimated4ModuleRules`). `OutputPlugin` now rejects the no-op `output.bundleFilename`, `output.sourceMapFilename` and `output.assetsPath` options.
2 changes: 1 addition & 1 deletion .github/workflows/test-main-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node_version: ['18', '20', '22', '24', '26']
node_version: ['22', '24', '26']
os: [ubuntu-latest]

steps:
Expand Down
1 change: 0 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ Re.Pack is a toolkit for building and developing React Native applications with
### Apps

- `apps/tester-app/`: Primary manual/integration validation app.
- `apps/tester-federation/`: Module Federation v1 validation app.
- `apps/tester-federation-v2/`: Module Federation v2 validation app.

### Tests
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ We want this community to be friendly and respectful to each other. Please read

## Requirements

- Node 20+ (although Node 18 is still supported but has now reached EOL)
- Node 22.12+ (Node 24 recommended, see `mise.toml`)
- pnpm 8 (use it via `corepack install`)

## Our Development Process
Expand Down
2 changes: 1 addition & 1 deletion apps/tester-app/__tests__/bundle.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ describe('bundle command', () => {
entryFile: 'index.js',
bundleOutput: bundleOutputPath,
dev: false,
webpackConfig: path.join(__dirname, 'configs', configFile),
config: path.join(__dirname, 'configs', configFile),
};

// @ts-expect-error
Expand Down
8 changes: 3 additions & 5 deletions apps/tester-app/__tests__/lazy-compilation.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fs from 'node:fs';
import path from 'node:path';
import rspackCommands from '@callstack/repack/commands/rspack';
import commands from '@callstack/repack/commands';
import { MultiCompiler } from '@rspack/core';
import getPort from 'get-port';
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
Expand All @@ -11,9 +11,7 @@ let port: number;
let stopServer: (() => Promise<void>) | undefined;

describe('lazy compilation', () => {
const startCommand = rspackCommands.find(
(command) => command.name === 'start'
);
const startCommand = commands.find((command) => command.name === 'start');
if (!startCommand) throw new Error('start command not found');

const getStats = (platform: string) =>
Expand All @@ -37,7 +35,7 @@ describe('lazy compilation', () => {
// No `platform` arg — both ios and android are configured,
// which enables the lazy compilation watchRun gate mechanism.
logFile: path.join(TMP_DIR, 'server.log'),
webpackConfig: path.join(__dirname, 'configs', './rspack.config.mjs'),
config: path.join(__dirname, 'configs', './rspack.config.mjs'),
};

// @ts-expect-error
Expand Down
2 changes: 1 addition & 1 deletion apps/tester-app/__tests__/start.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ describe('start command', () => {
port,
platform,
logFile: path.join(TMP_DIR, 'server.log'),
webpackConfig: path.join(__dirname, 'configs', configFile),
config: path.join(__dirname, 'configs', configFile),
};

// @ts-expect-error
Expand Down
1 change: 1 addition & 0 deletions apps/tester-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
"terser-webpack-plugin": "catalog:",
"thread-loader": "^4.0.4",
"typescript": "catalog:",
"vite": "catalog:",
"vitest": "catalog:",
"webpack": "catalog:"
}
Expand Down
61 changes: 0 additions & 61 deletions apps/tester-federation/.gitignore

This file was deleted.

1 change: 0 additions & 1 deletion apps/tester-federation/.ruby-version

This file was deleted.

21 changes: 0 additions & 21 deletions apps/tester-federation/Gemfile

This file was deleted.

142 changes: 0 additions & 142 deletions apps/tester-federation/Gemfile.lock

This file was deleted.

Loading
Loading