Skip to content

chore: update high-risk dependencies#440

Open
gabitoesmiapodo wants to merge 12 commits intochore/update-medium-risk-depsfrom
chore/update-high-risk-deps
Open

chore: update high-risk dependencies#440
gabitoesmiapodo wants to merge 12 commits intochore/update-medium-risk-depsfrom
chore/update-high-risk-deps

Conversation

@gabitoesmiapodo
Copy link
Copy Markdown
Collaborator

@gabitoesmiapodo gabitoesmiapodo commented Apr 2, 2026

Summary

Updates four core dependencies to their next major versions. Each is isolated in its own commit for rollback granularity.

Closes #436

Changes

  • TypeScript 5 → 6: enables esModuleInterop, removes always-on flags (isolatedModules, useDefineForClassFields, allowSyntheticDefaultImports, baseUrl)
  • Zod 3 → 4: fixes .default() value type in src/env.ts (must match output type after transform)
  • @graphql-codegen/cli 5 → 6: adds pnpm.overrides to unblock @bootnodedev/db-subgraph which pins ^5; upstream issue filed at Support @graphql-codegen/cli v6 db-subgraph#1
  • Vite 6 → 8: migrates to Rolldown (rolldownOptions), replaces @vitejs/plugin-react-swc with @vitejs/plugin-react, replaces vite-tsconfig-paths with native resolve.tsconfigPaths: true
  • Fixes all Biome 2 lint warnings surfaced by the upgrade (invalid suppression placeholders, unused suppressions)
  • Fixes typedoc warnings: corrects @param tags in suspenseWrapper.tsx, includes TokensMap in docs output

Acceptance criteria

  • All listed packages updated
  • vite 8: Build pipeline functional, dev server works, all plugins compatible
  • typescript 6: tsc --noEmit passes, no new type errors introduced
  • zod 4: Environment validation in src/env.ts works correctly, @t3-oss/env-core compatible
  • graphql-codegen 6: pnpm subgraph-codegen produces valid output (if subgraph vars configured)
  • pnpm lint && pnpm test && pnpm build pass
  • Manual smoke test: dev server starts, app loads, wallet connects, contract interactions succeed

Test plan

  • pnpm lint -- 216 files, no errors
  • pnpm test -- 170/170 pass
  • pnpm build -- tsc clean, Rolldown build succeeds, vendor chunks present in dist/assets/
  • pnpm typedoc:build -- 0 warnings

Breaking changes

None for consumers of this template. Internal build tooling changes are transparent.

Checklist

  • Self-reviewed my own diff
  • Tests added or updated
  • Docs updated (if applicable)
  • No unrelated changes bundled in

Copilot AI review requested due to automatic review settings April 2, 2026 02:18
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 2, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
components.dappbooster Ready Ready Preview, Comment Apr 2, 2026 2:25am
demo.dappbooster Ready Ready Preview, Comment Apr 2, 2026 2:25am
docs.dappbooster Ready Ready Preview, Comment Apr 2, 2026 2:25am

Request Review

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates several major “high-risk” build/runtime dependencies (TypeScript, Vite, Zod, GraphQL Codegen) and adjusts project configuration/lint/docs to stay compatible with the new versions.

Changes:

  • Upgrades key dependencies in package.json (Zod v4, GraphQL Codegen CLI v6, TypeScript v6, Vite v8) and adds a pnpm override for @graphql-codegen/cli.
  • Migrates Vite config to the new plugin and build options (Rolldown + native tsconfig paths resolution).
  • Fixes upgrade-surfaced lint/doc issues (Biome ignore explanations, Typedoc warnings) and minor parsing/typing tweaks.

Reviewed changes

Copilot reviewed 11 out of 13 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
vite.config.ts Switches React plugin, drops vite-tsconfig-paths, migrates build chunking config to Rolldown, enables native resolve.tsconfigPaths.
typedoc.json Adjusts Typedoc exclude globs to change what gets included in generated docs.
tsconfig.json Updates TS interop/options for the TypeScript major bump.
src/utils/suspenseWrapper.tsx Updates Typedoc annotations to eliminate warnings.
src/providers/TransactionNotificationProvider.tsx Removes Biome suppressions and leaves assignment-in-expression callbacks.
src/main.tsx Replaces placeholder Biome suppression explanation with a real one.
src/lib/wagmi/plugins/reactSuspenseRead.ts Replaces placeholder Biome suppression explanations with real ones.
src/hooks/useTokens.ts Adds explicit radix to parseInt, adjusts Biome suppression explanations, and removes an unused suppression.
src/env.ts Updates Zod default to match transformed output type (boolean).
src/components/sharedComponents/TokenSelect/TopTokens/index.tsx Replaces placeholder Biome suppression explanation with a real one.
src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx Adds a Biome suppression for a fragment requirement.
package.json Bumps major versions and adds pnpm.overrides to force Codegen CLI v6.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

const receipt = await readOnlyClient.waitForTransactionReceipt({
hash,
// biome-ignore lint/suspicious/noAssignInExpressions: <explanation>
onReplaced: (replacedTxData) => (replacedTx = replacedTxData),
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

onReplaced: (replacedTxData) => (replacedTx = replacedTxData) relies on assignment-in-expression. This is easy to miss and was previously suppressed by Biome; without the suppression it may reintroduce the lint warning. Prefer a block-bodied callback (assign + return void) or keep a Biome ignore with a real explanation.

Suggested change
onReplaced: (replacedTxData) => (replacedTx = replacedTxData),
onReplaced: (replacedTxData) => {
replacedTx = replacedTxData
},

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 29dc29f. Converted to block-bodied callback.

signaturePromise: txPromise,
showSuccessToast: false,
// biome-ignore lint/suspicious/noAssignInExpressions: <explanation>
onToastId: (id) => (toastId = id),
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

onToastId: (id) => (toastId = id) uses assignment-in-expression (previously suppressed). Consider switching to a block-bodied callback for clarity / to avoid Biome's noAssignInExpressions, or re-add a properly-explained suppression if this pattern is intentional.

Suggested change
onToastId: (id) => (toastId = id),
onToastId: (id) => {
toastId = id
},

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 29dc29f. Converted to block-bodied callback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update high-risk dependencies

2 participants