Skip to content
Merged
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
11 changes: 5 additions & 6 deletions packages/command-tests/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -403,15 +403,14 @@ async function execFailedAsync(command, workDir) {
function fixPackageJson(json) {
const devDependencies = {
"@types/jest": "^29.0.0",
"@types/react": "^19.0.0",
"@types/react-native": "0.78.2",
"@types/react-dom": "^19.0.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"@types/react-test-renderer": "~18.0.0"
};
const overrides = {
react: "^19.0.0",
"react-dom": "^19.0.0",
"react-native": "0.78.2"
react: "^19.3.0",
"react-dom": "^19.3.0",
"react-native": "0.88.0"
};

Object.keys(devDependencies)
Expand Down
4 changes: 4 additions & 0 deletions packages/generator-widget/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

## [Unreleased]

### Changed

- We updated the generated widget templates to React 19.3 and React Native 0.88.

## [11.13.0] - 2026-08-06

### Changed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@

},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"react-native": "~0.88.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"react-native": "~0.88.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@

},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"react-native": "~0.88.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"react-native": "~0.88.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,17 @@

},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"react-native": "~0.88.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"react-native": "~0.88.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,17 @@

},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"react-native": "~0.88.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"react-native": "~0.88.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"
"react": "^19.3.0",
"react-dom": "^19.3.0",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,17 @@

},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0",<% if (isLanguageTS) { %>
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",<% } %>
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",<% if (isLanguageTS) { %>
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",<% } %>
"react-native": "~0.88.0"
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0",<% if (isLanguageTS) { %>
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",<% } %>
"react-native": "~0.78.2"
"react": "^19.3.0",
"react-dom": "^19.3.0",<% if (isLanguageTS) { %>
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",<% } %>
"react-native": "~0.88.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@
"classnames": "^2.5.1"
},
"resolutions": {
"react": "^19.0.0",
"react-dom": "^19.0.0"<% if (isLanguageTS) { %>,
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"<% } %>
"react": "^19.3.0",
"react-dom": "^19.3.0"<% if (isLanguageTS) { %>,
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"<% } %>
},
"overrides": {
"react": "^19.0.0",
"react-dom": "^19.0.0"<% if (isLanguageTS) { %>,
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0"<% } %>
"react": "^19.3.0",
"react-dom": "^19.3.0"<% if (isLanguageTS) { %>,
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0"<% } %>
}
}
18 changes: 18 additions & 0 deletions packages/pluggable-widgets-tools/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

## [Unreleased]

### Changed

- We upgraded the Pluggable Widgets Tools to React 19.3 and React Native 0.88. The base `tsconfig` now uses the `bundler` module resolution, since React Native 0.88 only exposes its TypeScript types through package `exports`. Native unit tests now use the `@react-native/jest-preset` Jest preset and `ts-jest` 29.4.11 or newer, and also transform `@shopify/flash-list`.

- We added `react-native-worklets`, `@react-native-vector-icons/common` and `mendix-native` to the external dependencies of native widgets, and disabled the removal of directives when minifying native widgets.

- We now allow any Node.js version from 22.18 onwards. (Issue #239)

### Fixed

- We fixed how native dependencies are added to the widget package. Their JavaScript code was missing when they were installed with pnpm or another package manager that links packages into `node_modules`, their `android` and `ios` folders were included, and JavaScript-only dependencies were treated as native when their example apps, tests or docs contain `android` or `ios` folders.

- We fixed an issue where building a TypeScript widget could fail with "Could not find module 'tslib'" since `tslib`, which is required by `@rollup/plugin-typescript`, was not declared as a dependency.

### Removed

- We removed `@types/react-native` from the dependencies managed by the migration script, since React Native now ships its own types.

## [11.15.0] - 2026-09-30

### Changed
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import fg from "fast-glob";
import fsExtra from "fs-extra";
import { existsSync, readFileSync, writeFileSync } from "fs";
import { existsSync, readFileSync, realpathSync, writeFileSync } from "fs";
import { dirname, join, parse } from "path";
import copy from "recursive-copy";
import { promisify } from "util";
Expand Down Expand Up @@ -125,7 +125,14 @@ async function resolvePackage(target, sourceDir, optional = false) {
}

async function hasNativeCode(dir) {
return (await fg(["**/{android,ios}/*", "**/*.podspec"], { cwd: dir })).length > 0;
return (
(
await fg(["**/{android,ios}/*", "**/*.podspec"], {
cwd: dir,
ignore: ["**/example*/**", "**/__tests__/**", "**/docs/**"]
})
).length > 0
);
}

async function getTransitiveDependencies(packagePath, isExternal) {
Expand Down Expand Up @@ -169,7 +176,8 @@ async function copyJsModule(moduleSourcePath, to) {
if (existsSync(to)) {
return;
}
return promisify(copy)(moduleSourcePath, to, {
// Package managers like pnpm link packages into node_modules, so copy the contents of the link target.
return promisify(copy)(realpathSync(moduleSourcePath), to, {
filter: [
"**/*.*",
LICENSE_GLOB,
Expand Down
Loading
Loading