Commit aa414fe6b10 for woocommerce

commit aa414fe6b10acde1e0c0f9c1b72ba942a7753d11
Author: Ján Mikláš <neosinner@gmail.com>
Date:   Wed Nov 4 12:20:02 2026 +0100

    Centralize shared build, lint and test tooling catalogs (#70613)

    * Catalog webpack-cli without changing versions

    * Catalog css-loader without changing versions

    * Catalog postcss-loader without changing versions

    * Catalog sass-loader without changing versions

    * Catalog mini-css-extract-plugin without changing versions

    * Catalog Babel prop-type removal plugin

    * Catalog typescript without changing versions

    * Catalog ESLint and preserve peer compatibility

    * Catalog rimraf without changing versions

    * Catalog jest without changing versions

    * Catalog jest-cli without changing versions

    * Catalog jest-environment-jsdom without changing versions

    * Catalog jest-environment-node without changing versions

    * Catalog jest-circus without changing versions

    * Catalog @types/jest without changing versions

    * Catalog @jest/globals without changing versions

    * Catalog babel-jest without changing versions

    * Catalog ts-jest without changing versions

    * Catalog jest-fixed-jsdom without changing versions

    * Add changelogs for shared tooling catalogs

    * chore: remove unused Jest syncpack rules

diff --git a/.syncpackrc b/.syncpackrc
index 6abdc2316a4..6deeb9e7fb4 100644
--- a/.syncpackrc
+++ b/.syncpackrc
@@ -118,16 +118,35 @@
 				"@babel/preset-react",
 				"@babel/preset-typescript",
 				"@babel/runtime",
+				"@jest/globals",
+				"@types/jest",
 				"@wordpress/env",
-				"@wordpress/prettier-config",
 				"@wordpress/postcss-plugins-preset",
+				"@wordpress/prettier-config",
 				"@wordpress/scripts",
+				"babel-jest",
 				"babel-loader",
+				"babel-plugin-transform-react-remove-prop-types",
 				"copy-webpack-plugin",
+				"css-loader",
+				"eslint",
+				"jest",
+				"jest-circus",
+				"jest-cli",
+				"jest-environment-jsdom",
+				"jest-environment-node",
+				"jest-fixed-jsdom",
+				"mini-css-extract-plugin",
 				"postcss",
+				"postcss-loader",
 				"prettier",
+				"rimraf",
+				"sass-loader",
 				"simple-git",
-				"webpack"
+				"ts-jest",
+				"typescript",
+				"webpack",
+				"webpack-cli"
 			],
 			"packages": [
 				"**"
@@ -135,14 +154,17 @@
 			"policy": "catalog"
 		},
 		{
-			"label": "Babel dependencies: babel-plugin-transform-react-remove-prop-types - reduce build artifacts size",
+			"label": "Preserve public ESLint peer compatibility ranges",
+			"dependencyTypes": [
+				"peer"
+			],
 			"dependencies": [
-				"babel-plugin-transform-react-remove-prop-types"
+				"eslint"
 			],
-			"pinVersion": "0.4.24",
 			"packages": [
 				"**"
-			]
+			],
+			"isIgnored": true
 		},
 		{
 			"label": "React-related dependencies: React 18",
@@ -184,56 +206,6 @@
 			],
 			"pinVersion": "3.3.7"
 		},
-		{
-			"dependencies": [
-				"typescript"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "5.7.x"
-		},
-		{
-			"dependencies": [
-				"jest-fixed-jsdom"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "^0.0.10"
-		},
-		{
-			"label": "ESLint dev target. Peer deps are excluded so @woocommerce/eslint-plugin can peer the wider `^9 || ^10` range.",
-			"dependencyTypes": [
-				"prod",
-				"dev"
-			],
-			"dependencies": [
-				"eslint"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "^10.0.0"
-		},
-		{
-			"dependencies": [
-				"webpack-cli"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "5.1.x"
-		},
-		{
-			"dependencies": [
-				"css-loader"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "6.11.x"
-		},
 		{
 			"dependencies": [
 				"ignore-loader"
@@ -288,15 +260,6 @@
 			],
 			"pinVersion": "2.0.x"
 		},
-		{
-			"dependencies": [
-				"mini-css-extract-plugin"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "2.9.x"
-		},
 		{
 			"dependencies": [
 				"webpack-remove-empty-scripts"
@@ -486,15 +449,6 @@
 			],
 			"pinVersion": "2.1.x"
 		},
-		{
-			"dependencies": [
-				"postcss-loader"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "4.3.x"
-		},
 		{
 			"dependencies": [
 				"rtlcss"
@@ -504,24 +458,6 @@
 			],
 			"pinVersion": "4.3.x"
 		},
-		{
-			"dependencies": [
-				"rimraf"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "5.0.5"
-		},
-		{
-			"dependencies": [
-				"sass-loader"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "10.5.x"
-		},
 		{
 			"dependencyTypes": [
 				"prod",
@@ -545,52 +481,6 @@
 			],
 			"pinVersion": "^11.1.1"
 		},
-		{
-			"label": "Testing related dependencies: React 18",
-			"dependencies": [
-				"@jest/test-sequencer",
-				"@types/jest",
-				"jest",
-				"jest-cli",
-				"jest-circus",
-				"jest-each",
-				"jest-environment-jsdom",
-				"jest-environment-node",
-				"babel-jest"
-			],
-			"packages": [
-				"@woocommerce/block-library",
-				"@woocommerce/storybook"
-			],
-			"pinVersion": "29.5.x"
-		},
-		{
-			"label": "Testing related dependencies: React 17",
-			"dependencies": [
-				"@jest/test-sequencer",
-				"@types/jest",
-				"jest",
-				"jest-cli",
-				"jest-circus",
-				"jest-each",
-				"jest-environment-jsdom",
-				"jest-environment-node",
-				"babel-jest"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "29.5.x"
-		},
-		{
-			"dependencies": [
-				"ts-jest"
-			],
-			"packages": [
-				"**"
-			],
-			"pinVersion": "29.1.x"
-		},
 		{
 			"dependencies": [
 				"ts-loader"
diff --git a/package.json b/package.json
index 97df1a247ca..4fab212fccb 100644
--- a/package.json
+++ b/package.json
@@ -56,23 +56,23 @@
 		"chalk": "^4.1.2",
 		"copy-webpack-plugin": "catalog:tooling",
 		"core-js": "^3.34.0",
-		"css-loader": "6.11.x",
+		"css-loader": "catalog:tooling",
 		"glob": "^10.3.10",
 		"husky": "^9.0.11",
-		"jest": "29.5.x",
+		"jest": "catalog:tooling",
 		"lint-staged": "^12.5.0",
 		"mkdirp": "^1.0.4",
 		"moment": "^2.29.4",
 		"node-stream-zip": "^1.15.0",
-		"postcss-loader": "4.3.x",
+		"postcss-loader": "catalog:tooling",
 		"prettier": "catalog:tooling",
 		"regenerator-runtime": "^0.13.11",
-		"rimraf": "5.0.5",
+		"rimraf": "catalog:tooling",
 		"sass": "^1.69.5",
-		"sass-loader": "10.5.x",
+		"sass-loader": "catalog:tooling",
 		"stylelint": "catalog:tooling",
 		"syncpack": "15.3.3",
-		"typescript": "5.7.x",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling"
 	},
 	"dependencies": {
diff --git a/packages/js/admin-layout/changelog/shared-tooling-catalog b/packages/js/admin-layout/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/admin-layout/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/admin-layout/package.json b/packages/js/admin-layout/package.json
index 43c88dc8fe6..7f25c259e3c 100644
--- a/packages/js/admin-layout/package.json
+++ b/packages/js/admin-layout/package.json
@@ -74,14 +74,14 @@
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"peerDependencies": {
 		"@types/react": "18.3.x",
diff --git a/packages/js/components/changelog/shared-tooling-catalog b/packages/js/components/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/components/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/components/package.json b/packages/js/components/package.json
index 851103e6111..b2694f62276 100644
--- a/packages/js/components/package.json
+++ b/packages/js/components/package.json
@@ -160,7 +160,7 @@
 		"@testing-library/react": "^16.x.x",
 		"@testing-library/user-event": "13.5.0",
 		"@types/canvas-confetti": "^1.6.4",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/lodash": "^4.14.202",
 		"@types/prop-types": "^15.7.11",
 		"@types/testing-library__jest-dom": "^5.14.9",
@@ -172,25 +172,25 @@
 		"@woocommerce/internal-js-tests": "workspace:*",
 		"@wordpress/babel-preset-default": "next",
 		"@wordpress/browserslist-config": "next",
-		"css-loader": "6.11.x",
-		"eslint": "^10.0.0",
+		"css-loader": "catalog:tooling",
+		"eslint": "catalog:tooling",
 		"stylelint": "catalog:tooling",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"postcss": "catalog:tooling",
-		"postcss-loader": "4.3.x",
+		"postcss-loader": "catalog:tooling",
 		"qrcode.react": "^3.1.0",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
 		"redux": "4.2.1",
-		"rimraf": "5.0.5",
-		"sass-loader": "10.5.x",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x",
+		"rimraf": "catalog:tooling",
+		"sass-loader": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling",
 		"uuid": "^11.1.1",
 		"webpack": "catalog:tooling",
-		"webpack-cli": "5.1.x"
+		"webpack-cli": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/packages/js/csv-export/changelog/shared-tooling-catalog b/packages/js/csv-export/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/csv-export/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/csv-export/package.json b/packages/js/csv-export/package.json
index 3ada211bd5f..5f914a18f2f 100644
--- a/packages/js/csv-export/package.json
+++ b/packages/js/csv-export/package.json
@@ -64,18 +64,18 @@
 	},
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"lint-staged": {
 		"*.(t|j)s?(x)": [
diff --git a/packages/js/currency/changelog/shared-tooling-catalog b/packages/js/currency/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/currency/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/currency/package.json b/packages/js/currency/package.json
index f70d5d802fd..a7702e2e0a8 100644
--- a/packages/js/currency/package.json
+++ b/packages/js/currency/package.json
@@ -84,19 +84,19 @@
 	},
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/react": "18.3.x",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/packages/js/customer-effort-score/changelog/shared-tooling-catalog b/packages/js/customer-effort-score/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/customer-effort-score/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/customer-effort-score/package.json b/packages/js/customer-effort-score/package.json
index 8affe0aa2d1..d845aa0c716 100644
--- a/packages/js/customer-effort-score/package.json
+++ b/packages/js/customer-effort-score/package.json
@@ -93,7 +93,7 @@
 		"@babel/core": "catalog:tooling",
 		"@testing-library/dom": "^10.4.x",
 		"@testing-library/react": "^16.x.x",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/prop-types": "^15.7.11",
 		"@types/testing-library__jest-dom": "^5.14.9",
 		"@woocommerce/data": "workspace:*",
@@ -104,22 +104,22 @@
 		"@woocommerce/navigation": "workspace:*",
 		"@woocommerce/tracks": "workspace:*",
 		"@wordpress/browserslist-config": "next",
-		"css-loader": "6.11.x",
-		"eslint": "^10.0.0",
+		"css-loader": "catalog:tooling",
+		"eslint": "catalog:tooling",
 		"stylelint": "catalog:tooling",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"postcss": "catalog:tooling",
-		"postcss-loader": "4.3.x",
+		"postcss-loader": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
-		"rimraf": "5.0.5",
-		"sass-loader": "10.5.x",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x",
+		"rimraf": "catalog:tooling",
+		"sass-loader": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling",
-		"webpack-cli": "5.1.x"
+		"webpack-cli": "catalog:tooling"
 	},
 	"peerDependencies": {
 		"@wordpress/data": "^10.19.0",
diff --git a/packages/js/data/changelog/shared-tooling-catalog b/packages/js/data/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/data/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/data/package.json b/packages/js/data/package.json
index abf8276247f..f7f4ddf9ae9 100644
--- a/packages/js/data/package.json
+++ b/packages/js/data/package.json
@@ -95,7 +95,7 @@
 		"@babel/runtime": "catalog:tooling",
 		"@testing-library/dom": "^10.4.x",
 		"@testing-library/react": "^16.x.x",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/lodash": "^4.14.202",
 		"@types/md5": "^2.3.5",
 		"@types/node": "^24.1.0",
@@ -105,16 +105,16 @@
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
 		"redux": "^4.2.1",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"peerDependencies": {
 		"@wordpress/data": "^10.19.0",
diff --git a/packages/js/date/changelog/shared-tooling-catalog b/packages/js/date/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/date/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/date/package.json b/packages/js/date/package.json
index 435bd8233b0..123b6634ad5 100644
--- a/packages/js/date/package.json
+++ b/packages/js/date/package.json
@@ -47,7 +47,7 @@
 	},
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/lodash": "^4.14.202",
 		"@types/node": "^24.1.0",
 		"@types/qs": "^6.9.10",
@@ -56,13 +56,13 @@
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
 		"d3-time-format": "^2.3.0",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"peerDependencies": {
 		"lodash": "^4.17.0"
diff --git a/packages/js/dependency-extraction-webpack-plugin/changelog/shared-tooling-catalog b/packages/js/dependency-extraction-webpack-plugin/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/dependency-extraction-webpack-plugin/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/dependency-extraction-webpack-plugin/package.json b/packages/js/dependency-extraction-webpack-plugin/package.json
index 3ed9021b7cf..f069719830b 100644
--- a/packages/js/dependency-extraction-webpack-plugin/package.json
+++ b/packages/js/dependency-extraction-webpack-plugin/package.json
@@ -34,14 +34,14 @@
 		"@babel/core": "catalog:tooling",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling",
-		"webpack-cli": "5.1.x"
+		"webpack-cli": "catalog:tooling"
 	},
 	"scripts": {
 		"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
diff --git a/packages/js/e2e-utils-playwright/changelog/shared-tooling-catalog b/packages/js/e2e-utils-playwright/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/e2e-utils-playwright/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/e2e-utils-playwright/package.json b/packages/js/e2e-utils-playwright/package.json
index a30e40b6d3e..8e7879975b9 100644
--- a/packages/js/e2e-utils-playwright/package.json
+++ b/packages/js/e2e-utils-playwright/package.json
@@ -72,17 +72,17 @@
 	},
 	"devDependencies": {
 		"@playwright/test": "^1.63.0",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/node": "^24.1.0",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"dependencies": {
 		"axios": "^1.18.0",
diff --git a/packages/js/email-editor/changelog/shared-tooling-catalog b/packages/js/email-editor/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/email-editor/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/email-editor/package.json b/packages/js/email-editor/package.json
index 9a351831d03..4c2ec2aad24 100644
--- a/packages/js/email-editor/package.json
+++ b/packages/js/email-editor/package.json
@@ -128,7 +128,7 @@
 		"@testing-library/react": "^16.x.x",
 		"@testing-library/user-event": "13.5.0",
 		"@types/history": "^4.7.11",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/js-cookie": "^3.0.2",
 		"@types/lodash": "^4.14.180",
 		"@types/node": "^24.1.0",
@@ -143,20 +143,20 @@
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
 		"@wordpress/browserslist-config": "next",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"prettier": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
-		"rimraf": "5.0.5",
+		"rimraf": "catalog:tooling",
 		"stylelint": "catalog:tooling",
-		"ts-jest": "29.1.x",
+		"ts-jest": "catalog:tooling",
 		"ts-loader": "9.5.x",
-		"typescript": "5.7.x",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling",
-		"webpack-cli": "5.1.x"
+		"webpack-cli": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/packages/js/eslint-plugin/changelog/shared-tooling-catalog b/packages/js/eslint-plugin/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/eslint-plugin/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/eslint-plugin/package.json b/packages/js/eslint-plugin/package.json
index d29e1e53269..34de9ad39e4 100644
--- a/packages/js/eslint-plugin/package.json
+++ b/packages/js/eslint-plugin/package.json
@@ -49,9 +49,9 @@
 	},
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
-		"eslint": "^10.0.0",
-		"rimraf": "5.0.5",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"lint-staged": {
 		"*.(t|j)s?(x)": [
diff --git a/packages/js/experimental/changelog/shared-tooling-catalog b/packages/js/experimental/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/experimental/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/experimental/package.json b/packages/js/experimental/package.json
index 163e2935d57..e20d74dd23d 100644
--- a/packages/js/experimental/package.json
+++ b/packages/js/experimental/package.json
@@ -73,7 +73,7 @@
 		"@testing-library/dom": "10.4.1",
 		"@testing-library/react": "^16.x.x",
 		"@testing-library/user-event": "13.5.0",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/react-transition-group": "^4.4.10",
 		"@types/testing-library__jest-dom": "^5.14.9",
 		"@woocommerce/eslint-config": "workspace:*",
@@ -81,22 +81,22 @@
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
 		"@wordpress/browserslist-config": "next",
-		"css-loader": "6.11.x",
-		"eslint": "^10.0.0",
+		"css-loader": "catalog:tooling",
+		"eslint": "catalog:tooling",
 		"stylelint": "catalog:tooling",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"postcss": "catalog:tooling",
-		"postcss-loader": "4.3.x",
+		"postcss-loader": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
-		"rimraf": "5.0.5",
-		"sass-loader": "10.5.x",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x",
+		"rimraf": "catalog:tooling",
+		"sass-loader": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling",
-		"webpack-cli": "5.1.x"
+		"webpack-cli": "catalog:tooling"
 	},
 	"peerDependencies": {
 		"react": "18.3.x",
diff --git a/packages/js/explat/changelog/shared-tooling-catalog b/packages/js/explat/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/explat/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/explat/package.json b/packages/js/explat/package.json
index 9e9f8c5a964..8d3e262b800 100644
--- a/packages/js/explat/package.json
+++ b/packages/js/explat/package.json
@@ -75,7 +75,7 @@
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
 		"@types/cookie": "^0.6.0",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/node": "^24.1.0",
 		"@types/qs": "^6.9.10",
 		"@types/react": "18.3.x",
@@ -83,13 +83,13 @@
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"publishConfig": {
 		"access": "public",
diff --git a/packages/js/expression-evaluation/changelog/shared-tooling-catalog b/packages/js/expression-evaluation/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/expression-evaluation/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/expression-evaluation/package.json b/packages/js/expression-evaluation/package.json
index f9e8fbe1a65..6fa955e4f90 100644
--- a/packages/js/expression-evaluation/package.json
+++ b/packages/js/expression-evaluation/package.json
@@ -74,18 +74,18 @@
 	},
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"lint-staged": {
 		"*.(t|j)s?(x)": [
diff --git a/packages/js/internal-build/changelog/shared-tooling-catalog b/packages/js/internal-build/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/internal-build/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/internal-build/package.json b/packages/js/internal-build/package.json
index 32c06e3469f..52f1ddc3409 100644
--- a/packages/js/internal-build/package.json
+++ b/packages/js/internal-build/package.json
@@ -61,14 +61,14 @@
 		"@wordpress/postcss-plugins-preset": "catalog:tooling",
 		"@wordpress/theme": "catalog:wp-bundled",
 		"chokidar": "^3.6.0",
-		"css-loader": "6.11.x",
+		"css-loader": "catalog:tooling",
 		"esbuild": "^0.28.1",
 		"glob": "^10.3.10",
 		"json2php": "^0.0.7",
-		"mini-css-extract-plugin": "2.9.x",
-		"postcss-loader": "4.3.x",
+		"mini-css-extract-plugin": "catalog:tooling",
+		"postcss-loader": "catalog:tooling",
 		"rtlcss": "4.3.x",
-		"sass-loader": "10.5.x",
+		"sass-loader": "catalog:tooling",
 		"webpack-remove-empty-scripts": "1.0.x"
 	},
 	"devDependencies": {
@@ -79,9 +79,9 @@
 		"@wordpress/data": "10.33.1",
 		"@wordpress/editor": "14.33.11",
 		"@wordpress/notices": "5.33.1",
-		"eslint": "^10.0.0",
+		"eslint": "catalog:tooling",
 		"stylelint": "catalog:tooling",
-		"typescript": "5.7.x"
+		"typescript": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/packages/js/internal-js-tests/changelog/shared-tooling-catalog b/packages/js/internal-js-tests/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/internal-js-tests/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/internal-js-tests/package.json b/packages/js/internal-js-tests/package.json
index 9ed9de27a1a..40d10c10698 100644
--- a/packages/js/internal-js-tests/package.json
+++ b/packages/js/internal-js-tests/package.json
@@ -74,18 +74,18 @@
 		"@wordpress/data": "catalog:wp-min",
 		"@wordpress/html-entities": "catalog:wp-min",
 		"@wordpress/notices": "catalog:wp-min",
-		"babel-jest": "29.5.x",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"babel-jest": "catalog:tooling",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"lib0": "0.2.x",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
 		"resize-observer-polyfill": "1.5.1",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"peerDependencies": {
 		"@wordpress/data": "^10.19.0",
diff --git a/packages/js/navigation/changelog/shared-tooling-catalog b/packages/js/navigation/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/navigation/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/navigation/package.json b/packages/js/navigation/package.json
index 145732c1f73..e8d6b4684ee 100644
--- a/packages/js/navigation/package.json
+++ b/packages/js/navigation/package.json
@@ -94,21 +94,21 @@
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
 		"@babel/runtime": "catalog:tooling",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/qs": "^6.9.10",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/packages/js/notices/changelog/shared-tooling-catalog b/packages/js/notices/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/notices/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/notices/package.json b/packages/js/notices/package.json
index 49e526b95b5..20c25832603 100644
--- a/packages/js/notices/package.json
+++ b/packages/js/notices/package.json
@@ -91,15 +91,15 @@
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
 		"redux": "^4.2.1",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/packages/js/number/changelog/shared-tooling-catalog b/packages/js/number/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/number/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/number/package.json b/packages/js/number/package.json
index df050a68a6b..e9537d70e47 100644
--- a/packages/js/number/package.json
+++ b/packages/js/number/package.json
@@ -73,19 +73,19 @@
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
 		"@babel/runtime": "catalog:tooling",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/lodash": "^4.14.202",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"lint-staged": {
 		"*.(t|j)s?(x)": [
diff --git a/packages/js/onboarding/changelog/shared-tooling-catalog b/packages/js/onboarding/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/onboarding/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/onboarding/package.json b/packages/js/onboarding/package.json
index 1760ed59c55..d268ff8d9cb 100644
--- a/packages/js/onboarding/package.json
+++ b/packages/js/onboarding/package.json
@@ -82,7 +82,7 @@
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
 		"@testing-library/react": "^16.x.x",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/react": "18.3.x",
 		"@types/string-similarity": "4.0.0",
 		"@woocommerce/eslint-config": "workspace:*",
@@ -90,20 +90,20 @@
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
 		"@wordpress/browserslist-config": "next",
-		"css-loader": "6.11.x",
-		"eslint": "^10.0.0",
+		"css-loader": "catalog:tooling",
+		"eslint": "catalog:tooling",
 		"stylelint": "catalog:tooling",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"postcss": "catalog:tooling",
-		"postcss-loader": "4.3.x",
-		"rimraf": "5.0.5",
-		"sass-loader": "10.5.x",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x",
+		"postcss-loader": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"sass-loader": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling",
-		"webpack-cli": "5.1.x"
+		"webpack-cli": "catalog:tooling"
 	},
 	"publishConfig": {
 		"access": "public",
diff --git a/packages/js/remote-logging/changelog/shared-tooling-catalog b/packages/js/remote-logging/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/remote-logging/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/remote-logging/package.json b/packages/js/remote-logging/package.json
index 93e4c199f24..041fdcca2e5 100644
--- a/packages/js/remote-logging/package.json
+++ b/packages/js/remote-logging/package.json
@@ -72,20 +72,20 @@
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
 		"@types/debug": "^4.1.12",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/node": "^24.1.0",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
 		"@wordpress/jest-console": "^5.4.0",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"publishConfig": {
 		"access": "public",
diff --git a/packages/js/sanitize/changelog/shared-tooling-catalog b/packages/js/sanitize/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/sanitize/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/sanitize/package.json b/packages/js/sanitize/package.json
index c7beb0ed885..430092881b3 100644
--- a/packages/js/sanitize/package.json
+++ b/packages/js/sanitize/package.json
@@ -43,18 +43,18 @@
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
 		"@types/dompurify": "^2.0.4",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/trusted-types": "^2.0.7",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"peerDependencies": {},
 	"publishConfig": {
diff --git a/packages/js/settings-ui/changelog/shared-tooling-catalog b/packages/js/settings-ui/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/settings-ui/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/settings-ui/package.json b/packages/js/settings-ui/package.json
index aa64e688d0f..a9891bc85c6 100644
--- a/packages/js/settings-ui/package.json
+++ b/packages/js/settings-ui/package.json
@@ -45,21 +45,21 @@
 	},
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/react": "18.3.x",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
+		"eslint": "catalog:tooling",
 		"stylelint": "catalog:tooling",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"peerDependencies": {
 		"@types/react": "18.3.x",
diff --git a/packages/js/tracks/changelog/shared-tooling-catalog b/packages/js/tracks/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/js/tracks/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/js/tracks/package.json b/packages/js/tracks/package.json
index 8680cb782af..f78cdb06e4e 100644
--- a/packages/js/tracks/package.json
+++ b/packages/js/tracks/package.json
@@ -74,19 +74,19 @@
 	"devDependencies": {
 		"@babel/core": "catalog:tooling",
 		"@types/debug": "^4.1.12",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/node": "^24.1.0",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@woocommerce/internal-build": "workspace:*",
 		"@woocommerce/internal-js-tests": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"rimraf": "5.0.5",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-cli": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"rimraf": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"lint-staged": {
 		"*.(t|j)s?(x)": [
diff --git a/packages/php/email-editor/changelog/shared-tooling-catalog b/packages/php/email-editor/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/packages/php/email-editor/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/php/email-editor/package.json b/packages/php/email-editor/package.json
index f3a94997f3e..cd11dad3ac2 100644
--- a/packages/php/email-editor/package.json
+++ b/packages/php/email-editor/package.json
@@ -23,7 +23,7 @@
 	"license": "GPL-2.0-or-later",
 	"devDependencies": {
 		"@wordpress/env": "catalog:tooling",
-		"rimraf": "5.0.5"
+		"rimraf": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/packages/php/woocommerce-analytics/changelog/shared-tooling-catalog b/packages/php/woocommerce-analytics/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..c331d5c5593
--- /dev/null
+++ b/packages/php/woocommerce-analytics/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: changed
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/packages/php/woocommerce-analytics/package.json b/packages/php/woocommerce-analytics/package.json
index 5bd29924738..d7f57ff3983 100644
--- a/packages/php/woocommerce-analytics/package.json
+++ b/packages/php/woocommerce-analytics/package.json
@@ -35,17 +35,17 @@
 		"@babel/core": "catalog:tooling",
 		"@babel/preset-env": "catalog:tooling",
 		"@babel/preset-typescript": "catalog:tooling",
-		"@jest/globals": "29.5.x",
-		"@types/jest": "29.5.x",
+		"@jest/globals": "catalog:tooling",
+		"@types/jest": "catalog:tooling",
 		"@types/jquery": "3.5.33",
 		"@wordpress/browserslist-config": "next",
 		"@wordpress/dependency-extraction-webpack-plugin": "next",
 		"babel-loader": "catalog:tooling",
-		"jest": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"typescript": "5.7.x",
+		"jest": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling",
-		"webpack-cli": "5.1.x"
+		"webpack-cli": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/plugins/woocommerce-beta-tester/changelog/shared-tooling-catalog b/plugins/woocommerce-beta-tester/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/plugins/woocommerce-beta-tester/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/plugins/woocommerce-beta-tester/package.json b/plugins/woocommerce-beta-tester/package.json
index ec83773d89d..e71f7c89426 100644
--- a/plugins/woocommerce-beta-tester/package.json
+++ b/plugins/woocommerce-beta-tester/package.json
@@ -19,13 +19,13 @@
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"@wordpress/env": "catalog:tooling",
 		"@wordpress/scripts": "catalog:tooling",
-		"eslint": "^10.0.0",
+		"eslint": "catalog:tooling",
 		"globals": "^16.5.0",
 		"prettier": "catalog:tooling",
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
 		"ts-loader": "9.5.x",
-		"typescript": "5.7.x",
+		"typescript": "catalog:tooling",
 		"uglify-js": "^3.17.4"
 	},
 	"dependencies": {
diff --git a/plugins/woocommerce/admin-screens/changelog/shared-tooling-catalog b/plugins/woocommerce/admin-screens/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/plugins/woocommerce/admin-screens/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/plugins/woocommerce/admin-screens/package.json b/plugins/woocommerce/admin-screens/package.json
index e3233bcda50..b4bc25f07b5 100644
--- a/plugins/woocommerce/admin-screens/package.json
+++ b/plugins/woocommerce/admin-screens/package.json
@@ -47,7 +47,7 @@
 		"react-dom": "18.3.x"
 	},
 	"devDependencies": {
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/react": "18.3.x",
 		"@typescript-eslint/eslint-plugin": "^8.63.0",
 		"@woocommerce/eslint-config": "workspace:*",
@@ -55,11 +55,11 @@
 		"@woocommerce/internal-js-tests": "workspace:*",
 		"@wordpress/browserslist-config": "next",
 		"@wordpress/build": "catalog:tooling",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x"
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling"
 	},
 	"browserslist": [
 		"extends @wordpress/browserslist-config"
diff --git a/plugins/woocommerce/changelog/shared-tooling-catalog b/plugins/woocommerce/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/plugins/woocommerce/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/plugins/woocommerce/client/admin/changelog/shared-tooling-catalog b/plugins/woocommerce/client/admin/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/plugins/woocommerce/client/admin/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/plugins/woocommerce/client/admin/package.json b/plugins/woocommerce/client/admin/package.json
index badbd885f5d..aaa9713932f 100644
--- a/plugins/woocommerce/client/admin/package.json
+++ b/plugins/woocommerce/client/admin/package.json
@@ -146,7 +146,7 @@
 		"@testing-library/user-event": "13.5.0",
 		"@types/cookie": "^0.4.1",
 		"@types/debug": "4.1.12",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/lodash": "^4.14.202",
 		"@types/node": "^24.1.0",
 		"@types/qs": "^6.9.10",
@@ -174,28 +174,28 @@
 		"@xstate/test": "0.5.1",
 		"autoprefixer": "^10.4.16",
 		"await-exec": "^0.1.2",
-		"babel-jest": "29.5.x",
+		"babel-jest": "catalog:tooling",
 		"babel-loader": "catalog:tooling",
-		"babel-plugin-transform-react-remove-prop-types": "0.4.24",
+		"babel-plugin-transform-react-remove-prop-types": "catalog:tooling",
 		"chalk": "^4.1.2",
 		"comment-parser": "^1.4.1",
 		"config": "3.3.7",
 		"copy-webpack-plugin": "catalog:tooling",
-		"css-loader": "6.11.x",
-		"eslint": "^10.0.0",
+		"css-loader": "catalog:tooling",
+		"eslint": "catalog:tooling",
 		"eslint-import-resolver-typescript": "^4.4.5",
 		"eslint-import-resolver-webpack": "^0.13.11",
 		"fs-extra": "11.1.1",
-		"jest": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"jest-environment-node": "29.5.x",
+		"jest": "catalog:tooling",
+		"jest-environment-jsdom": "catalog:tooling",
+		"jest-environment-node": "catalog:tooling",
 		"md5": "^2.3.0",
-		"mini-css-extract-plugin": "2.9.x",
+		"mini-css-extract-plugin": "catalog:tooling",
 		"moment": "^2.29.4",
 		"moment-timezone": "^0.5.43",
 		"node-watch": "^0.7.4",
 		"postcss": "catalog:tooling",
-		"postcss-loader": "4.3.x",
+		"postcss-loader": "catalog:tooling",
 		"prettier": "catalog:tooling",
 		"promptly": "^3.2.0",
 		"prop-types": "^15.8.1",
@@ -203,16 +203,16 @@
 		"react-refresh": "^0.14.0",
 		"readline-sync": "^1.4.10",
 		"replace": "^1.2.2",
-		"rimraf": "5.0.5",
+		"rimraf": "catalog:tooling",
 		"rtlcss": "4.3.x",
 		"sass": "^1.69.5",
-		"sass-loader": "10.5.x",
+		"sass-loader": "catalog:tooling",
 		"stylelint": "catalog:tooling",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x",
+		"ts-jest": "catalog:tooling",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling",
 		"webpack-bundle-analyzer": "4.9.x",
-		"webpack-cli": "5.1.x",
+		"webpack-cli": "catalog:tooling",
 		"webpack-fix-style-only-entries": "^0.6.1",
 		"whatwg-fetch": "^3.6.20"
 	},
diff --git a/plugins/woocommerce/client/blocks/changelog/shared-tooling-catalog b/plugins/woocommerce/client/blocks/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/plugins/woocommerce/client/blocks/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/plugins/woocommerce/client/blocks/package.json b/plugins/woocommerce/client/blocks/package.json
index 82aeff136bf..dab0ee91d71 100644
--- a/plugins/woocommerce/client/blocks/package.json
+++ b/plugins/woocommerce/client/blocks/package.json
@@ -106,7 +106,7 @@
 		"@testing-library/react": "15.0.7",
 		"@testing-library/user-event": "14.5.2",
 		"@types/gtag.js": "0.0.10",
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/jquery": "3.5.14",
 		"@types/lodash": "4.14.182",
 		"@types/prop-types": "^15.7.11",
@@ -158,19 +158,19 @@
 		"@wordpress/theme": "catalog:wp-bundled",
 		"ajv-cli": "3.3.x",
 		"autoprefixer": "10.4.14",
-		"babel-jest": "29.5.x",
+		"babel-jest": "catalog:tooling",
 		"babel-loader": "catalog:tooling",
 		"babel-plugin-react-docgen": "4.2.1",
-		"babel-plugin-transform-react-remove-prop-types": "0.4.24",
+		"babel-plugin-transform-react-remove-prop-types": "catalog:tooling",
 		"chalk": "4.1.2",
 		"circular-dependency-plugin": "5.2.x",
 		"copy-webpack-plugin": "catalog:tooling",
 		"core-js": "3.25.0",
-		"css-loader": "6.11.x",
+		"css-loader": "catalog:tooling",
 		"cssnano": "5.1.12",
 		"deep-freeze": "0.0.1",
 		"dotenv": "^16.3.1",
-		"eslint": "^10.0.0",
+		"eslint": "catalog:tooling",
 		"eslint-import-resolver-typescript": "^4.4.5",
 		"eslint-import-resolver-webpack": "^0.13.11",
 		"eslint-plugin-playwright": "^2.10.5",
@@ -182,35 +182,35 @@
 		"globals": "^16.5.0",
 		"handlebars": "^4.7.8",
 		"ignore-loader": "0.1.x",
-		"jest": "29.5.x",
-		"jest-circus": "29.5.x",
-		"jest-fixed-jsdom": "^0.0.10",
+		"jest": "catalog:tooling",
+		"jest-circus": "catalog:tooling",
+		"jest-fixed-jsdom": "catalog:tooling",
 		"json2md": "1.12.0",
 		"knip": "^5.60.2",
 		"lint-staged": "13.2.0",
 		"lodash": "4.18.1",
-		"mini-css-extract-plugin": "2.9.x",
+		"mini-css-extract-plugin": "catalog:tooling",
 		"msw": "2.10.4",
 		"playwright-ctrf-json-reporter": "0.0.27",
 		"postcss": "catalog:tooling",
-		"postcss-loader": "4.3.x",
+		"postcss-loader": "catalog:tooling",
 		"prettier": "catalog:tooling",
 		"progress-bar-webpack-plugin": "2.1.x",
 		"react": "18.3.x",
 		"react-docgen": "5.4.3",
 		"react-dom": "18.3.x",
 		"redux": "4.2.1",
-		"rimraf": "5.0.5",
+		"rimraf": "catalog:tooling",
 		"rtlcss": "4.3.x",
-		"sass-loader": "10.5.x",
+		"sass-loader": "catalog:tooling",
 		"storybook": "10.6.5",
 		"stylelint": "catalog:tooling",
 		"stylelint-scss": "^6.4.0",
-		"typescript": "5.7.x",
+		"typescript": "catalog:tooling",
 		"utility-types": "3.10.0",
 		"webpack": "catalog:tooling",
 		"webpack-bundle-analyzer": "4.9.x",
-		"webpack-cli": "5.1.x",
+		"webpack-cli": "catalog:tooling",
 		"wp-types": "3.63.0"
 	},
 	"engines": {
diff --git a/plugins/woocommerce/client/legacy/changelog/shared-tooling-catalog b/plugins/woocommerce/client/legacy/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/plugins/woocommerce/client/legacy/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/plugins/woocommerce/client/legacy/package.json b/plugins/woocommerce/client/legacy/package.json
index 12126ebf736..8bb652f3fb0 100644
--- a/plugins/woocommerce/client/legacy/package.json
+++ b/plugins/woocommerce/client/legacy/package.json
@@ -26,7 +26,7 @@
 		"@wordpress/scripts": "catalog:tooling",
 		"@wordpress/stylelint-config": "catalog:tooling",
 		"chokidar": "^3.6.0",
-		"eslint": "^10.0.0",
+		"eslint": "catalog:tooling",
 		"globals": "^16.5.0",
 		"grunt": "1.6.3",
 		"grunt-contrib-concat": "1.0.1",
@@ -38,7 +38,7 @@
 		"grunt-rtlcss": "2.0.2",
 		"grunt-sass": "3.1.0",
 		"grunt-stylelint": "0.20.1",
-		"jest-fixed-jsdom": "^0.0.10",
+		"jest-fixed-jsdom": "catalog:tooling",
 		"jquery": "3.7.1",
 		"jquery4": "npm:jquery@4.0.0",
 		"sass": "^1.69.5",
diff --git a/plugins/woocommerce/package.json b/plugins/woocommerce/package.json
index 0319222f29f..6bd94c1794f 100644
--- a/plugins/woocommerce/package.json
+++ b/plugins/woocommerce/package.json
@@ -1544,18 +1544,18 @@
 		"axios": "^0.34.0",
 		"config": "3.3.7",
 		"dotenv": "^10.0.0",
-		"eslint": "^10.0.0",
+		"eslint": "catalog:tooling",
 		"eslint-plugin-jest": "^29.15.4",
 		"eslint-plugin-playwright": "^2.10.5",
 		"fs-extra": "11.1.1",
 		"glob": "^10.3.10",
 		"globals": "^16.5.0",
 		"handlebars": "^4.7.9",
-		"jest": "29.5.x",
+		"jest": "catalog:tooling",
 		"playwright-ctrf-json-reporter": "0.0.27",
 		"prettier": "catalog:tooling",
-		"rimraf": "5.0.5",
-		"typescript": "5.7.x",
+		"rimraf": "catalog:tooling",
+		"typescript": "catalog:tooling",
 		"wp-textdomain": "1.0.1"
 	},
 	"engines": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bc67b24893d..a5e8bcf23c1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -27,6 +27,12 @@ catalogs:
     '@babel/runtime':
       specifier: 7.25.7
       version: 7.25.7
+    '@jest/globals':
+      specifier: 29.5.x
+      version: 29.5.0
+    '@types/jest':
+      specifier: 29.5.x
+      version: 29.5.14
     '@wordpress/build':
       specifier: 0.24.0
       version: 0.24.0
@@ -45,27 +51,78 @@ catalogs:
     '@wordpress/stylelint-config':
       specifier: ^23.14.0
       version: 23.42.0
+    babel-jest:
+      specifier: 29.5.x
+      version: 29.5.0
     babel-loader:
       specifier: 9.2.x
       version: 9.2.1
+    babel-plugin-transform-react-remove-prop-types:
+      specifier: 0.4.24
+      version: 0.4.24
     copy-webpack-plugin:
       specifier: 14.0.x
       version: 14.0.0
+    css-loader:
+      specifier: 6.11.x
+      version: 6.11.0
+    eslint:
+      specifier: ^10.0.0
+      version: 10.7.0
+    jest:
+      specifier: 29.5.x
+      version: 29.5.0
+    jest-circus:
+      specifier: 29.5.x
+      version: 29.5.0
+    jest-cli:
+      specifier: 29.5.x
+      version: 29.5.0
+    jest-environment-jsdom:
+      specifier: 29.5.x
+      version: 29.5.0
+    jest-environment-node:
+      specifier: 29.5.x
+      version: 29.5.0
+    jest-fixed-jsdom:
+      specifier: ^0.0.10
+      version: 0.0.10
+    mini-css-extract-plugin:
+      specifier: 2.9.x
+      version: 2.9.4
     postcss:
       specifier: ^8.5.26
       version: 8.5.26
+    postcss-loader:
+      specifier: 4.3.x
+      version: 4.3.0
     prettier:
       specifier: npm:wp-prettier@3.9.6
       version: 3.9.6
+    rimraf:
+      specifier: 5.0.5
+      version: 5.0.5
+    sass-loader:
+      specifier: 10.5.x
+      version: 10.5.2
     simple-git:
       specifier: ^4.0.2
       version: 4.0.2
     stylelint:
       specifier: ^16.9.0
       version: 16.26.1
+    ts-jest:
+      specifier: 29.1.x
+      version: 29.1.5
+    typescript:
+      specifier: 5.7.x
+      version: 5.7.3
     webpack:
       specifier: 5.112.2
       version: 5.112.2
+    webpack-cli:
+      specifier: 5.1.x
+      version: 5.1.4
   wp-bundled:
     '@wordpress/admin-ui':
       specifier: 2.5.0
@@ -311,7 +368,7 @@ importers:
         specifier: ^3.34.0
         version: 3.49.0
       css-loader:
-        specifier: 6.11.x
+        specifier: catalog:tooling
         version: 6.11.0(webpack@5.112.2)
       glob:
         specifier: ^10.3.10
@@ -320,7 +377,7 @@ importers:
         specifier: ^9.0.11
         version: 9.1.7
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       lint-staged:
         specifier: ^12.5.0
@@ -335,7 +392,7 @@ importers:
         specifier: ^1.15.0
         version: 1.15.0
       postcss-loader:
-        specifier: 4.3.x
+        specifier: catalog:tooling
         version: 4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       prettier:
         specifier: catalog:tooling
@@ -344,13 +401,13 @@ importers:
         specifier: ^0.13.11
         version: 0.13.11
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       sass:
         specifier: 1.69.5
         version: 1.69.5
       sass-loader:
-        specifier: 10.5.x
+        specifier: catalog:tooling
         version: 10.5.2(sass@1.69.5)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       stylelint:
         specifier: catalog:tooling
@@ -359,7 +416,7 @@ importers:
         specifier: 15.3.3
         version: 15.3.3
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
@@ -390,13 +447,13 @@ importers:
         specifier: workspace:*
         version: link:../internal-build
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       react:
         specifier: 18.3.x
@@ -405,13 +462,13 @@ importers:
         specifier: 18.3.x
         version: 18.3.1(react@18.3.1)
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/components:
@@ -628,7 +685,7 @@ importers:
         specifier: ^1.6.4
         version: 1.9.0
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/lodash':
         specifier: ^4.14.202
@@ -664,26 +721,26 @@ importers:
         specifier: next
         version: 6.43.1-next.v.202604091042.0
       css-loader:
-        specifier: 6.11.x
+        specifier: catalog:tooling
         version: 6.11.0(webpack@5.112.2)
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       postcss:
         specifier: catalog:tooling
         version: 8.5.26
       postcss-loader:
-        specifier: 4.3.x
-        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       qrcode.react:
         specifier: ^3.1.0
         version: 3.2.0(react@18.3.1)
@@ -697,19 +754,19 @@ importers:
         specifier: 4.2.1
         version: 4.2.1
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       sass-loader:
-        specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 10.5.2(sass@1.69.5)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       stylelint:
         specifier: catalog:tooling
         version: 16.26.1(typescript@5.7.3)
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       uuid:
         specifier: ^11.1.1
@@ -718,7 +775,7 @@ importers:
         specifier: catalog:tooling
         version: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack@5.112.2)

   packages/js/create-woo-extension: {}
@@ -736,7 +793,7 @@ importers:
         specifier: catalog:tooling
         version: 7.29.7
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@woocommerce/eslint-config':
         specifier: workspace:*
@@ -751,25 +808,25 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/currency:
@@ -797,7 +854,7 @@ importers:
         specifier: catalog:tooling
         version: 7.29.7
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/react':
         specifier: 18.3.x
@@ -815,25 +872,25 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/customer-effort-score:
@@ -879,7 +936,7 @@ importers:
         specifier: ^16.x.x
         version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/prop-types':
         specifier: ^15.7.11
@@ -912,26 +969,26 @@ importers:
         specifier: next
         version: 6.43.1-next.v.202604091042.0
       css-loader:
-        specifier: 6.11.x
+        specifier: catalog:tooling
         version: 6.11.0(webpack@5.112.2)
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       postcss:
         specifier: catalog:tooling
         version: 8.5.26
       postcss-loader:
-        specifier: 4.3.x
-        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       react:
         specifier: 18.3.x
         version: 18.3.1
@@ -939,25 +996,25 @@ importers:
         specifier: 18.3.x
         version: 18.3.1(react@18.3.1)
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       sass-loader:
-        specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 10.5.2(sass@1.69.5)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       stylelint:
         specifier: catalog:tooling
         version: 16.26.1(typescript@5.7.3)
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
         version: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack@5.112.2)

   packages/js/data:
@@ -1027,7 +1084,7 @@ importers:
         specifier: ^16.x.x
         version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/lodash':
         specifier: ^4.14.202
@@ -1057,16 +1114,16 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       react:
         specifier: 18.3.x
@@ -1078,13 +1135,13 @@ importers:
         specifier: ^4.2.1
         version: 4.2.1
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/date:
@@ -1115,7 +1172,7 @@ importers:
         specifier: catalog:tooling
         version: 7.29.7
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/lodash':
         specifier: ^4.14.202
@@ -1142,25 +1199,25 @@ importers:
         specifier: ^2.3.0
         version: 2.3.0
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/dependency-extraction-webpack-plugin:
@@ -1179,28 +1236,28 @@ importers:
         specifier: workspace:*
         version: link:../eslint-plugin
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
         version: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack@5.112.2)

   packages/js/e2e-utils-playwright:
@@ -1216,7 +1273,7 @@ importers:
         specifier: ^1.63.0
         version: 1.63.0
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/node':
         specifier: ^24.1.0
@@ -1234,19 +1291,19 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/email-editor:
@@ -1373,7 +1430,7 @@ importers:
         specifier: ^4.7.11
         version: 4.7.11
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/js-cookie':
         specifier: ^3.0.2
@@ -1418,16 +1475,16 @@ importers:
         specifier: next
         version: 6.43.1-next.v.202604091042.0
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       prettier:
         specifier: catalog:tooling
@@ -1439,25 +1496,25 @@ importers:
         specifier: 18.3.x
         version: 18.3.1(react@18.3.1)
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       stylelint:
         specifier: catalog:tooling
         version: 16.26.1(typescript@5.7.3)
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       ts-loader:
         specifier: 9.5.x
         version: 9.5.7(typescript@5.7.3)(webpack@5.112.2)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
         version: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack@5.112.2)

   packages/js/eslint-plugin:
@@ -1479,13 +1536,13 @@ importers:
         specifier: catalog:tooling
         version: 7.29.7
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/experimental:
@@ -1546,7 +1603,7 @@ importers:
         specifier: 13.5.0
         version: 13.5.0(@testing-library/dom@10.4.1)
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/react-transition-group':
         specifier: ^4.4.10
@@ -1570,26 +1627,26 @@ importers:
         specifier: next
         version: 6.43.1-next.v.202604091042.0
       css-loader:
-        specifier: 6.11.x
+        specifier: catalog:tooling
         version: 6.11.0(webpack@5.112.2)
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       postcss:
         specifier: catalog:tooling
         version: 8.5.26
       postcss-loader:
-        specifier: 4.3.x
-        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       react:
         specifier: 18.3.x
         version: 18.3.1
@@ -1597,25 +1654,25 @@ importers:
         specifier: 18.3.x
         version: 18.3.1(react@18.3.1)
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       sass-loader:
-        specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 10.5.2(sass@1.69.5)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       stylelint:
         specifier: catalog:tooling
         version: 16.26.1(typescript@5.7.3)
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
         version: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack@5.112.2)

   packages/js/explat:
@@ -1646,7 +1703,7 @@ importers:
         specifier: ^0.6.0
         version: 0.6.0
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/node':
         specifier: ^24.1.0
@@ -1670,25 +1727,25 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/expression-evaluation:
@@ -1704,7 +1761,7 @@ importers:
         specifier: catalog:tooling
         version: 7.29.7
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@woocommerce/eslint-config':
         specifier: workspace:*
@@ -1719,25 +1776,25 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/extend-cart-checkout-block: {}
@@ -1760,7 +1817,7 @@ importers:
         specifier: ^3.6.0
         version: 3.6.0
       css-loader:
-        specifier: 6.11.x
+        specifier: catalog:tooling
         version: 6.11.0(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.28.2)(postcss@8.5.26))
       esbuild:
         specifier: ^0.28.1
@@ -1772,16 +1829,16 @@ importers:
         specifier: ^0.0.7
         version: 0.0.7
       mini-css-extract-plugin:
-        specifier: 2.9.x
+        specifier: catalog:tooling
         version: 2.9.4(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.28.2)(postcss@8.5.26))
       postcss-loader:
-        specifier: 4.3.x
+        specifier: catalog:tooling
         version: 4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.28.2)(postcss@8.5.26))
       rtlcss:
         specifier: 4.3.x
         version: 4.3.0
       sass-loader:
-        specifier: 10.5.x
+        specifier: catalog:tooling
         version: 10.5.2(sass@1.69.5)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.28.2)(postcss@8.5.26))
       webpack-remove-empty-scripts:
         specifier: 1.0.x
@@ -1809,13 +1866,13 @@ importers:
         specifier: 5.33.1
         version: 5.33.1(@types/react@18.3.28)(react@18.3.1)
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       stylelint:
         specifier: catalog:tooling
         version: 16.26.1(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/internal-js-tests:
@@ -1867,19 +1924,19 @@ importers:
         specifier: catalog:wp-min
         version: 5.33.1(@types/react@18.3.28)(react@18.3.1)
       babel-jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@babel/core@7.29.7)
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       lib0:
         specifier: 0.2.x
@@ -1894,13 +1951,13 @@ importers:
         specifier: 1.5.1
         version: 1.5.1
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.5.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/navigation:
@@ -1946,7 +2003,7 @@ importers:
         specifier: catalog:tooling
         version: 7.25.7
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/qs':
         specifier: ^6.9.10
@@ -1964,16 +2021,16 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       react:
         specifier: 18.3.x
@@ -1982,13 +2039,13 @@ importers:
         specifier: 18.3.x
         version: 18.3.1(react@18.3.1)
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/notices:
@@ -2025,13 +2082,13 @@ importers:
         specifier: workspace:*
         version: link:../internal-build
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       react:
         specifier: 18.3.x
@@ -2043,13 +2100,13 @@ importers:
         specifier: ^4.2.1
         version: 4.2.1
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/number:
@@ -2065,7 +2122,7 @@ importers:
         specifier: catalog:tooling
         version: 7.25.7
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/lodash':
         specifier: ^4.14.202
@@ -2083,25 +2140,25 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/onboarding:
@@ -2150,7 +2207,7 @@ importers:
         specifier: ^16.x.x
         version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/react':
         specifier: 18.3.x
@@ -2174,46 +2231,46 @@ importers:
         specifier: next
         version: 6.43.1-next.v.202604091042.0
       css-loader:
-        specifier: 6.11.x
+        specifier: catalog:tooling
         version: 6.11.0(webpack@5.112.2)
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       postcss:
         specifier: catalog:tooling
         version: 8.5.26
       postcss-loader:
-        specifier: 4.3.x
-        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       sass-loader:
-        specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 10.5.2(sass@1.69.5)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       stylelint:
         specifier: catalog:tooling
         version: 16.26.1(typescript@5.7.3)
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
         version: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack@5.112.2)

   packages/js/remote-logging:
@@ -2238,7 +2295,7 @@ importers:
         specifier: ^4.1.12
         version: 4.1.12
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/node':
         specifier: ^24.1.0
@@ -2259,25 +2316,25 @@ importers:
         specifier: ^5.4.0
         version: 5.4.0(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/sanitize:
@@ -2293,7 +2350,7 @@ importers:
         specifier: ^2.0.4
         version: 2.4.0
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/trusted-types':
         specifier: ^2.0.7
@@ -2308,25 +2365,25 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/settings-ui:
@@ -2357,7 +2414,7 @@ importers:
         specifier: catalog:tooling
         version: 7.29.7
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/react':
         specifier: 18.3.x
@@ -2372,16 +2429,16 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       react:
         specifier: 18.3.x
@@ -2390,16 +2447,16 @@ importers:
         specifier: 18.3.x
         version: 18.3.1(react@18.3.1)
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       stylelint:
         specifier: catalog:tooling
         version: 16.26.1(typescript@5.7.3)
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/js/tracks:
@@ -2415,7 +2472,7 @@ importers:
         specifier: ^4.1.12
         version: 4.1.12
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/node':
         specifier: ^24.1.0
@@ -2433,25 +2490,25 @@ importers:
         specifier: workspace:*
         version: link:../internal-js-tests
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-cli:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   packages/php/blueprint:
@@ -2466,7 +2523,7 @@ importers:
         specifier: catalog:tooling
         version: 12.0.0(@types/node@24.12.2)
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5

   packages/php/remote-specs-validation:
@@ -2500,10 +2557,10 @@ importers:
         specifier: catalog:tooling
         version: 7.25.7(@babel/core@7.29.7)
       '@jest/globals':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/jquery':
         specifier: 3.5.33
@@ -2518,19 +2575,19 @@ importers:
         specifier: catalog:tooling
         version: 9.2.1(@babel/core@7.29.7)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
         version: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack@5.112.2)

   packages/php/woocommerce-subscriptions-engine:
@@ -2606,7 +2663,7 @@ importers:
         specifier: ^10.0.0
         version: 10.0.0
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       eslint-plugin-jest:
         specifier: ^29.15.4
@@ -2627,7 +2684,7 @@ importers:
         specifier: ^4.7.9
         version: 4.7.10
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       playwright-ctrf-json-reporter:
         specifier: 0.0.27
@@ -2636,10 +2693,10 @@ importers:
         specifier: catalog:tooling
         version: wp-prettier@3.9.6
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       wp-textdomain:
         specifier: 1.0.1
@@ -2733,7 +2790,7 @@ importers:
         specifier: catalog:tooling
         version: 35.0.0(@playwright/test@1.63.0)(@swc/core@1.15.24)(@types/eslint@9.6.1)(@types/node@24.12.2)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(@types/webpack@4.41.40)(@typescript-eslint/eslint-plugin@8.64.0(@typescript-eslint/parser@8.64.0(eslint@10.7.0(jiti@2.6.1))(typescript@5.7.3))(eslint@10.7.0(jiti@2.6.1))(typescript@5.7.3))(@typescript-eslint/parser@8.64.0(eslint@10.7.0(jiti@2.6.1))(typescript@5.7.3))(@wordpress/env@12.0.0(@types/node@24.12.2))(ajv@6.14.0)(babel-plugin-macros@3.1.0)(esbuild@0.28.2)(file-loader@6.2.0(webpack@5.112.2))(jiti@2.6.1)(node-notifier@8.0.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass-embedded@1.100.0)(stylelint-scss@7.4.0(stylelint@17.16.0(typescript@5.7.3)))(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))(type-fest@4.41.0)(typescript@5.7.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(yauzl@2.10.0)
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       globals:
         specifier: ^16.5.0
@@ -2751,7 +2808,7 @@ importers:
         specifier: 9.5.x
         version: 9.5.7(typescript@5.7.3)(webpack@5.112.2)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       uglify-js:
         specifier: ^3.17.4
@@ -2803,7 +2860,7 @@ importers:
         version: 18.3.1(react@18.3.1)
     devDependencies:
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/react':
         specifier: 18.3.x
@@ -2827,19 +2884,19 @@ importers:
         specifier: catalog:tooling
         version: 0.24.0(@babel/core@7.29.7)(@wordpress/private-apis@1.48.1)(@wordpress/route@0.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@wordpress/theme@2.3.0(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(esbuild@0.27.7)(postcss@8.5.26)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3)))
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   plugins/woocommerce/client/admin:
@@ -3143,7 +3200,7 @@ importers:
         specifier: 4.1.12
         version: 4.1.12
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/lodash':
         specifier: ^4.14.202
@@ -3227,13 +3284,13 @@ importers:
         specifier: ^0.1.2
         version: 0.1.2
       babel-jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@babel/core@7.29.7)
       babel-loader:
         specifier: catalog:tooling
         version: 9.2.1(@babel/core@7.29.7)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       babel-plugin-transform-react-remove-prop-types:
-        specifier: 0.4.24
+        specifier: catalog:tooling
         version: 0.4.24
       chalk:
         specifier: ^4.1.2
@@ -3246,12 +3303,12 @@ importers:
         version: 3.3.7
       copy-webpack-plugin:
         specifier: catalog:tooling
-        version: 14.0.0(webpack@5.112.2)
+        version: 14.0.0(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       css-loader:
-        specifier: 6.11.x
+        specifier: catalog:tooling
         version: 6.11.0(webpack@5.112.2)
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       eslint-import-resolver-typescript:
         specifier: ^4.4.5
@@ -3263,19 +3320,19 @@ importers:
         specifier: 11.1.1
         version: 11.1.1
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-environment-jsdom:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       jest-environment-node:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       md5:
         specifier: ^2.3.0
         version: 2.3.0
       mini-css-extract-plugin:
-        specifier: 2.9.x
+        specifier: catalog:tooling
         version: 2.9.4(webpack@5.112.2)
       moment:
         specifier: ^2.29.4
@@ -3290,8 +3347,8 @@ importers:
         specifier: catalog:tooling
         version: 8.5.26
       postcss-loader:
-        specifier: 4.3.x
-        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       prettier:
         specifier: catalog:tooling
         version: wp-prettier@3.9.6
@@ -3314,7 +3371,7 @@ importers:
         specifier: ^1.2.2
         version: 1.2.2
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       rtlcss:
         specifier: 4.3.x
@@ -3323,16 +3380,16 @@ importers:
         specifier: 1.69.5
         version: 1.69.5
       sass-loader:
-        specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 10.5.2(sass@1.69.5)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       stylelint:
         specifier: catalog:tooling
         version: 16.26.1(typescript@5.7.3)
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.5.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
@@ -3341,7 +3398,7 @@ importers:
         specifier: 4.9.x
         version: 4.9.1
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack-bundle-analyzer@4.9.1)(webpack-dev-server@5.2.7)(webpack@5.112.2)
       webpack-fix-style-only-entries:
         specifier: ^0.6.1
@@ -3552,7 +3609,7 @@ importers:
         specifier: 0.0.10
         version: 0.0.10
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/jquery':
         specifier: 3.5.14
@@ -3708,7 +3765,7 @@ importers:
         specifier: 10.4.14
         version: 10.4.14(postcss@8.5.26)
       babel-jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@babel/core@7.29.7)
       babel-loader:
         specifier: catalog:tooling
@@ -3717,7 +3774,7 @@ importers:
         specifier: 4.2.1
         version: 4.2.1
       babel-plugin-transform-react-remove-prop-types:
-        specifier: 0.4.24
+        specifier: catalog:tooling
         version: 0.4.24
       chalk:
         specifier: 4.1.2
@@ -3727,12 +3784,12 @@ importers:
         version: 5.2.2(webpack@5.112.2)
       copy-webpack-plugin:
         specifier: catalog:tooling
-        version: 14.0.0(webpack@5.112.2)
+        version: 14.0.0(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       core-js:
         specifier: 3.25.0
         version: 3.25.0
       css-loader:
-        specifier: 6.11.x
+        specifier: catalog:tooling
         version: 6.11.0(webpack@5.112.2)
       cssnano:
         specifier: 5.1.12
@@ -3744,7 +3801,7 @@ importers:
         specifier: ^16.3.1
         version: 16.6.1
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       eslint-import-resolver-typescript:
         specifier: ^4.4.5
@@ -3780,13 +3837,13 @@ importers:
         specifier: 0.1.x
         version: 0.1.2
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-circus:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0
       jest-fixed-jsdom:
-        specifier: ^0.0.10
+        specifier: catalog:tooling
         version: 0.0.10(jest-environment-jsdom@30.5.2)
       json2md:
         specifier: 1.12.0
@@ -3801,7 +3858,7 @@ importers:
         specifier: 4.18.1
         version: 4.18.1
       mini-css-extract-plugin:
-        specifier: 2.9.x
+        specifier: catalog:tooling
         version: 2.9.4(webpack@5.112.2)
       msw:
         specifier: 2.10.4
@@ -3813,8 +3870,8 @@ importers:
         specifier: catalog:tooling
         version: 8.5.26
       postcss-loader:
-        specifier: 4.3.x
-        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       prettier:
         specifier: catalog:tooling
         version: wp-prettier@3.9.6
@@ -3834,14 +3891,14 @@ importers:
         specifier: 4.2.1
         version: 4.2.1
       rimraf:
-        specifier: 5.0.5
+        specifier: catalog:tooling
         version: 5.0.5
       rtlcss:
         specifier: 4.3.x
         version: 4.3.0
       sass-loader:
-        specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.112.2)
+        specifier: catalog:tooling
+        version: 10.5.2(sass@1.69.5)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       storybook:
         specifier: 10.6.5
         version: 10.6.5(@types/react@18.3.28)(react@18.3.1)(wp-prettier@3.9.6)
@@ -3852,7 +3909,7 @@ importers:
         specifier: ^6.4.0
         version: 6.14.0(stylelint@16.26.1(typescript@5.7.3))
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       utility-types:
         specifier: 3.10.0
@@ -3864,7 +3921,7 @@ importers:
         specifier: 4.9.x
         version: 4.9.1
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack-bundle-analyzer@4.9.1)(webpack@5.112.2)
       wp-types:
         specifier: 3.63.0
@@ -3889,7 +3946,7 @@ importers:
         specifier: ^3.6.0
         version: 3.6.0
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       globals:
         specifier: ^16.5.0
@@ -3925,7 +3982,7 @@ importers:
         specifier: 0.20.1
         version: 0.20.1(stylelint@16.26.1(typescript@5.7.3))
       jest-fixed-jsdom:
-        specifier: ^0.0.10
+        specifier: catalog:tooling
         version: 0.0.10(jest-environment-jsdom@30.5.2)
       jquery:
         specifier: 3.7.1
@@ -3974,7 +4031,7 @@ importers:
         version: 4.0.2
     devDependencies:
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/node':
         specifier: ^24.1.0
@@ -3986,13 +4043,13 @@ importers:
         specifier: workspace:*
         version: link:../../packages/js/eslint-plugin
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       ts-node:
         specifier: ^10.9.2
@@ -4001,7 +4058,7 @@ importers:
         specifier: ^2.6.2
         version: 2.8.1
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   tools/compare-perf:
@@ -4041,7 +4098,7 @@ importers:
         version: link:../../packages/js/eslint-plugin
     devDependencies:
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)

   tools/monorepo-merge:
@@ -4050,7 +4107,7 @@ importers:
         specifier: workspace:*
         version: link:../eslint-config
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)

   tools/monorepo-utils:
@@ -4126,7 +4183,7 @@ importers:
         version: 4.0.2
     devDependencies:
       '@types/jest':
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.14
       '@types/node':
         specifier: ^24.1.0
@@ -4139,30 +4196,30 @@ importers:
         version: link:../../packages/js/eslint-plugin
       copy-webpack-plugin:
         specifier: catalog:tooling
-        version: 14.0.0(webpack@5.112.2)
+        version: 14.0.0(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       jest:
-        specifier: 29.5.x
+        specifier: catalog:tooling
         version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       replace:
         specifier: ^1.2.2
         version: 1.2.2
       ts-jest:
-        specifier: 29.1.x
+        specifier: catalog:tooling
         version: 29.1.5(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(esbuild@0.27.7)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       ts-loader:
         specifier: 9.5.x
         version: 9.5.7(typescript@5.7.3)(webpack@5.112.2)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
         version: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
       webpack-cli:
-        specifier: 5.1.x
+        specifier: catalog:tooling
         version: 5.1.4(webpack@5.112.2)

   tools/package-release:
@@ -4193,7 +4250,7 @@ importers:
         specifier: workspace:*
         version: link:../../packages/js/eslint-plugin
       eslint:
-        specifier: ^10.0.0
+        specifier: catalog:tooling
         version: 10.7.0(jiti@2.6.1)
       oclif:
         specifier: ^4.23.30
@@ -4208,7 +4265,7 @@ importers:
         specifier: ^2.6.2
         version: 2.8.1
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   tools/release-posts:
@@ -4257,7 +4314,7 @@ importers:
         specifier: ^7.5.6
         version: 7.7.1
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3

   tools/storybook:
@@ -4311,7 +4368,7 @@ importers:
         specifier: 10.6.5
         version: 10.6.5(@types/react@18.3.28)(prettier@2.8.8)(react@18.3.1)
       typescript:
-        specifier: 5.7.x
+        specifier: catalog:tooling
         version: 5.7.3
       webpack:
         specifier: catalog:tooling
@@ -19254,10 +19311,6 @@ packages:
     resolution: {integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==}
     engines: {node: '>=0.6'}

-  tapable@2.3.2:
-    resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==}
-    engines: {node: '>=6'}
-
   tapable@2.3.3:
     resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
     engines: {node: '>=6'}
@@ -23034,7 +23087,7 @@ snapshots:
     dependencies:
       '@eslint/object-schema': 3.0.5
       debug: 4.4.3(supports-color@9.4.0)
-      minimatch: 10.2.5
+      minimatch: 10.2.6
     transitivePeerDependencies:
       - supports-color

@@ -27145,7 +27198,7 @@ snapshots:
       '@typescript-eslint/types': 8.64.0
       '@typescript-eslint/visitor-keys': 8.64.0
       debug: 4.4.3(supports-color@9.4.0)
-      minimatch: 10.2.5
+      minimatch: 10.2.6
       semver: 7.8.5
       tinyglobby: 0.2.17
       ts-api-utils: 2.5.0(typescript@5.7.3)
@@ -34558,9 +34611,9 @@ snapshots:
     dependencies:
       ajv: 8.18.0

-  ajv-formats@2.1.1(ajv@8.18.0):
+  ajv-formats@2.1.1(ajv@8.20.0):
     optionalDependencies:
-      ajv: 8.18.0
+      ajv: 8.20.0

   ajv-formats@3.0.1(ajv@6.14.0):
     optionalDependencies:
@@ -34578,11 +34631,6 @@ snapshots:
     dependencies:
       ajv: 6.14.0

-  ajv-keywords@5.1.0(ajv@8.18.0):
-    dependencies:
-      ajv: 8.18.0
-      fast-deep-equal: 3.1.3
-
   ajv-keywords@5.1.0(ajv@8.20.0):
     dependencies:
       ajv: 8.20.0
@@ -35791,15 +35839,6 @@ snapshots:
       tinyglobby: 0.2.17
       webpack: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)

-  copy-webpack-plugin@14.0.0(webpack@5.112.2):
-    dependencies:
-      glob-parent: 6.0.2
-      normalize-path: 3.0.0
-      schema-utils: 4.3.3
-      serialize-javascript: 7.1.4
-      tinyglobby: 0.2.17
-      webpack: 5.112.2(@swc/core@1.15.24)(cssnano@5.1.12(postcss@8.5.26))(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
-
   core-js-compat@3.49.0:
     dependencies:
       browserslist: 4.29.5
@@ -35884,7 +35923,7 @@ snapshots:
       postcss-modules-scope: 3.2.1(postcss@8.5.26)
       postcss-modules-values: 4.0.0(postcss@8.5.26)
       postcss-value-parser: 4.2.0
-      semver: 7.7.4
+      semver: 7.8.5
     optionalDependencies:
       webpack: 5.112.2(@swc/core@1.15.24)(cssnano@6.1.2(postcss@8.5.26))(esbuild@0.28.2)(postcss@8.5.26)(webpack-cli@5.1.4)

@@ -35897,9 +35936,9 @@ snapshots:
       postcss-modules-scope: 3.2.1(postcss@8.5.26)
       postcss-modules-values: 4.0.0(postcss@8.5.26)
       postcss-value-parser: 4.2.0
-      semver: 7.7.4
+      semver: 7.8.5
     optionalDependencies:
-      webpack: 5.112.2(@swc/core@1.15.24)(cssnano@6.1.2(postcss@8.5.26))(esbuild@0.28.2)(postcss@8.5.26)(uglify-js@3.19.3)(webpack-cli@5.1.4)
+      webpack: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)

   css-loader@7.1.4(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)):
     dependencies:
@@ -36555,7 +36594,7 @@ snapshots:
   enhanced-resolve@5.20.1:
     dependencies:
       graceful-fs: 4.2.11
-      tapable: 2.3.2
+      tapable: 2.3.3

   enhanced-resolve@5.26.0:
     dependencies:
@@ -36847,7 +36886,7 @@ snapshots:
       lodash: 4.18.1
       resolve: 2.0.0-next.6
       semver: 5.7.2
-      webpack: 5.112.2(@swc/core@1.15.24)(cssnano@5.1.12(postcss@8.5.26))(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
+      webpack: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
     transitivePeerDependencies:
       - supports-color

@@ -37108,7 +37147,7 @@ snapshots:
       imurmurhash: 0.1.4
       is-glob: 4.0.3
       json-stable-stringify-without-jsonify: 1.0.1
-      minimatch: 10.2.5
+      minimatch: 10.2.6
       natural-compare: 1.4.0
       optionator: 0.9.4
     optionalDependencies:
@@ -40465,15 +40504,15 @@ snapshots:

   mini-css-extract-plugin@2.9.4(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.28.2)(postcss@8.5.26)):
     dependencies:
-      schema-utils: 4.3.3
-      tapable: 2.3.2
+      schema-utils: 4.8.1(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.28.2)(postcss@8.5.26))
+      tapable: 2.3.3
       webpack: 5.112.2(@swc/core@1.15.24)(cssnano@6.1.2(postcss@8.5.26))(esbuild@0.28.2)(postcss@8.5.26)(webpack-cli@5.1.4)

   mini-css-extract-plugin@2.9.4(webpack@5.112.2):
     dependencies:
-      schema-utils: 4.3.3
-      tapable: 2.3.2
-      webpack: 5.112.2(@swc/core@1.15.24)(cssnano@6.1.2(postcss@8.5.26))(esbuild@0.28.2)(postcss@8.5.26)(uglify-js@3.19.3)(webpack-cli@5.1.4)
+      schema-utils: 4.8.1(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26))
+      tapable: 2.3.3
+      webpack: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)

   minimalistic-assert@1.0.1: {}

@@ -41500,7 +41539,7 @@ snapshots:
       loader-utils: 2.0.4
       postcss: 8.5.26
       schema-utils: 3.3.0
-      semver: 7.7.4
+      semver: 7.8.5
       webpack: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)

   postcss-loader@4.3.0(postcss@8.5.26)(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.28.2)(postcss@8.5.26)):
@@ -41510,19 +41549,9 @@ snapshots:
       loader-utils: 2.0.4
       postcss: 8.5.26
       schema-utils: 3.3.0
-      semver: 7.7.4
+      semver: 7.8.5
       webpack: 5.112.2(@swc/core@1.15.24)(cssnano@6.1.2(postcss@8.5.26))(esbuild@0.28.2)(postcss@8.5.26)(webpack-cli@5.1.4)

-  postcss-loader@4.3.0(postcss@8.5.26)(webpack@5.112.2):
-    dependencies:
-      cosmiconfig: 7.1.0
-      klona: 2.0.6
-      loader-utils: 2.0.4
-      postcss: 8.5.26
-      schema-utils: 3.3.0
-      semver: 7.7.4
-      webpack: 5.112.2(@swc/core@1.15.24)(cssnano@5.1.12(postcss@8.5.26))(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
-
   postcss-loader@6.2.1(postcss@8.5.26)(webpack@5.112.2):
     dependencies:
       cosmiconfig: 7.1.0
@@ -42908,7 +42937,7 @@ snapshots:
       loader-utils: 2.0.4
       neo-async: 2.6.2
       schema-utils: 3.3.0
-      semver: 7.7.4
+      semver: 7.8.5
       webpack: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
     optionalDependencies:
       sass: 1.69.5
@@ -42919,22 +42948,11 @@ snapshots:
       loader-utils: 2.0.4
       neo-async: 2.6.2
       schema-utils: 3.3.0
-      semver: 7.7.4
+      semver: 7.8.5
       webpack: 5.112.2(@swc/core@1.15.24)(cssnano@6.1.2(postcss@8.5.26))(esbuild@0.28.2)(postcss@8.5.26)(webpack-cli@5.1.4)
     optionalDependencies:
       sass: 1.69.5

-  sass-loader@10.5.2(sass@1.69.5)(webpack@5.112.2):
-    dependencies:
-      klona: 2.0.6
-      loader-utils: 2.0.4
-      neo-async: 2.6.2
-      schema-utils: 3.3.0
-      semver: 7.7.4
-      webpack: 5.112.2(@swc/core@1.15.24)(cssnano@5.1.12(postcss@8.5.26))(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)
-    optionalDependencies:
-      sass: 1.69.5
-
   sass-loader@16.0.7(sass-embedded@1.100.0)(sass@1.69.5)(webpack@5.112.2):
     dependencies:
       neo-async: 2.6.2
@@ -42973,9 +42991,9 @@ snapshots:
   schema-utils@4.3.3:
     dependencies:
       '@types/json-schema': 7.0.15
-      ajv: 8.18.0
-      ajv-formats: 2.1.1(ajv@8.18.0)
-      ajv-keywords: 5.1.0(ajv@8.18.0)
+      ajv: 8.20.0
+      ajv-formats: 2.1.1(ajv@8.20.0)
+      ajv-keywords: 5.1.0(ajv@8.20.0)

   schema-utils@4.8.1(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)):
     dependencies:
@@ -42986,6 +43004,15 @@ snapshots:
     optionalDependencies:
       webpack: 5.112.2(@swc/core@1.15.24)(esbuild@0.27.7)(postcss@8.5.26)(webpack-cli@5.1.4)

+  schema-utils@4.8.1(webpack@5.112.2(@swc/core@1.15.24)(esbuild@0.28.2)(postcss@8.5.26)):
+    dependencies:
+      '@types/json-schema': 7.0.15
+      ajv: 8.20.0
+      ajv-formats: 3.0.1(ajv@8.20.0)
+      ajv-keywords: 5.1.0(ajv@8.20.0)
+    optionalDependencies:
+      webpack: 5.112.2(@swc/core@1.15.24)(cssnano@6.1.2(postcss@8.5.26))(esbuild@0.28.2)(postcss@8.5.26)(webpack-cli@5.1.4)
+
   section-matter@1.0.0:
     dependencies:
       extend-shallow: 2.0.1
@@ -43901,7 +43928,7 @@ snapshots:

   table@6.9.0:
     dependencies:
-      ajv: 8.18.0
+      ajv: 8.20.0
       lodash.truncate: 4.4.2
       slice-ansi: 4.0.0
       string-width: 4.2.3
@@ -43915,8 +43942,6 @@ snapshots:

   tapable@0.1.10: {}

-  tapable@2.3.2: {}
-
   tapable@2.3.3: {}

   tar-fs@3.1.2:
@@ -44162,7 +44187,7 @@ snapshots:
       json5: 2.2.3
       lodash.memoize: 4.1.2
       make-error: 1.3.6
-      semver: 7.7.4
+      semver: 7.8.5
       typescript: 5.7.3
       yargs-parser: 21.1.1
     optionalDependencies:
@@ -44181,7 +44206,7 @@ snapshots:
       json5: 2.2.3
       lodash.memoize: 4.1.2
       make-error: 1.3.6
-      semver: 7.7.4
+      semver: 7.8.5
       typescript: 5.7.3
       yargs-parser: 21.1.1
     optionalDependencies:
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 31a6defe812..a8e0348af00 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -70,7 +70,7 @@ catalogs:
         '@wordpress/views': 2.0.0
         '@wordpress/base-styles': 6.9.1

-    # Shared build tooling used across workspace packages.
+    # Shared build, lint and test tooling used across workspace packages.
     tooling:
         '@babel/cli': 7.25.7
         '@babel/core': 7.29.7
@@ -79,19 +79,39 @@ catalogs:
         '@babel/preset-react': 7.25.7
         '@babel/preset-typescript': 7.25.7
         '@babel/runtime': 7.25.7
+        # Keep direct Jest packages on 29.5.x; WordPress scripts manages its own test runner.
+        '@jest/globals': 29.5.x
+        '@types/jest': 29.5.x
         '@wordpress/build': 0.24.0
         '@wordpress/env': 12.0.0
         '@wordpress/prettier-config': 4.56.0
         '@wordpress/postcss-plugins-preset': 5.56.0
         '@wordpress/scripts': 35.0.0
         '@wordpress/stylelint-config': ^23.14.0
+        babel-jest: 29.5.x
         babel-loader: 9.2.x
+        babel-plugin-transform-react-remove-prop-types: 0.4.24
         copy-webpack-plugin: 14.0.x
+        css-loader: 6.11.x
+        eslint: ^10.0.0
+        jest: 29.5.x
+        jest-circus: 29.5.x
+        jest-cli: 29.5.x
+        jest-environment-jsdom: 29.5.x
+        jest-environment-node: 29.5.x
+        jest-fixed-jsdom: ^0.0.10
+        mini-css-extract-plugin: 2.9.x
         postcss: ^8.5.26
+        postcss-loader: 4.3.x
         prettier: npm:wp-prettier@3.9.6
+        rimraf: 5.0.5
+        sass-loader: 10.5.x
         simple-git: ^4.0.2
         stylelint: ^16.9.0
+        ts-jest: 29.1.x
+        typescript: 5.7.x
         webpack: 5.112.2
+        webpack-cli: 5.1.x

 packages:
     - 'packages/js/*'
diff --git a/tools/code-analyzer/changelog/shared-tooling-catalog b/tools/code-analyzer/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/tools/code-analyzer/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/tools/code-analyzer/package.json b/tools/code-analyzer/package.json
index 3ab3a226746..7fdf02e31e8 100644
--- a/tools/code-analyzer/package.json
+++ b/tools/code-analyzer/package.json
@@ -25,16 +25,16 @@
 		"simple-git": "catalog:tooling"
 	},
 	"devDependencies": {
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/node": "^24.1.0",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
-		"ts-jest": "29.1.x",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
+		"ts-jest": "catalog:tooling",
 		"ts-node": "^10.9.2",
 		"tslib": "^2.6.2",
-		"typescript": "5.7.x"
+		"typescript": "catalog:tooling"
 	},
 	"engines": {
 		"node": "^24.15.0"
diff --git a/tools/eslint-config/changelog/shared-tooling-catalog b/tools/eslint-config/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/tools/eslint-config/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json
index b1b3a801e75..e5e3a06d150 100644
--- a/tools/eslint-config/package.json
+++ b/tools/eslint-config/package.json
@@ -23,7 +23,7 @@
 		"@woocommerce/eslint-plugin": "workspace:*"
 	},
 	"devDependencies": {
-		"eslint": "^10.0.0"
+		"eslint": "catalog:tooling"
 	},
 	"config": {
 		"ci": {
diff --git a/tools/monorepo-merge/changelog/shared-tooling-catalog b/tools/monorepo-merge/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/tools/monorepo-merge/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/tools/monorepo-merge/package.json b/tools/monorepo-merge/package.json
index 25eea312170..8fb551a7249 100644
--- a/tools/monorepo-merge/package.json
+++ b/tools/monorepo-merge/package.json
@@ -17,7 +17,7 @@
 	},
 	"devDependencies": {
 		"@woocommerce/eslint-config": "workspace:*",
-		"eslint": "^10.0.0"
+		"eslint": "catalog:tooling"
 	},
 	"engines": {
 		"node": "^24.15.0"
diff --git a/tools/monorepo-utils/changelog/shared-tooling-catalog b/tools/monorepo-utils/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/tools/monorepo-utils/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/tools/monorepo-utils/package.json b/tools/monorepo-utils/package.json
index 1911f338474..9ef3ae88909 100644
--- a/tools/monorepo-utils/package.json
+++ b/tools/monorepo-utils/package.json
@@ -49,19 +49,19 @@
 		"simple-git": "catalog:tooling"
 	},
 	"devDependencies": {
-		"@types/jest": "29.5.x",
+		"@types/jest": "catalog:tooling",
 		"@types/node": "^24.1.0",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
 		"copy-webpack-plugin": "catalog:tooling",
-		"eslint": "^10.0.0",
-		"jest": "29.5.x",
+		"eslint": "catalog:tooling",
+		"jest": "catalog:tooling",
 		"replace": "^1.2.2",
-		"ts-jest": "29.1.x",
+		"ts-jest": "catalog:tooling",
 		"ts-loader": "9.5.x",
-		"typescript": "5.7.x",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling",
-		"webpack-cli": "5.1.x"
+		"webpack-cli": "catalog:tooling"
 	},
 	"engines": {
 		"node": "^24.15.0"
diff --git a/tools/package-release/changelog/shared-tooling-catalog b/tools/package-release/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/tools/package-release/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/tools/package-release/package.json b/tools/package-release/package.json
index af36b5779f0..fd10ab87198 100644
--- a/tools/package-release/package.json
+++ b/tools/package-release/package.json
@@ -34,12 +34,12 @@
 		"@types/node": "^24.1.0",
 		"@woocommerce/eslint-config": "workspace:*",
 		"@woocommerce/eslint-plugin": "workspace:*",
-		"eslint": "^10.0.0",
+		"eslint": "catalog:tooling",
 		"oclif": "^4.23.30",
 		"shx": "^0.3.4",
 		"ts-node": "^10.9.2",
 		"tslib": "^2.6.2",
-		"typescript": "5.7.x"
+		"typescript": "catalog:tooling"
 	},
 	"oclif": {
 		"bin": "package-release",
diff --git a/tools/release-posts/changelog/shared-tooling-catalog b/tools/release-posts/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/tools/release-posts/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/tools/release-posts/package.json b/tools/release-posts/package.json
index 0869438cfc7..7c298e1ed0d 100644
--- a/tools/release-posts/package.json
+++ b/tools/release-posts/package.json
@@ -17,7 +17,7 @@
 		"@types/lodash.shuffle": "^4.2.9",
 		"@types/node": "^24.1.0",
 		"@types/semver": "^7.5.6",
-		"typescript": "5.7.x"
+		"typescript": "catalog:tooling"
 	},
 	"dependencies": {
 		"@commander-js/extra-typings": "^0.1.0",
diff --git a/tools/storybook/changelog/shared-tooling-catalog b/tools/storybook/changelog/shared-tooling-catalog
new file mode 100644
index 00000000000..9f893d8e5e9
--- /dev/null
+++ b/tools/storybook/changelog/shared-tooling-catalog
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Centralize existing build, lint and test tooling versions in pnpm catalogs; no production change.
diff --git a/tools/storybook/package.json b/tools/storybook/package.json
index e3b3809de5a..796876a935a 100644
--- a/tools/storybook/package.json
+++ b/tools/storybook/package.json
@@ -42,7 +42,7 @@
 		"react": "18.3.x",
 		"react-dom": "18.3.x",
 		"storybook": "10.6.5",
-		"typescript": "5.7.x",
+		"typescript": "catalog:tooling",
 		"webpack": "catalog:tooling"
 	}
 }