-
Notifications
You must be signed in to change notification settings - Fork 48
package upgrades #3544
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
package upgrades #3544
Conversation
WalkthroughThe PR upgrades numerous dependencies and devDependencies in package.json (including libraries such as @apollo/client, react/react-dom, @sentry/, @vitejs/, lexical, i18next, axios, dayjs, and testing/tooling packages). In src/setupTests.ts the previous combined guard for TextEncoder/TextDecoder was split into two independent checks; each missing global is now defined using Object.defineProperty with writable: true and configurable: true. No exported or public APIs were changed. Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
🚀 Deployed on https://deploy-preview-3544--glific-frontend.netlify.app |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (1)
package.json(3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Codacy Static Code Analysis
- GitHub Check: CI
- GitHub Check: glific (1.18.3-otp-27, 27.3.3)
- GitHub Check: build
package.json
Outdated
| "vite": "^7.0.7", | ||
| "vite-plugin-checker": "^0.10.0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update the project’s Node engine range for Vite 7
Vite 7.0.7 now enforces Node 20.19+ (or 22.12+). Leaving "engines.node" at >=20.0.0 <23 means local devs and CI pinned to Node 20.0–20.18 will hit EBADENGINE installs or unstable builds.(main.vitejs.dev) Please bump the engine floor to align with the new requirement (and ensure CI images follow suit).
"engines": {
- "node": ">=20.0.0 <23"
+ "node": ">=20.19.0 <23"
},📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "vite": "^7.0.7", | |
| "vite-plugin-checker": "^0.10.0", | |
| "engines": { | |
| "node": ">=20.19.0 <23" | |
| }, |
🤖 Prompt for AI Agents
In package.json around lines 68-69, the project’s "engines.node" range is too
low for Vite 7 (which requires Node >=20.19 or >=22.12); update the engines.node
field to set a minimum compatible Node version (for example ">=20.19.0 <23" or
">=22.12.0 <23" depending on supported major) so installs and CI use a Node
runtime that meets Vite 7 requirements, and ensure CI images/workflows are
updated to match the new engine floor.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3544 +/- ##
==========================================
+ Coverage 82.99% 83.01% +0.01%
==========================================
Files 340 340
Lines 11241 11241
Branches 2379 2379
==========================================
+ Hits 9330 9332 +2
+ Misses 1202 1201 -1
+ Partials 709 708 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Glific
|
||||||||||||||||||||||||||||
| Project |
Glific
|
| Branch Review |
package-upgrades-1025
|
| Run status |
|
| Run duration | 27m 36s |
| Commit |
|
| Committer | Akansha Sakhre |
| View all properties for this run ↗︎ | |
| Test results | |
|---|---|
|
|
0
|
|
|
1
|
|
|
0
|
|
|
0
|
|
|
182
|
| View all changes introduced in this branch ↗︎ | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (1)
package.json (1)
88-90: Bump Node engine floor to satisfy Vite 7 requirementsVite 7 enforces Node >=20.19 (or >=22.12). Keeping ">=20.0.0 <23" risks EBADENGINE in installs/CI.
Apply one of:
"engines": { - "node": ">=20.0.0 <23" + "node": ">=20.19.0 <23" },or, if standardizing on Node 22:
"engines": { - "node": ">=20.0.0 <23" + "node": ">=22.12.0 <23" },#!/bin/bash # Verify CI and local tooling align with the engine floor. echo "Engine in package.json:" jq -r '.engines.node' package.json echo -e "\nGitHub Actions setup-node versions referenced:" rg -n -C2 -g '.github/workflows/**' 'setup-node' || true rg -n -C2 -g '.github/workflows/**' 'node-version' || true
🧹 Nitpick comments (1)
package.json (1)
68-68: Drop @types/uuid; uuid v13 includes its own typesKeeping @types/uuid can cause duplicate/incorrect typings.
- "@types/uuid": "^11.0.0",Also applies to: 119-119
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (1)
package.json(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Codacy Static Code Analysis
- GitHub Check: glific (1.18.3-otp-27, 27.3.3)
- GitHub Check: CI
🔇 Additional comments (3)
package.json (3)
35-35: Verify peer compatibility for Vite 7
Ensure these plugins declare Vite 7 in their peerDependencies and emit no warnings on install:
- @vitejs/plugin-react @^5.0.4
- vite-plugin-svgr @^4.5.0
- vite-plugin-checker @^0.11.0
Also validate HMR/fast-refresh in a Vite 7 project.
30-33: Please list all@sentry/imports in your source files to confirm usage:#!/bin/bash rg -n '@sentry/' -g '*.{ts,tsx,js,jsx}' -C2[tag: verify_review_comment]
112-112: @types/node version must align with Node engines
package.json engines ("node": ">=20.0.0 <23") conflict with @types/node "^24.7.2".
• If targeting Node 20.x: downgrade to "@types/node": "^20.12.x"
• If targeting Node 22.x: update engines to ">=22.0.0 <23" and use "@types/node": "^22.x"
CI workflows omit an explicit node-version—please verify the actual CI Node runtime before adjusting.
| "@types/react-router": "^5.1.20", | ||
| "@types/react-router-dom": "^5.3.3", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Remove legacy React Router v5 type packages
React Router v7 ships its own types. Keeping @types/react-router(-dom) v5 can conflict with the v7 API.
Remove both:
- "@types/react-router": "^5.1.20",
- "@types/react-router-dom": "^5.3.3",🏁 Script executed:
#!/bin/bash
# Sanity check for legacy v5 APIs that would block v7 (Switch, withRouter, useHistory, Redirect).
rg -n -C2 --type=ts --type=tsx '\b(Switch|withRouter|useHistory|Redirect)\b' || true
# Confirm v6/v7 APIs are used (Routes, useNavigate, createBrowserRouter, RouterProvider).
rg -n -C2 --type=ts --type=tsx '\b(Routes|useNavigate|createBrowserRouter|RouterProvider)\b' || trueLength of output: 55
🏁 Script executed:
#!/bin/bash
# Check for legacy v5 APIs in TS/TSX files
rg -n -C2 '\b(Switch|withRouter|useHistory|Redirect)\b' -g '*.ts' -g '*.tsx' --no-ignore || true
# Check for v6/v7 APIs in TS/TSX files
rg -n -C2 '\b(Routes|useNavigate|createBrowserRouter|RouterProvider)\b' -g '*.ts' -g '*.tsx' --no-ignore || trueLength of output: 75817
Remove legacy React Router v5 type packages
Verified no v5 APIs (Switch, useHistory, Redirect, withRouter) are used; v6+/v7 APIs (Routes, useNavigate, etc.) are in place. Remove both entries:
- "@types/react-router": "^5.1.20",
- "@types/react-router-dom": "^5.3.3",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "@types/react-router": "^5.1.20", | |
| "@types/react-router-dom": "^5.3.3", |
🤖 Prompt for AI Agents
In package.json around lines 116-117, remove the legacy React Router v5 type
package entries "@types/react-router" and "@types/react-router-dom" since the
codebase uses React Router v6+/v7 APIs; delete those two lines from
dependencies/devDependencies, run your package manager to uninstall them (npm
uninstall or yarn remove) and then reinstall/update lockfile (npm install or
yarn) to ensure lockfile consistency; verify TypeScript compiles (v6+ has
built-in types) and remove any leftover imports/refs to v5 types if present.
- Upgraded @lexical/react from ^0.33.0 to ^0.37.0 - Upgraded @mui/icons-material from ^7.2.0 to ^7.3.4 - Upgraded @mui/material from ^7.2.0 to ^7.3.4 - Upgraded @mui/x-date-pickers from ^8.7.0 to ^8.14.0 - Downgraded @nyaruka/temba-components from ^0.120.4 to 0.113.0 - Updated @lexical/clipboard, @lexical/code, @lexical/devtools-core, @lexical/dragon, @lexical/hashtag, @lexical/history, @lexical/html, @lexical/link, @lexical/list, @lexical/mark, @lexical/markdown, @lexical/offset, @lexical/overflow, @lexical/plain-text, @lexical/rich-text, @lexical/table, @lexical/text, @lexical/utils, and @lexical/yjs to version 0.37.0 - Updated react-error-boundary from ^3.1.4 to ^6.0.0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (2)
package.json (2)
88-90: Resolve Vite 7 Node engine requirement (unresolved from previous review).Vite 7.1.9 requires Node >=20.19.0 (or >=22.12.0), but
engines.noderemains at>=20.0.0 <23, which allows Node 20.0–20.18. This will cause installs or unstable builds for developers and CI pinned to older Node 20.x versions."engines": { - "node": ">=20.0.0 <23" + "node": ">=20.19.0 <23" },Ensure CI workflows and local development environments are also updated to use Node 20.19+.
116-117: Remove legacy React Router v5 type packages (unresolved from previous review).React Router v7.9.4 (line 63) ships with built-in types; keeping
@types/react-routerand@types/react-router-domv5 can cause type conflicts with v7 APIs."@types/react-google-recaptcha": "^2.1.9", - "@types/react-router": "^5.1.20", - "@types/react-router-dom": "^5.3.3", "@types/react-test-renderer": "^19.1.0",
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (1)
package.json(2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Codacy Static Code Analysis
- GitHub Check: glific (1.18.3-otp-27, 27.3.3)
🔇 Additional comments (2)
package.json (2)
51-52: React 19.2.0 upgrade is compatible; fix one weak ref type.The codebase successfully uses React 19.2.0 with proper migration patterns:
- ✅ Entry point uses
createRoot(src/index.tsx)- ✅ No
propTypes, deprecated Context APIs, orReactDOM.render()calls- ✅
forwardRefcorrectly implemented in Editor.tsx with proper TypeScript generics- ✅ Error Boundary (
getDerivedStateFromError,componentDidCatch) still supported- ✅ Suspense and
useRefusages are compatibleMinor issue: src/components/UI/Layout/Navigation/SideMenus/SideMenus.tsx line 44 uses
ref: anyinstead of proper TypeScript typing. Update to:forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>((props, ref)for type safety.
11-73: Lock file verified; breaking changes not present in codebase.Verification confirms:
- yarn.lock is properly tracked in git and was updated in commit 04c0cfb ✓
- package.json is valid JSON with no duplicate keys ✓
- No PropTypes, defaultProps, string refs, Material UI Grid, or Modal onBackdropClick usage detected in codebase ✓
- Test infrastructure (vitest) and build configuration (vite) are in place ✓
The breaking changes flagged in the original review are not applicable to this codebase, as the deprecated patterns are not used. Transitive dependencies are locked via yarn.lock, and test infrastructure exists to validate the upgrades.
| "@stripe/react-stripe-js": "^3.7.0", | ||
| "@stripe/stripe-js": "^7.4.0", | ||
| "@vitejs/plugin-react": "^4.6.0", | ||
| "@sentry/react": "^10.19.0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify Sentry v10 migration is complete.
@sentry/react is upgraded from v9.x to v10.19.0, a major version bump with potential breaking changes (e.g., API removals, configuration changes). Ensure the migration guide has been followed and that initialization code in the codebase has been updated accordingly.
🌐 Web query:
What are the breaking changes in Sentry JavaScript SDK v10?
💡 Result:
Key breaking changes in Sentry JavaScript SDK v10 (summary):
- Bumped OpenTelemetry dependencies to v2 (major dependency change). [1][2]
- Removed collection of the FID web-vital (First Input Delay). Replace any FID logic/alerts with INP if needed. [1][2]
- Removed BaseClient — use Client instead. [1]
- Removed hasTracingEnabled — use hasSpansEnabled. [1]
- Removed the deprecated internal logger export/type in @sentry/core (use debug / SentryDebugLogger). [1]
- Removed experimental _experiments.enableLogs and _experiments.beforeSendLog options; use top-level enableLogs and beforeSendLog. [1]
- _experiments.autoFlushOnFeedback promoted to default behavior (affects Replay). [1]
- New compatibility ranges for runtimes/frameworks and self-hosting requirements noted (check migration guide for platform-specific details). [1]
- Later v10.x note: SDKs now control IP address inference based on sendDefaultPii (if you need user IPs set sendDefaultPii: true). [1]
Sources: Sentry migration/changelog and package release notes. [1] Sentry docs — Migrate v9→v10 (breaking changes & details). [2] Package/changelog summaries for v10.0.0.
I'll now search the codebase to verify whether the Sentry v10 migration has been properly implemented.
🏁 Script executed:
#!/bin/bash
# Find Sentry initialization files
fd -e ts -e js -e tsx -e jsx | xargs rg -l 'Sentry\.(init|setClient)' -n -A 5 -B 2Length of output: 20
🏁 Script executed:
#!/bin/bash
# Search for removed/deprecated Sentry APIs
rg -nP '(BaseClient|hasTracingEnabled|_experiments\.|enableLogs|beforeSendLog)' --type=ts --type=js --type=tsx --type=jsx -C 3Length of output: 27
🏁 Script executed:
#!/bin/bash
# Look for Sentry configuration files
fd -e ts -e js -e tsx -e jsx | xargs rg -l '@sentry/react' -nLength of output: 113
🏁 Script executed:
#!/bin/bash
# Check for any migration-related comments or TODOs
rg -nP '(TODO|FIXME|migration|v10|breaking)' -i --type=ts --type=js --type=tsx --type=jsx | grep -i sentryLength of output: 27
🏁 Script executed:
#!/bin/bash
# Check package.json for Sentry packages and versions
cat package.json | jq '.dependencies, .devDependencies' | grep -i sentryLength of output: 103
🏁 Script executed:
#!/bin/bash
# Search for usage patterns that might indicate Sentry configuration
rg -nP 'Sentry\.(init|captureException|setUser|setContext)' -C 2 --type=ts --type=tsx --type=js --type=jsxLength of output: 27
🏁 Script executed:
#!/bin/bash
# Look for old v9-style configurations
rg -nP '(integrations|dsn|tracesSampleRate|enableTracing)' -C 2 --type=ts --type=tsx --type=js --type=jsx | head -50Length of output: 27
🏁 Script executed:
#!/bin/bash
# Check for OpenTelemetry version in package.json
cat package.json | jq '.dependencies, .devDependencies' | grep -i opentelemetryLength of output: 0
🏁 Script executed:
#!/bin/bash
# Check for any sentry config files
fd -name '*sentry*' -type fLength of output: 230
🏁 Script executed:
#!/bin/bash
# Look for the Sentry @sentry/core import which has breaking changes
rg -nP '@sentry/core' -C 2 --type=ts --type=tsx --type=js --type=jsxLength of output: 27
🏁 Script executed:
#!/bin/bash
# Search for BaseClient usage (removed in v10)
rg -nP 'BaseClient|Client' --type=ts --type=tsx --type=js --type=jsx -C 3 | grep -i sentryLength of output: 27
🏁 Script executed:
#!/bin/bash
# Look for hasSpansEnabled (v10 replacement for hasTracingEnabled)
rg -nP 'hasSpansEnabled|hasTracingEnabled' --type=ts --type=tsx --type=js --type=jsxLength of output: 27
🏁 Script executed:
#!/bin/bash
# Search for _experiments usage (removed/changed in v10)
rg -nP '_experiments' --type=ts --type=tsx --type=js --type=jsx -C 2Length of output: 27
🏁 Script executed:
#!/bin/bash
# Check for logger-related imports from @sentry/core (breaking change)
rg -nP 'from.*@sentry/core.*logger' -i --type=ts --type=tsx --type=js --type=jsxLength of output: 27
🏁 Script executed:
#!/bin/bash
# Look for sendDefaultPii usage (behavior changed in v10)
rg -nP 'sendDefaultPii' --type=ts --type=tsx --type=js --type=jsx -C 2Length of output: 27
🏁 Script executed:
#!/bin/bash
# General search for Sentry initialization to understand the scope of migration
rg -nP 'Sentry\.' --type=ts --type=tsx --type=js --type=jsx | head -100Length of output: 27
🏁 Script executed:
#!/bin/bash
# Check the repository structure to find source files
fd -type f -name '*.ts' -o -name '*.tsx' -o -name '*.js' -o -name '*.jsx' | head -30Length of output: 170
🏁 Script executed:
#!/bin/bash
# Locate main app entry point or initialization
fd -e ts -e tsx | xargs rg -l 'React\.render|ReactDOM|root\.' -n | head -10Length of output: 198
🏁 Script executed:
#!/bin/bash
# Check for src directory structure
ls -la src/ 2>/dev/null || echo "No src directory"Length of output: 1433
🏁 Script executed:
#!/bin/bash
# Look for index or app file
fd -e ts -e tsx -e js | grep -E '(index|app|main|init)' | head -20Length of output: 217
🏁 Script executed:
#!/bin/bash
# Get all TypeScript/JavaScript files to understand project structure
fd -type f \( -name '*.ts' -o -name '*.tsx' -o -name '*.js' -o -name '*.jsx' \) | head -30Length of output: 170
🏁 Script executed:
#!/bin/bash
# Read Sentry initialization config
cat src/sentry.config.tsLength of output: 579
🏁 Script executed:
#!/bin/bash
# Read Apollo client config with Sentry
cat src/config/apolloclient.tsLength of output: 4967
🏁 Script executed:
#!/bin/bash
# Read ErrorBoundary component
cat src/components/errorboundary/ErrorBoundary.tsxLength of output: 2281
🏁 Script executed:
#!/bin/bash
# Read logs config
cat src/config/logs.tsLength of output: 659
🏁 Script executed:
#!/bin/bash
# Search for removed BaseClient (v10 breaking change)
rg -n 'BaseClient' src/Length of output: 0
🏁 Script executed:
#!/bin/bash
# Search for hasTracingEnabled (removed in v10)
rg -n 'hasTracingEnabled' src/Length of output: 0
🏁 Script executed:
#!/bin/bash
# Search for _experiments (removed/changed in v10)
rg -n '_experiments' src/Length of output: 0
🏁 Script executed:
#!/bin/bash
# Search for Sentry.init call
rg -n 'Sentry\.init' src/ -A 10Length of output: 611
🏁 Script executed:
#!/bin/bash
# Check for any Sentry configuration patterns
rg -n 'Sentry\.' src/ | head -50Length of output: 952
🏁 Script executed:
#!/bin/bash
# Check full dependencies and devDependencies for all Sentry packages
cat package.json | jq '.dependencies + .devDependencies | keys[] as $k | select($k | contains("sentry")) | "\($k)"'Length of output: 60
🏁 Script executed:
#!/bin/bash
# Check entire Sentry section in package.json
cat package.json | jq '.dependencies, .devDependencies | to_entries[] | select(.key | startswith("@sentry"))'Length of output: 166
🏁 Script executed:
#!/bin/bash
# Read index.tsx to see where Sentry is initialized
cat src/index.tsxLength of output: 1737
🏁 Script executed:
#!/bin/bash
# Check for any imports of deprecated Sentry APIs
rg -n 'import.*from.*@sentry' src/ -A 2Length of output: 785
🏁 Script executed:
#!/bin/bash
# Look for BaseClient which was removed in v10
rg -n 'class.*BaseClient|extends BaseClient' src/Length of output: 0
🏁 Script executed:
#!/bin/bash
# Check for logger imports from @sentry/core (breaking change in v10)
rg -n 'logger.*from.*@sentry/core' src/ -iLength of output: 0
🏁 Script executed:
#!/bin/bash
# Check if there are any integrations being used
rg -n 'new.*Integration|Integrations\.' src/ -C 2 | head -50Length of output: 0
🏁 Script executed:
#!/bin/bash
# Check vite config for Sentry plugin
find . -name 'vite.config.*' -o -name 'vitest.config.*' | head -5Length of output: 35
🏁 Script executed:
#!/bin/bash
# Read vite config
cat vite.config.ts 2>/dev/null || cat vite.config.js 2>/dev/null || echo "No vite config found in root"Length of output: 2847
🏁 Script executed:
#!/bin/bash
# Search for actual usage of @sentry/integrations package
rg -n 'from.*@sentry/integrations' src/Length of output: 0
🏁 Script executed:
#!/bin/bash
# Search for Sentry.Integrations pattern (old v9 style)
rg -n 'Sentry\.Integrations' src/Length of output: 0
🏁 Script executed:
#!/bin/bash
# Check if @sentry/integrations is imported anywhere
rg -n '@sentry/integrations' src/Length of output: 0
🏁 Script executed:
#!/bin/bash
# Search full package.json for context around @sentry/integrations
cat package.json | jq '.dependencies | with_entries(select(.key | contains("sentry"))) | .'Length of output: 106
Update @sentry/integrations to v10 to complete the migration.
The codebase correctly uses Sentry v10 APIs in initialization and throughout (browserTracingIntegration, browserSessionIntegration, httpClientIntegration, captureConsoleIntegration). However, @sentry/integrations remains at v7.114.0 while @sentry/react is at v10.19.0. This package is unused in the codebase and creates a version mismatch that could cause compatibility issues. It should be updated to v10 or removed entirely.
🤖 Prompt for AI Agents
In package.json around line 31, @sentry/integrations is pinned at v7 while
@sentry/react is at v10, causing a version mismatch; either bump
@sentry/integrations to a v10 release compatible with @sentry/react (e.g.,
^10.x) or remove the @sentry/integrations entry entirely if unused, then update
the lockfile by running npm install or yarn install and verify the build/tests
to ensure no runtime import issues.
Summary by CodeRabbit