From 56fbce642d2fa8719836726722859aa842789323 Mon Sep 17 00:00:00 2001 From: Kristian Whittick Date: Sat, 17 Jan 2026 08:47:18 +0000 Subject: [PATCH 1/3] fix: upgrade @svgr/webpack from v5.5.0 to v8.1.0 - Resolves deprecation warnings for svgo@1.3.2 and stable@0.1.8 - @svgr/webpack v8 includes svgo v3 which no longer uses the deprecated stable package - Configuration remains compatible with v8 --- packages/react-scripts/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-scripts/package.json b/packages/react-scripts/package.json index 37d435b5051..6bedc9aa1ed 100644 --- a/packages/react-scripts/package.json +++ b/packages/react-scripts/package.json @@ -30,7 +30,7 @@ "dependencies": { "@babel/core": "^7.16.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@svgr/webpack": "^5.5.0", + "@svgr/webpack": "^8.1.0", "babel-jest": "^27.4.2", "babel-loader": "^8.2.3", "babel-plugin-named-asset-import": "^0.4.0", From e8a81c2f4ef6b48f2dcfeaf6114c96f215061681 Mon Sep 17 00:00:00 2001 From: Kristian Whittick Date: Sat, 17 Jan 2026 09:23:10 +0000 Subject: [PATCH 2/3] fix: properly kill verdaccio in stopLocalRegistry --- tasks/local-registry.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tasks/local-registry.sh b/tasks/local-registry.sh index 34bdd260c02..ab865dcbc94 100644 --- a/tasks/local-registry.sh +++ b/tasks/local-registry.sh @@ -10,6 +10,7 @@ function startLocalRegistry { tmp_registry_log=`mktemp` echo "Registry output file: $tmp_registry_log" (cd && nohup npx ${VERDACCIO_PACKAGE:-$default_verdaccio_package} -c $1 &>$tmp_registry_log &) + verdaccio_pid=$! # Wait for Verdaccio to boot grep -q 'http address' <(tail -f $tmp_registry_log) @@ -22,6 +23,13 @@ function stopLocalRegistry { # Restore the original NPM and Yarn registry URLs and stop Verdaccio npm set registry "$original_npm_registry_url" yarn config set registry "$original_yarn_registry_url" + + # Kill verdaccio process if it's running + if [ ! -z "$verdaccio_pid" ]; then + kill $verdaccio_pid 2>/dev/null || true + fi + # Also kill any remaining verdaccio processes + pkill -f verdaccio 2>/dev/null || true } function publishToLocalRegistry { From 9fca391706674a46a589dc11a1410a94a24fb308 Mon Sep 17 00:00:00 2001 From: Kristian Whittick Date: Sat, 17 Jan 2026 10:09:55 +0000 Subject: [PATCH 3/3] test: add verification test for @svgr/webpack v8 upgrade Adds standalone test script to verify: - package.json has @svgr/webpack v8+ - webpack config includes @svgr/webpack loader - svgr options are properly configured Run with: node packages/react-scripts/verify-svgr-upgrade.test.js --- .../react-scripts/verify-svgr-upgrade.test.js | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 packages/react-scripts/verify-svgr-upgrade.test.js diff --git a/packages/react-scripts/verify-svgr-upgrade.test.js b/packages/react-scripts/verify-svgr-upgrade.test.js new file mode 100755 index 00000000000..2424cc6aeb5 --- /dev/null +++ b/packages/react-scripts/verify-svgr-upgrade.test.js @@ -0,0 +1,77 @@ +#!/usr/bin/env node +/** + * Verification test for @svgr/webpack v8 upgrade + * Run with: node verify-svgr-upgrade.test.js + */ + +const fs = require('fs'); +const path = require('path'); +const { execSync } = require('child_process'); + +console.log('๐Ÿงช Testing @svgr/webpack v8 upgrade...\n'); + +// Test 1: Check package.json has v8+ +console.log('Test 1: Verify @svgr/webpack version in package.json'); +const packageJsonPath = path.join(__dirname, 'package.json'); +const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); +const svgrVersion = packageJson.dependencies?.['@svgr/webpack']; + +if (!svgrVersion) { + console.error('โŒ FAIL: @svgr/webpack not found in dependencies'); + process.exit(1); +} + +const majorVersion = parseInt(svgrVersion.replace(/^\^/, '').split('.')[0]); +if (majorVersion >= 8) { + console.log(`โœ… PASS: @svgr/webpack version is ${svgrVersion} (>= v8)`); +} else { + console.error(`โŒ FAIL: @svgr/webpack version is ${svgrVersion} (< v8)`); + process.exit(1); +} + +// Test 2: Check installed version +console.log('\nTest 2: Verify installed @svgr/webpack version'); +try { + const installedVersion = execSync( + 'npm list @svgr/webpack --depth=0 --json', + { cwd: __dirname, encoding: 'utf8' } + ); + const parsed = JSON.parse(installedVersion); + const version = parsed.dependencies?.['@svgr/webpack']?.version; + + if (version && parseInt(version.split('.')[0]) >= 8) { + console.log(`โœ… PASS: Installed version is ${version}`); + } else { + console.log(`โš ๏ธ SKIP: Not installed or version check failed`); + } +} catch (e) { + console.log('โš ๏ธ SKIP: Could not check installed version'); +} + +// Test 3: Check webpack config has svgr loader +console.log('\nTest 3: Verify webpack config includes @svgr/webpack loader'); +const webpackConfigPath = path.join(__dirname, 'config/webpack.config.js'); +const webpackConfig = fs.readFileSync(webpackConfigPath, 'utf8'); + +if (webpackConfig.includes('@svgr/webpack')) { + console.log('โœ… PASS: webpack.config.js references @svgr/webpack'); +} else { + console.error('โŒ FAIL: webpack.config.js does not reference @svgr/webpack'); + process.exit(1); +} + +// Test 4: Check svgr options are configured +console.log('\nTest 4: Verify svgr options are configured'); +const hasOptions = webpackConfig.includes('prettier:') && + webpackConfig.includes('svgo:') && + webpackConfig.includes('titleProp:') && + webpackConfig.includes('ref:'); + +if (hasOptions) { + console.log('โœ… PASS: svgr options (prettier, svgo, titleProp, ref) are configured'); +} else { + console.error('โŒ FAIL: svgr options not properly configured'); + process.exit(1); +} + +console.log('\nโœจ All tests passed! @svgr/webpack v8 upgrade is verified.\n');