chore(deps-dev): bump the tooling group across 1 directory with 4 updates#73
Conversation
📝 WalkthroughWalkthroughThis pull request systematically migrates ESLint configurations across eight applications (airdrop, chain-landing, coinblast, dex, faucet, landing, scan, solux) from the deprecated FlatCompat-based setup to ESLint's defineConfig API. It removes Node path/URL utilities and FlatCompat imports, replaces extends-based composition with direct preset imports (nextVitals, nextTs), centralizes ignore patterns using globalIgnores, and adds explicit react-hooks rule disables. Coordinated devDependency updates bump TypeScript from ^5 to ^6, Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (2)
apps/dex/eslint.config.mjs (1)
20-25: ⚡ Quick winPrefer
warnoverofffor temporary React hooks suppressions.Given the TODO on Line 16, using warnings preserves signal while still unblocking CI.
Suggested change
- "react-hooks/preserve-manual-memoization": "off", - "react-hooks/purity": "off", - "react-hooks/refs": "off", - "react-hooks/set-state-in-effect": "off", - "react-hooks/static-components": "off", - "react-hooks/use-memo": "off", + "react-hooks/preserve-manual-memoization": "warn", + "react-hooks/purity": "warn", + "react-hooks/refs": "warn", + "react-hooks/set-state-in-effect": "warn", + "react-hooks/static-components": "warn", + "react-hooks/use-memo": "warn",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/dex/eslint.config.mjs` around lines 20 - 25, Change the React hooks ESLint rule severities from "off" to "warn" for the listed rules (react-hooks/preserve-manual-memoization, react-hooks/purity, react-hooks/refs, react-hooks/set-state-in-effect, react-hooks/static-components, react-hooks/use-memo) so they surface warnings instead of being disabled; update the ESLint configuration where those rules are defined and leave the TODO comment intact to indicate these are temporary suppressions.apps/dex/package.json (1)
34-36: Consider aligning eslint-config-next major version with Next.js.TypeScript@6 is compatible with eslint-config-next@16.2.6 (which requires >=3.3.1). However, eslint-config-next@16.2.6 lacks an explicit next peer dependency, and using mismatched major versions (next@15 + eslint-config-next@16) may cause linting rule inconsistencies or unexpected behavior. Verify this setup works with your ESLint configuration in practice, or align to eslint-config-next@15.x for consistency.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/dex/package.json` around lines 34 - 36, The package.json currently pins "eslint-config-next": "16.2.6" while the project uses Next.js v15 (mismatched majors); update package.json to align eslint-config-next with the Next.js major (change to eslint-config-next@15.x) or else confirm and test that Next.js v15 works with eslint-config-next@16.2.6; adjust the dependency version for eslint-config-next in package.json and run linting/CI to verify no rule conflicts, keeping TypeScript@6 as-is if compatible.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@apps/dex/eslint.config.mjs`:
- Around line 20-25: Change the React hooks ESLint rule severities from "off" to
"warn" for the listed rules (react-hooks/preserve-manual-memoization,
react-hooks/purity, react-hooks/refs, react-hooks/set-state-in-effect,
react-hooks/static-components, react-hooks/use-memo) so they surface warnings
instead of being disabled; update the ESLint configuration where those rules are
defined and leave the TODO comment intact to indicate these are temporary
suppressions.
In `@apps/dex/package.json`:
- Around line 34-36: The package.json currently pins "eslint-config-next":
"16.2.6" while the project uses Next.js v15 (mismatched majors); update
package.json to align eslint-config-next with the Next.js major (change to
eslint-config-next@15.x) or else confirm and test that Next.js v15 works with
eslint-config-next@16.2.6; adjust the dependency version for eslint-config-next
in package.json and run linting/CI to verify no rule conflicts, keeping
TypeScript@6 as-is if compatible.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 4502077d-d845-4b01-976d-ee3681270312
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (18)
apps/airdrop/eslint.config.mjsapps/airdrop/package.jsonapps/chain-landing/eslint.config.mjsapps/chain-landing/package.jsonapps/coinblast/eslint.config.mjsapps/coinblast/package.jsonapps/dex/eslint.config.mjsapps/dex/package.jsonapps/faucet/eslint.config.mjsapps/faucet/package.jsonapps/landing/eslint.config.mjsapps/landing/package.jsonapps/scan/eslint.config.mjsapps/scan/package.jsonapps/solux/eslint.config.mjsapps/solux/package.jsonpackage.jsonpackages/wallet-config/package.json
TS 6 + the tooling-group bump made tsc stricter about side-effect imports (`import "./globals.css"`). The CSS module declaration that allows them comes from `next-env.d.ts` which Next.js auto-generates — but that file is gitignored and only emitted after `next build`. CI runs `pnpm typecheck` before `next build`, so each app would error with TS2882 on the layout.tsx CSS import. Added `apps/<app>/globals.d.ts` with the same triple-slash refs plus an explicit `declare module "*.css"`. Bundled with the existing tooling-group bump (#73). Verified typecheck passes locally for airdrop, coinblast, dex, faucet, landing, scan.
…ates Bumps the tooling group with 4 updates in the / directory: [typescript](https://github.com/microsoft/TypeScript), [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node), [eslint](https://github.com/eslint/eslint) and [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next). Updates `typescript` from 5.9.3 to 6.0.3 - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](microsoft/TypeScript@v5.9.3...v6.0.3) Updates `@types/node` from 20.19.41 to 25.7.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `eslint` from 9.39.4 to 10.3.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v9.39.4...v10.3.0) Updates `eslint-config-next` from 15.5.15 to 16.2.6 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v16.2.6/packages/eslint-config-next) --- updated-dependencies: - dependency-name: typescript dependency-version: 6.0.3 dependency-type: direct:development update-type: version-update:semver-major dependency-group: tooling - dependency-name: "@types/node" dependency-version: 25.7.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: tooling - dependency-name: eslint dependency-version: 10.3.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: tooling - dependency-name: eslint-config-next dependency-version: 16.2.6 dependency-type: direct:development update-type: version-update:semver-major dependency-group: tooling ... Signed-off-by: dependabot[bot] <support@github.com>
…t-hooks compiler rules Three issues stacked under this PR: 1. eslint-config-next 16 + @eslint/eslintrc FlatCompat = circular-JSON crash on validate. Migrated all 8 apps from FlatCompat shim to eslint-config-next's native flat exports (./core-web-vitals, ./typescript). Two apps (chain-landing, solux) were already on the new pattern; rest weren't. 2. eslint ^10 (just released) breaks eslint-plugin-react@7.37 with 'contextOrFilename.getFilename is not a function'. Plugin ecosystem hasn't caught up. Pinned eslint back to ^9 across all packages — keeps eslint-config-next 16 / @types/node 25 / typescript 6 from the tooling group bump. 3. eslint-plugin-react-hooks v6 (pulled by eslint-config-next 16) ships new react-compiler rules: preserve-manual-memoization / purity / refs / set-state-in-effect / static-components / use-memo. ~30 real violations across the monorepo, all genuine refactors. Disabled with TODO until the React 19 / compiler refactor lands — matches the prior eslint.ignoreDuringBuilds discipline.
TS 6 + the tooling-group bump made tsc stricter about side-effect imports (`import "./globals.css"`). The CSS module declaration that allows them comes from `next-env.d.ts` which Next.js auto-generates — but that file is gitignored and only emitted after `next build`. CI runs `pnpm typecheck` before `next build`, so each app would error with TS2882 on the layout.tsx CSS import. Added `apps/<app>/globals.d.ts` with the same triple-slash refs plus an explicit `declare module "*.css"`. Bundled with the existing tooling-group bump (#73). Verified typecheck passes locally for airdrop, coinblast, dex, faucet, landing, scan.
c5f929c to
f5bbb02
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
apps/chain-landing/eslint.config.mjs (1)
16-22: ⚡ Quick winAdd a tracked re-enable reference for temporary hook-rule disables.
Line 16 has a TODO, but no issue/ticket reference. Please add a tracking ID (or target milestone/date) so these rules don’t silently stay off long-term.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/chain-landing/eslint.config.mjs` around lines 16 - 22, The TODO comment above the temporary ESLint disables (the block containing "react-hooks/preserve-manual-memoization", "react-hooks/purity", "react-hooks/refs", "react-hooks/set-state-in-effect", "react-hooks/static-components", "react-hooks/use-memo") needs a tracked re-enable reference; update the TODO to include an issue or ticket ID (or target milestone/date) so these rules are not left disabled indefinitely—for example, change the comment to "TODO: re-enable once the React 19 / react-compiler refactor lands. Track: <ISSUE-1234 or 2026-07-01>" so reviewers can trace when to re-enable these rules.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/coinblast/package.json`:
- Around line 35-41: The package.json currently pins eslint-config-next to
16.2.6 which is incompatible with next@15.5.18; update the dependency entry for
eslint-config-next to a 15.x release (e.g., "eslint-config-next": "15.x") to
align with Next.js 15, then reinstall dependencies (npm/yarn/pnpm) and verify
there are no peerDependency warnings; keep other entries like typescript and
`@types/node` as-is.
---
Nitpick comments:
In `@apps/chain-landing/eslint.config.mjs`:
- Around line 16-22: The TODO comment above the temporary ESLint disables (the
block containing "react-hooks/preserve-manual-memoization",
"react-hooks/purity", "react-hooks/refs", "react-hooks/set-state-in-effect",
"react-hooks/static-components", "react-hooks/use-memo") needs a tracked
re-enable reference; update the TODO to include an issue or ticket ID (or target
milestone/date) so these rules are not left disabled indefinitely—for example,
change the comment to "TODO: re-enable once the React 19 / react-compiler
refactor lands. Track: <ISSUE-1234 or 2026-07-01>" so reviewers can trace when
to re-enable these rules.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 8d366f39-fbda-42b7-bed9-34424bbfcf06
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (30)
apps/airdrop/eslint.config.mjsapps/airdrop/globals.d.tsapps/airdrop/package.jsonapps/airdrop/tsconfig.jsonapps/chain-landing/eslint.config.mjsapps/chain-landing/package.jsonapps/coinblast/eslint.config.mjsapps/coinblast/globals.d.tsapps/coinblast/package.jsonapps/coinblast/tsconfig.jsonapps/dex/eslint.config.mjsapps/dex/globals.d.tsapps/dex/package.jsonapps/dex/tsconfig.jsonapps/faucet/eslint.config.mjsapps/faucet/globals.d.tsapps/faucet/package.jsonapps/faucet/tsconfig.jsonapps/landing/eslint.config.mjsapps/landing/globals.d.tsapps/landing/package.jsonapps/landing/tsconfig.jsonapps/scan/eslint.config.mjsapps/scan/globals.d.tsapps/scan/package.jsonapps/scan/tsconfig.jsonapps/solux/eslint.config.mjsapps/solux/package.jsonpackage.jsonpackages/wallet-config/package.json
✅ Files skipped from review due to trivial changes (15)
- apps/scan/package.json
- apps/coinblast/globals.d.ts
- package.json
- apps/dex/globals.d.ts
- apps/scan/tsconfig.json
- apps/airdrop/globals.d.ts
- apps/chain-landing/package.json
- apps/landing/globals.d.ts
- apps/coinblast/tsconfig.json
- apps/faucet/package.json
- apps/airdrop/tsconfig.json
- apps/faucet/tsconfig.json
- apps/landing/package.json
- apps/landing/tsconfig.json
- apps/scan/globals.d.ts
🚧 Files skipped from review as they are similar to previous changes (8)
- apps/dex/eslint.config.mjs
- apps/solux/package.json
- apps/airdrop/package.json
- apps/dex/package.json
- packages/wallet-config/package.json
- apps/solux/eslint.config.mjs
- apps/airdrop/eslint.config.mjs
- apps/landing/eslint.config.mjs
| "@types/node": "^25", | ||
| "@types/react": "^19", | ||
| "@types/react-dom": "^19", | ||
| "eslint": "^9", | ||
| "eslint-config-next": "15.5.15", | ||
| "eslint-config-next": "16.2.6", | ||
| "tailwindcss": "^4", | ||
| "typescript": "^5" | ||
| "typescript": "^6" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== coinblast package versions =="
jq -r '{
name,
next: .dependencies.next,
eslint: .devDependencies.eslint,
eslintConfigNext: .devDependencies["eslint-config-next"],
typescript: .devDependencies.typescript,
typesNode: .devDependencies["@types/node"]
}' apps/coinblast/package.json
echo
echo "== Node runtime declarations in repo (.nvmrc/.node-version/package.json engines.node) =="
fd -HI '(^\.nvmrc$|^\.node-version$|^package\.json$)' | while read -r f; do
case "$f" in
*.nvmrc|*.node-version)
printf '%s: %s\n' "$f" "$(tr -d '\n' < "$f")"
;;
*package.json)
jq -r 'select(.engines.node? != null) | "\(input_filename): engines.node=\(.engines.node)"' "$f" || true
;;
esac
done
echo
echo "== CI Node setup references =="
rg -n --iglob '*.yml' --iglob '*.yaml' 'setup-node|node-version|node-version-file' .github || trueRepository: Sentriscloud/frontend
Length of output: 539
🌐 Web query:
Is eslint-config-next@16.2.6officially compatible withnext@15.5.xandeslint@9.x?
💡 Result:
No, eslint-config-next@16.2.6 is not officially compatible with next@15.5.x. The package versioning aligns with Next.js major versions: eslint-config-next 15.x is for Next.js 15.x [1][2][3], while 16.x (including 16.2.6, published May 7, 2026 [4][5]) is for Next.js 16 [6][7][8]. Next.js 16 introduces breaking changes to ESLint support, defaulting to flat config and removing next lint [6][7]. Using 16.x with Next.js 15 may cause peer dependency conflicts, as seen when third-party configs expect @next/eslint-plugin-next ^15.0.0 but find v16 [8]. For ESLint 9.x, Next.js 15 supports it with specific flat config setups [9][10][11], but eslint-config-next@16.2.6's flat config changes [6] are optimized for Next.js 16. Official docs recommend matching eslint-config-next version to Next.js version [7][1].
Citations:
- 1: fix(nextjs): update default
eslint-config-nextto match Next.js 15 nrwl/nx#30258 - 2: https://github.com/vercel/next.js/commits/v15.5.2/packages/eslint-config-next
- 3: https://newreleases.io/project/npm/eslint-config-next/release/15.5.0
- 4: https://npmx.dev/package/eslint-config-next/v/%3E=16.0.0
- 5: https://www.npmjs.com/package/eslint-config-next?activeTab=versions
- 6: [eslint-config] [Breaking] Use Flat config by default vercel/next.js#84874
- 7: https://nextjs.org/docs/app/api-reference/config/eslint
- 8: Support @next/eslint-plugin-next > 15 eslint-config/airbnb-extended#42
- 9: https://stackoverflow.com/questions/79128326/eslint-9-is-not-working-properly-with-next-15
- 10: https://nextjs.im/docs/15/app/api-reference/config/eslint/
- 11: https://stackoverflow.com/questions/79119287/proper-eslint-configuration-under-nextjs-15
🌐 Web query:
Is TypeScript 6.x officially supported by Next.js 15.5.x?
💡 Result:
Yes—Next.js 15.5.x is compatible with (and effectively supported for) TypeScript 6.x. Next.js’s official docs specify a minimum TypeScript version of 5.1.0 for TypeScript support, not a maximum version [1]. That means TypeScript 6.x is within the supported range as far as Next.js’s published minimum requirement goes. Additionally, Next.js’s own development history includes a merged PR titled “Bump TypeScript to 6.0”, indicating the Next.js codebase (and associated tooling like type checking) was updated to work with TypeScript 6.0 on their side [2]. Conclusion: there is no Next.js 15.5.x “not supported” restriction against TypeScript 6.x in the official minimum-version guidance [1], and Next.js maintainers have explicitly bumped/validated TypeScript 6.0 in their project [2].
Citations:
- 1: https://nextjs.org/docs/14/getting-started/installation
- 2: Bump TypeScript to 6.0 vercel/next.js#91257
Downgrade eslint-config-next to version 15.x for compatibility with Next.js 15.5.18.
Line 39 declares eslint-config-next@16.2.6, but this is incompatible with next@15.5.18. The eslint-config-next package versions align with Next.js major versions: 15.x for Next.js 15, and 16.x for Next.js 16. Using 16.2.6 with Next.js 15.5.18 introduces peer dependency conflicts due to Next.js 16's breaking changes to ESLint configuration. Change to eslint-config-next@15.x to match the deployed Next.js version.
TypeScript 6.x (line 41) and @types/node@^25 (line 35) are compatible with Next.js 15.5.18 and Node 20.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/coinblast/package.json` around lines 35 - 41, The package.json currently
pins eslint-config-next to 16.2.6 which is incompatible with next@15.5.18;
update the dependency entry for eslint-config-next to a 15.x release (e.g.,
"eslint-config-next": "15.x") to align with Next.js 15, then reinstall
dependencies (npm/yarn/pnpm) and verify there are no peerDependency warnings;
keep other entries like typescript and `@types/node` as-is.
Bumps the tooling group with 4 updates in the / directory: typescript, @types/node, eslint and eslint-config-next.
Updates
typescriptfrom 5.9.3 to 6.0.3Release notes
Sourced from typescript's releases.
Commits
050880cBump version to 6.0.3 and LKGeeae9dd🤖 Pick PR #63401 (Also check package name validity in...) into release-6.0 (#...ad1c695🤖 Pick PR #63368 (Harden ATA package name filtering) into release-6.0 (#63372)0725fb4🤖 Pick PR #63310 (Mark class property initializers as...) into release-6.0 (#...607a22aBump version to 6.0.2 and LKG9e72ab7🤖 Pick PR #63239 (Fix missing lib files in reused pro...) into release-6.0 (#...35ff23d🤖 Pick PR #63163 (Port anyFunctionType subtype fix an...) into release-6.0 (#...e175b69Bump version to 6.0.1-rc and LKGaf4caacUpdate LKG8efd7e8Merge remote-tracking branch 'origin/main' into release-6.0Updates
@types/nodefrom 20.19.41 to 25.7.0Commits
Updates
eslintfrom 9.39.4 to 10.3.0Release notes
Sourced from eslint's releases.
... (truncated)
Commits
788920410.3.05b69b4fBuild: changelog update for 10.3.0d32235eci: use pnpm ineslint-flat-config-utilstype integration test (#20826)b6ae5cffix: handle unavailable require cache (#20812)3ffb14echore: clean up typos in comments and JSDoc (#20821)6fb3685fix: rule suggestions cause continuation in class body (#20787)22eb58achore: add missing continue-on-error to ecosystem-tests.yml (#20818)88bf002ci: bump pnpm/action-setup from 6.0.1 to 6.0.3 (#20815)379571afeat: add suggestions for no-unused-private-class-members (#20773)97c8c33chore: update ilshidur/action-discord action to v0.4.0 (#20811)Updates
eslint-config-nextfrom 15.5.15 to 16.2.6Release notes
Sourced from eslint-config-next's releases.
... (truncated)
Commits
ee6e79bv16.2.6766148fv16.2.52275bd8v16.2.4d5f649bv16.2.352faae3v16.2.2ed7d2cev16.2.1c5c94dfv16.2.03683192v16.2.0-canary.1046689814v16.2.0-canary.103ad66dbcv16.2.0-canary.102Maintainer changes
This version was pushed to npm by GitHub Actions, a new releaser for eslint-config-next since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore <dependency name> major versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)@dependabot ignore <dependency name> minor versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)@dependabot ignore <dependency name>will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)@dependabot unignore <dependency name>will remove all of the ignore conditions of the specified dependency@dependabot unignore <dependency name> <ignore condition>will remove the ignore condition of the specified dependency and ignore conditionsSummary by CodeRabbit