Repository navigation
fix(deps): update react monorepo (major) - #3806
renovate[bot] wants to merge 1 commit into
Conversation
23de69e to
3ff3ac0
Compare
3ff3ac0 to
9506bc7
Compare
9506bc7 to
04b883f
Compare
abf9535 to
76df768
Compare
| "react-router": "^4.1.1", | ||
| "react-router-dom": "^4.1.1", |
There was a problem hiding this comment.
Bug: The application uses react-router v4, which is incompatible with React 19 due to breaking changes in ref handling and useEffect timing, likely causing runtime failures.
Severity: HIGH
Suggested Fix
Upgrade react-router and react-router-dom from version 4 to a modern version that is compatible with React 19, such as version 6. This will require migrating the application's routing logic to the new APIs provided by the updated library.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: package.json#L92-L93
Potential issue: The application is being upgraded to React 19 but continues to use
`react-router` v4.3.1. This version of `react-router` is not compatible with React 19
due to breaking changes in the new React version, specifically stricter ref forwarding
rules and updates to `useEffect` timing. Since routing is a critical part of the
application, using this incompatible library is highly likely to cause runtime failures
when routing components like `<Route>`, `<Switch>`, or `<Redirect>` are rendered.
76df768 to
dba86e5
Compare
| "react-dom": "^19.0.0", | ||
| "react-ga": "^2.2.0", | ||
| "react-google-recaptcha": "^1.0.5", | ||
| "react-hot-loader": "^4.8.0", |
There was a problem hiding this comment.
Bug: The application uses ReactDOM.render(), which is removed in React 19 and will cause a runtime crash on startup.
Severity: CRITICAL
Suggested Fix
Migrate from the legacy ReactDOM.render() API to the modern createRoot API available in react-dom/client. This involves creating a root with createRoot(container) and then using root.render(<App />) to render the application.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: package.json#L88
Potential issue: The application's entry points, including `static/js/entry/header.js`
and `static/js/entry/root.js`, utilize the `ReactDOM.render()` API. This function was
deprecated in React 18 and has been completely removed in React 19. As a result,
attempting to render the application will cause an immediate runtime error, specifically
a `TypeError: ReactDOM.render is not a function`, which will prevent the application
from starting.
dba86e5 to
55b669f
Compare
| "react-markdown": "^5.0.3", | ||
| "react-picky": "^5.3.2", | ||
| "react-redux": "^5.0.5", | ||
| "react-router": "^4.1.1", |
There was a problem hiding this comment.
Bug: The react-redux package version ^5.0.5 is incompatible with the upgrade to React 19, which will cause the application to crash at runtime.
Severity: CRITICAL
Suggested Fix
Upgrade the react-redux package to a version that is compatible with React 19. According to the library's documentation, version 9 or newer is required for React 18+ and supports React 19.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: package.json#L92
Potential issue: The application is being upgraded to React 19, but the `react-redux`
dependency remains at version 5.0.5. This version of `react-redux` is incompatible with
React 19 as it relies on internal APIs and lifecycle methods that have been changed or
removed. This incompatibility will cause a runtime failure when the root `Provider`
component and any components using the `connect()` HOC attempt to render. The result
will be a crash on application initialization, making the application non-functional.
8416b03 to
0765e82
Compare
| "react-test-renderer": "^19.0.0", | ||
| "reactstrap": "^8.0.0", | ||
| "redux": "^3.7.2", | ||
| "redux-actions": "^2.2.1", |
There was a problem hiding this comment.
Bug: The styled-components version (^4.2.0) is incompatible with React 19's new ref handling, which will likely cause a runtime error in the ScaledRecaptcha component.
Severity: HIGH
Suggested Fix
Upgrade the styled-components package to a version that is compatible with React 19, such as version 6 or later, to ensure correct ref forwarding and prevent runtime errors.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: package.json#L98
Potential issue: The application is being upgraded to React 19, but the
`styled-components` dependency remains at version 4. React 19 introduces a breaking
change in how `ref` props are handled, which is incompatible with older versions of
`styled-components`. The codebase uses a `ref` on a styled component within
`ScaledRecaptcha.js`, which is part of the user registration flow. This mismatch will
likely cause a runtime failure when this component renders, breaking the registration
process for users.
0765e82 to
68381cd
Compare
| "react-dom": "^19.0.0", | ||
| "react-ga": "^2.2.0", | ||
| "react-google-recaptcha": "^1.0.5", | ||
| "react-hot-loader": "^4.8.0", |
There was a problem hiding this comment.
Bug: The application uses react-hot-loader, which is deprecated and unsupported for React 19. This poses a compatibility risk and may cause issues, especially in development.
Severity: MEDIUM
Suggested Fix
Remove react-hot-loader and its related code, including imports in header.js and root.js, and the Babel plugin in webpack.config.shared.js. Replace it with React Fast Refresh, which is the modern, officially supported solution for hot reloading in React applications.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: package.json#L88
Potential issue: The application uses `react-hot-loader`, which is deprecated and does
not have documented support for React 18 or 19. While hot-reloading is a
development-only feature, the `AppContainer` wrapper from this library is still present
in the production bundle. This introduces a risk of unexpected behavior or rendering
issues due to potential incompatibilities with React 19's internal APIs. Although a
production crash is not confirmed, relying on a deprecated and unsupported package for a
core application wrapper is a significant maintenance and stability concern.
68381cd to
15673f9
Compare
| "react-router": "^4.1.1", | ||
| "react-router-dom": "^4.1.1", | ||
| "react-select": "^5.0.0", | ||
| "react-test-renderer": "^16.8.4", | ||
| "react-test-renderer": "^19.0.0", | ||
| "reactstrap": "^8.0.0", |
There was a problem hiding this comment.
Bug: The application uses react-router v4 and reactstrap v8, which are incompatible with React 19 and will cause runtime errors, preventing the application from starting.
Severity: CRITICAL
Suggested Fix
Upgrade react-router and react-router-dom to a version compatible with React 19, such as v6 or v7. This will likely require significant code refactoring to adapt to the new APIs. Additionally, upgrade reactstrap to a version that supports React 19, likely v9 or newer, which resolves the react-popper dependency issue.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: package.json#L92-L96
Potential issue: The application's dependencies on `react-router` v4 and `reactstrap` v8
are incompatible with the upgrade to React 19. `react-router` v4 relies on deprecated
React APIs that have been removed in React 19, which will cause runtime errors.
`reactstrap` v8 has a dependency on `react-popper`, which has a strict peer dependency
on React 18 and is no longer maintained. This will lead to installation failures or
runtime errors when components from `reactstrap` are rendered. These incompatibilities
will prevent the application from starting or functioning correctly in a production
environment.
a26f978 to
d04b726
Compare
a5b968f to
e5d1041
Compare
e4537f1 to
1fd0027
Compare
0b90f33 to
d281172
Compare
3e1ebfd to
0863717
Compare
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
^5.2.0→^7.0.0^16.8.4→^19.0.0^16.8.4→^19.0.0^16.8.4→^19.0.0Release Notes
facebook/react (eslint-plugin-react-hooks)
v7.1.1Compare Source
Note: 7.1.0 accidentally removed the
component-hook-factoriesrule, causing errors for users who referenced it in their ESLint config. This is now fixed.component-hook-factoriesrule for backwards compatibility. (@mofeiZ in #36307)v7.1.0Compare Source
This release adds ESLint v10 support, improves performance by skipping compilation for non-React files, and includes compiler lint improvements including better
set-state-in-effectdetection, improved ref validation, and more helpful error reporting.useEffectEventchecks in component syntax. (@jbrown215 in #35041)set-state-in-effectvalidation with fewer false negatives. (@jorge-cab in #35134, @josephsavona in #35147, @jackpope in #35214, @chesnokov-tony in #35419, @jsleitor in #36107)v7.0.1Compare Source
useEffectEventvalues as JSX props to guard against accidental propagation. (#34820 by @jf-eirinha)export =so eslint-plugin-react-hooks emits correct types for consumers in Node16 ESM projects. (#34949 by @karlhorky)configs.flatso theconfigsexport is always defined. (#34950 by @poteto)v7.0.0Compare Source
This release slims down presets to just 2 configurations (
recommendedandrecommended-latest), and all compiler rules are enabled by default.recommended-latest-legacyandflat/recommendedconfigs. The plugin now providesrecommended(legacy and flat configs with all recommended rules), andrecommended-latest(legacy and flat configs with all recommended rules plus new bleeding edge experimental compiler rules). (@poteto in #34757)v6.1.1Compare Source
Note: 6.1.0 accidentally allowed use of
recommendedwithout flat config, causing errors when used with ESLint v9'sdefineConfig()helper. This has been fixed in 6.1.1.recommendedconfig for flat config compatibility. Therecommendedconfig has been converted to flat config format. Non-flat config users should userecommended-legacyinstead. (@poteto in #34700)recommended-latestandrecommended-latest-legacyconfigs that include React Compiler rules. (@poteto in #34675)NoUnusedOptOutDirectivesrule. (@poteto in #34703)hermes-parserand dependency. (@poteto in #34719)@babel/plugin-proposal-private-methodsdependency. (@ArnaudBarre and @josephsavona in #34715)v6.1.0Compare Source
Note: Version 6.0.0 was mistakenly released and immediately deprecated and untagged on npm. This is the first official 6.x major release and includes breaking changes.
recommendedpreset. Legacy config moved torecommended-legacy. (@michaelfaith in #32457)usewithin try/catch blocks. (@poteto in #34040)useEffectEventfunctions in arbitrary closures. (@jbrown215 in #33544)React.useEffectin addition touseEffectin rules-of-hooks. (@Ayc0 in #34076)react-hookssettings config option that to acceptadditionalEffectHooksthat are used across exhaustive-deps and rules-of-hooks rules. (@jbrown215) in #34497v6.0.0Compare Source
Accidentally released. See 6.1.0 for the actual changes.
react/react (react)
v19.3.1: 19.3.1 (October 14th, 2026)Compare Source
React Server Components
v19.3.0Compare Source
New React Features
<ViewTransition />: Adds<ViewTransition />andaddTransitionTypeAPIs to power View Transition animations in React (@sebmarkbage, @jackpope, @gaearon: #31975, #31987, #31996, #31999, #32001, #32002, #32028, #32029, #32031, #32034, #32038, #32041, #32050, #32090, #32105, #32254, #32379, #32422, #32462, #32540, #32545, #32585, #32599, #32611, #32612, #32617, #32651, #32653, #32656, #32664, #32699, #32723, #32734, #32751, #32752, #32760, #32761, #32764, #32772, #32790, #32819, #32820, #32822, #32833, #32849, #33094, #33191, #33200, #33206, #33293, #33330, #33331, #33332, #33357, #33362, #33433, #33576, #34374, #34450, #34481, #34500, #34502, #34510, #34511, #34539, #35567, #35564, #35485, #35380, #35063, #35060, #34676, #36917, #35337, #35520)<Fragment />to support composable platform behavior (@jackpope, @sebmarkbage, @eps1lon, @Dhakshin2007, @chirokas, @teamleaderleo, @fallintoplace: #32465, #32613, #32619, #32654, #32660, #32682, #32722, #32813, #32814, #33056, #33058, #33093, #34069, #34103, #34544, #34545, #37062, #37061, #37060, #36047, #36010, #35642, #35641, #35637, #35630, #34935, #37457, #37408, #37326, #37251, #37171, #37169, #37168, #37167, #37166, #37165, #37164, #37163, #37162, #37161, #37160, #37125, #37063)New React DOM Features
browser(): a newreact-domAPI that returns a usable which errors during server rendering and resolves in the browser.use(browser())inside a<Suspense>boundary marks a subtree as browser-only without reporting a recoverable error (@gnoff: #37143, #37241)onBrowserBailoutoption to thereact-dom/serverAPIs to observe when a subtree defers to the browser (@gnoff #37193)Notable changes
use()conditionally (@hoxyq, @eps1lon: #37104, #37203, #37491)All Changes
React
lazy()(@sophiebits #36965)memo()comparison function take effect (@sophiebits #36964)$$typeofin Performance Tracks (@eps1lon #35679)-) instead of en dash for removed props in Performance Tracks (@eps1lon #35649)useSyncExternalStoremissing store mutations that happened while an Activity tree was hidden (@sophiebits #36947)<Activity>trees (@ronnakamoto #34983)<Offscreen>component in error messages (@rickhanlonii #35763)use()(@hoxyq, @eps1lon: #37104, #37203, #37491)useDeferredValuegetting stuck (@gaearon #36134)useActionStateerror message to say "action state" instead of "form state" (@rickhanlonii #35790)getNearestMountedFiber(@sebmarkbage #35578).defaultexport of aReact.lazyas the canonical value (@sebmarkbage #34906)useEffectEventreads latest values inforwardRefandmemo()components (@eps1lon #34831)React DOM
sourceonto the synthetictoggleevent (@lazerg #37389)<select>parser (@josepharhar #34804)defaultValuefortype="number"inputs to match other input types (@sophiebits #36980)innerHTMLwhen it hasn't changed (@sophiebits #36949)nonceoption inReactDOM.preloadModule()(@UditDewan #36851)fetchPriorityfor module resources (@TheAlexLichter #36835)credentiallessiframe attribute (@vmx906 #36322)credentiallessas a recognized boolean attribute for iframes (@vmx906 #36148)finishedTaskfrom callingcompleteAllmultiple times (@gnoff #36287)maskTypeSVG prop (@sleitor #35921)onFullscreenChangeandonFullscreenErrorevents (@chirokas #34621)submitterinsubmitevents (@eps1lon #35590)onResetwhen automatically resetting forms (@eps1lon #35176)FormDatasubmitterparameter (@jenseng #29028)resizeevents until the next frame (@eps1lon #35117)React Server
nonceto rendered import maps (@mattcosta7 #37339)onBrowserBailoutoption to observe subtrees that defer to the browser (@gnoff #37193)react-dom/serverhanging on Deno (@fraidev #35235)nonceattributes (@MaxwellCohen #37030)onAllReadyafter the shell errored (@eps1lon #36903)modulepreloadtracking (@fallintoplace #36564)nextSegmentIdafter the prelude flush (@gaojude #36779)referrerPolicyin image preload headers (@ulises-jeremias #36803)use()of a rejected Flight chunk (@lubieowoce #36544)use()to the owner stack and debug task (@eps1lon #35226)useIdtracking on replay (@gnoff #35518)createSuspenseBoundarypath (@sebmarkbage #35087)react-dom/server(@RiskyMH #34193)React Server Components
RangeErrorfrom exponential debug info growth (@unstubbable #37481)pending_weakto the Flight thenable protocol (@acdlite #37154).thenwithObject.defineProperty(@eps1lon #37109)Promisestatics in debug info (@gaearon #36969)toJSON(NodeBuffer) (@unstubbable #36873)JSON.stringifyfor faster serialization (@mhart #36795)FormDataentries indecodeReplyFromBusboy(@unstubbable #36468)AggregateError.errors(@eps1lon #36156)Blobdeserialization is not aBlob(@eps1lon #36055)Error.cause(@eps1lon #35810)transferReferencedDebugInfoduring debug info resolution (@unstubbable #35795)unstable_allowPartialStreamoption to Flight Client (@unstubbable #35731)encodeReplyfor JSX with temporary references (@unstubbable #35730)renderToPipeableStream(@feedthejim #35724)visitAsyncNodewith deep async chains (@unstubbable #35612)request.timeOriginviaoptions.startTime(@lubieowoce #35598)evalis disabled in the dev environment (@eps1lon #35661)unsafe-eval(@eps1lon #35650)react-markuptypes for server references (@eps1lon #35634)toStringon Server Functions (@sebmarkbage #35345)react-server-dom-webpack/*.unbundledto privatereact-server-dom-unbundled(@eps1lon #35290)thenfunctions in Flight replies (@sebmarkbage #35289)Configuration
📅 Schedule: (in timezone US/Eastern)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.