chore: update maintenance dependencies#635
Conversation
|
Deployment failed with the following error: Learn More: https://vercel.com/afc163s-projects?upgradeToPro=build-rate-limit |
|
Warning Review limit reached
Next review available in: 45 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (8)
✨ 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 |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub. |
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
Code Review
This pull request upgrades the project to React 19, TypeScript 6, and ESLint 9, alongside updating Dependabot configurations and README files. Feedback on these changes highlights several concerns: disabling strict type-checking in tsconfig.json and using react-compat.d.ts to restore removed React types both compromise type safety and mask compatibility issues. Additionally, typing test globals as any in global.d.ts overrides Jest's strong types, and the runtime patching of ESLint rules in eslint.config.mjs is fragile compared to a direct flat config migration.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| "ignoreDeprecations": "6.0", | ||
| "noImplicitAny": false, | ||
| "strictNullChecks": false, | ||
| "strictPropertyInitialization": false, | ||
| "strictFunctionTypes": false, | ||
| "strict": false, | ||
| "noImplicitThis": false, | ||
| "strictBindCallApply": false |
There was a problem hiding this comment.
Disabling strict type-checking flags (strict, strictNullChecks, noImplicitAny, etc.) is a major regression in type safety. While upgrading to TypeScript 6 and React 19 might introduce new type mismatches, disabling these checks globally hides potential runtime bugs and reduces the maintainability of the codebase.
Instead of disabling these checks, please keep strict: true (or at least do not explicitly disable them) and resolve the type errors directly in the code or via proper type assertions/refactoring.
"ignoreDeprecations": "6.0"| import * as React from 'react'; | ||
|
|
||
| declare module 'react' { | ||
| type ReactText = string | number; | ||
| function useRef<T = undefined>(): React.MutableRefObject<T | undefined>; | ||
| function isValidElement<P = any>(object: {} | null | undefined): object is React.ReactElement<P>; | ||
| function cloneElement<P = any>( | ||
| element: React.ReactElement<P>, | ||
| props?: (Partial<P> & React.Attributes) | null, | ||
| ...children: React.ReactNode[] | ||
| ): React.ReactElement<P>; | ||
| } | ||
|
|
||
| declare module 'react-dom' { | ||
| function hydrate(element: React.ReactNode, container: Element | DocumentFragment): void; | ||
| } |
There was a problem hiding this comment.
Creating a global module augmentation (react-compat.d.ts) to restore removed React types (like ReactText) and deprecated/removed APIs (like react-dom's hydrate) is highly discouraged.
This approach:
- Masks compatibility issues: It hides the fact that the codebase is using APIs removed in React 19 (e.g.,
hydrateshould be migrated tohydrateRootfromreact-dom/client). - Pollutes types: These global overrides can leak or cause conflicts with other type definitions in the project or for downstream consumers.
- Reduces type safety: Overriding core React type definitions like
useRef,isValidElement, andcloneElementwith looser types can introduce subtle type bugs.
Recommended approach:
- Replace
ReactTextwithstring | numberdirectly in the source files where it is used. - Migrate any usage of
hydratetohydrateRootfromreact-dom/client. - Avoid overriding core React type definitions.
| declare const describe: any; | ||
| declare const it: any; | ||
| declare const test: any; | ||
| declare const beforeEach: any; | ||
| declare const afterEach: any; | ||
| declare const beforeAll: any; | ||
| declare const afterAll: any; | ||
| declare const expect: any; |
There was a problem hiding this comment.
Declaring test globals (describe, it, test, beforeEach, etc.) as any overrides the strongly-typed definitions provided by @types/jest (referenced on line 1). This disables type safety and autocompletion in your test files.
If you are using Jest, these declarations are redundant and should be removed. If you are using Vitest, you should reference/import the proper Vitest types instead of typing them as any.
| const recommendedTsRules = new Set(Object.keys(tsEslintPlugin.configs.recommended.rules || {})); | ||
| const noopRule = { | ||
| meta: { type: 'problem', docs: {}, schema: [] }, | ||
| create: () => ({}), | ||
| }; | ||
|
|
||
| function normalizeConfig(config) { | ||
| const next = { ...config }; | ||
|
|
||
| if (next.plugins?.['@typescript-eslint']) { | ||
| next.plugins = { | ||
| ...next.plugins, | ||
| '@typescript-eslint': { | ||
| ...next.plugins['@typescript-eslint'], | ||
| rules: { | ||
| ...next.plugins['@typescript-eslint'].rules, | ||
| 'ban-types': noopRule, | ||
| }, | ||
| }, | ||
| }; | ||
| } | ||
|
|
||
| if (next.rules) { | ||
| next.rules = Object.fromEntries( | ||
| Object.entries(next.rules).filter(([ruleName]) => { | ||
| if (!ruleName.startsWith('@typescript-eslint/')) { | ||
| return true; | ||
| } | ||
| return recommendedTsRules.has(ruleName) || ruleName === '@typescript-eslint/ban-types'; | ||
| }), | ||
| ); | ||
| } | ||
|
|
||
| return next; | ||
| } |
There was a problem hiding this comment.
The normalizeConfig function and the runtime mocking of @typescript-eslint rules/plugins are highly complex and fragile. This runtime patching is done to bridge the legacy .eslintrc.js with ESLint 9 flat config, but it introduces maintenance overhead and can easily break with future updates of @typescript-eslint or ESLint.
Recommended approach:
Instead of using FlatCompat with a complex custom mapper, consider migrating the legacy .eslintrc.js directly to the new ESLint flat config format in eslint.config.mjs. This would allow you to:
- Clean up deprecated/removed rules (like
ban-types) cleanly. - Use the official
@typescript-eslintflat config configurations directly (e.g.,tseslint.configs.recommended). - Avoid complex runtime helper functions and custom rule mocking.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #635 +/- ##
=======================================
Coverage 97.28% 97.28%
=======================================
Files 17 17
Lines 956 956
Branches 274 278 +4
=======================================
Hits 930 930
Misses 26 26 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
❌ Deploy failed
📋 Build log (last lines)🤖 Powered by surge-preview |
|||||||||
|
React Doctor skipped this pull request — it changed no React files. Reviewed by React Doctor for commit |

Summary
Test Plan