From ae0954c0590cfb340b203f8edf36a7e0287d6de7 Mon Sep 17 00:00:00 2001 From: Sophran Date: Wed, 11 Nov 2026 05:49:47 +0800 Subject: [PATCH] fix: declare optional React type peers for published packages --- packages/@react-types/shared/package.json | 6 +++ packages/react-aria-components/package.json | 6 +++ packages/react-aria/package.json | 48 ++++++++++++--------- packages/react-stately/package.json | 46 +++++++++++--------- yarn.config.cjs | 6 ++- yarn.lock | 16 +++++++ 6 files changed, 86 insertions(+), 42 deletions(-) diff --git a/packages/@react-types/shared/package.json b/packages/@react-types/shared/package.json index 69d0c01ad60..e53b94c1d56 100644 --- a/packages/@react-types/shared/package.json +++ b/packages/@react-types/shared/package.json @@ -15,6 +15,12 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" }, "peerDependencies": { + "@types/react": "*", "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } } diff --git a/packages/react-aria-components/package.json b/packages/react-aria-components/package.json index 6dde29cd818..f6bc5cd6e30 100644 --- a/packages/react-aria-components/package.json +++ b/packages/react-aria-components/package.json @@ -70,9 +70,15 @@ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" }, "peerDependencies": { + "@types/react": "*", "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + }, "targets": { "main": false, "module": false, diff --git a/packages/react-aria/package.json b/packages/react-aria/package.json index 70d2b0de6a5..2b906f18520 100644 --- a/packages/react-aria/package.json +++ b/packages/react-aria/package.json @@ -3,8 +3,24 @@ "version": "3.53.1", "description": "Spectrum UI components in React", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/adobe/react-spectrum" + }, + "source": "exports/index.ts", + "files": [ + "*", + "!docs/**", + "!exports/**", + "!intl/**", + "!src/**", + "!stories/**", + "!test/**" + ], + "sideEffects": false, "main": "./dist/exports/index.cjs", "module": "./dist/exports/index.js", + "types": "./dist/types/exports/index.d.ts", "exports": { ".": { "source": "./exports/index.ts", @@ -31,21 +47,8 @@ "require": "./dist/exports/*.cjs" } }, - "types": "./dist/types/exports/index.d.ts", - "source": "exports/index.ts", - "files": [ - "*", - "!docs/**", - "!exports/**", - "!intl/**", - "!src/**", - "!stories/**", - "!test/**" - ], - "sideEffects": false, - "repository": { - "type": "git", - "url": "https://github.com/adobe/react-spectrum" + "publishConfig": { + "access": "public" }, "dependencies": { "@internationalized/date": "^3.12.4", @@ -58,18 +61,21 @@ "react-stately": "3.51.0", "use-sync-external-store": "^1.6.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - }, "devDependencies": { "@babel/cli": "^7.24.1", "@babel/core": "^7.24.3", "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" }, - "publishConfig": { - "access": "public" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } }, "targets": { "main": false, diff --git a/packages/react-stately/package.json b/packages/react-stately/package.json index 32bf4f983e1..3f4af9a8345 100644 --- a/packages/react-stately/package.json +++ b/packages/react-stately/package.json @@ -3,8 +3,24 @@ "version": "3.51.0", "description": "Spectrum UI components in React", "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/adobe/react-spectrum" + }, + "source": "exports/index.ts", + "files": [ + "*", + "!docs/**", + "!exports/**", + "!intl/**", + "!src/**", + "!stories/**", + "!test/**" + ], + "sideEffects": false, "main": "./dist/exports/index.cjs", "module": "./dist/exports/index.js", + "types": "./dist/types/exports/index.d.ts", "exports": { ".": { "source": "./exports/index.ts", @@ -21,21 +37,8 @@ "require": "./dist/exports/*.cjs" } }, - "types": "./dist/types/exports/index.d.ts", - "source": "exports/index.ts", - "files": [ - "*", - "!docs/**", - "!exports/**", - "!intl/**", - "!src/**", - "!stories/**", - "!test/**" - ], - "sideEffects": false, - "repository": { - "type": "git", - "url": "https://github.com/adobe/react-spectrum" + "publishConfig": { + "access": "public" }, "dependencies": { "@internationalized/date": "^3.12.4", @@ -45,16 +48,19 @@ "@swc/helpers": "^0.5.0", "use-sync-external-store": "^1.6.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - }, "devDependencies": { "@babel/cli": "^7.24.1", "@babel/core": "^7.24.3", "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" }, - "publishConfig": { - "access": "public" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } }, "targets": { "main": false, diff --git a/yarn.config.cjs b/yarn.config.cjs index 9edb1f222fe..9218b8eeef1 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -164,7 +164,11 @@ function enforceWorkspaceDependencies({Yarn}) { // workspace tree has the same peer dependency. let seen = new Map(); for (const dependency of Yarn.dependencies()) { - if (dependency.type === 'peerDependencies') { + // Do not turn optional peers into required peers of dependent workspaces. + if ( + dependency.type === 'peerDependencies' && + !dependency.workspace.manifest.peerDependenciesMeta?.[dependency.ident]?.optional + ) { for (const workspace of Yarn.workspaces()) { if ( // must check in manifest because yarn is reporting all peer in workspace.pkg.dependencies diff --git a/yarn.lock b/yarn.lock index 496aad50998..8b2a4b1d67e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9257,7 +9257,11 @@ __metadata: dependencies: react: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" peerDependencies: + "@types/react": "*" react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + peerDependenciesMeta: + "@types/react": + optional: true languageName: unknown linkType: soft @@ -25177,8 +25181,12 @@ __metadata: react-stately: "npm:3.51.0" use-sync-external-store: "npm:^1.6.0" peerDependencies: + "@types/react": "*" react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + peerDependenciesMeta: + "@types/react": + optional: true languageName: unknown linkType: soft @@ -25200,8 +25208,12 @@ __metadata: react-stately: "npm:3.51.0" use-sync-external-store: "npm:^1.6.0" peerDependencies: + "@types/react": "*" react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + peerDependenciesMeta: + "@types/react": + optional: true languageName: unknown linkType: soft @@ -25478,7 +25490,11 @@ __metadata: react: "npm:^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" use-sync-external-store: "npm:^1.6.0" peerDependencies: + "@types/react": "*" react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + peerDependenciesMeta: + "@types/react": + optional: true languageName: unknown linkType: soft