v16.5.0-canary.29
- Create cache directory before persisting Chrome DevTools workspace UUID: #100802
- Upgrade React from
ab0d927f-20261020todc9aed36-20261027: #100791 - [testmode] Fix compressed HTTP responses with test proxy: #100805
- chore(deps): bump sharp@0.35.5: #99714
- Turbopack: Auto-detect pnpm GVS and configure an additional root for it: #99758
- Persist storage cache in Docker environments: #100790
- Persist fully static PPR payloads in filesystem cache: #100759
- Stamp FileSystemCache revalidations and entries with the monotonic clock: #100357
- examples: add eve example: #100758
- turbo-bitset: make block storage pluggable: #100779
- Use fixed encoding for our 'id' types: #100764
- [RFC] Remove worktree guidance from AGENTS.md: #100659
- eval: resolve and classify the audit suite: #100748
- turbo-tasks-backend: resolve task priority when creating child contexts: #100767
- Add server-only leak pass to next-bundle-optimizer: #100330
- Turbopack: Fix webpack loaders if source file exists in an additional root: #100744
- [CI] fix incorrect VERCEL_TEST_PROJECT in non-cache-components deploy…: #100788
- ci: run changed deploy tests with both builders: #100591
- Turbopack: compute client reference manifest parts once per reference, not per page: #100443
- turbo-bitset: remove FixedBitSet and RoaringBitmap comparisons: #100724
- turbopack: use Bitset for persisted chunk group sets: #100630
- turbopack: use Bitset in compute_merged_modules: #100568
- turbopack: use Bitset in collect_graph: #100567
- turbopack: use Bitset in compute_chunk_group_info: #100643
- turbo-bitset: add Bitset, a fast bitset over a bounded bit range: #100566
- turbopack: speed up and share reverse postorder ranks: #100452
- test: remove some more dev/prod gating: #100717
- ci: Only run upload-adapter-test-results on release: #100595
- Optimize persistence CPU: #100737
- eval: split Next.js evals by purpose: #100742
Huge thanks to @sokra, @chadhietala, @lukesandberg, @kassens, @styfle, @aurorascharff, @wbinnssmith, @bgw, @namtran1812, @skrabe, and @mischnic for helping!
v9.3.1
This bugfix release fixes connect type inference under TS 7, fixes several connect and Provider runtime bugs, adds dev-mode logging for errors thrown in mapStateToProps, and updates our build tooling and TypeScript support matrix.
[!WARNING] While
connectis still published and technically supported, we officially deprecatedconnectin 9.3.0 and strongly recommend migrating to use the hooks APIs instead.
We had reports that connect sometimes inferred the wrong props when mapStateToProps or mapDispatchToProps was a factory function. The connected component's props would collapse to {}, and a required prop would show up as "missing" at the call site.
Turns out the connect overloads typed those arguments as unions of the factory form (() => (state) => props) and the plain form. TS7 changed the ordering of which union member got selected, so this broke.
As Anders suggested in microsoft/typescript-go#977, we've split those unions into separate overloads listed in order of preference, factory form first. Overload matching no longer depends on how the compiler orders a union. We then applied the same fix to the mergeProps overloads, which still failed under TS 7.
Provider now uses serverState when it's a falsy value like 0, false, or ''. Previously it checked for truthiness, so a falsy root state fell back to the client store's state during SSR and hydration. null and undefined are still treated as "no server state".
A connected component's context prop is now honored in production. The assignment that picked up the custom context sat inside the development-only validation block. In production, a component with only a custom provider would throw, and one rendered under both providers would read the default provider's store.
connect no longer overrides a ref passed as a regular prop when forwardRef isn't enabled (#2251). With React 19's ref-as-prop, the wrapper was always passing its own ref (undefined without forwardRef), which replaced the one you passed in.
An explicit dependsOnOwnProps = false on a mapStateToProps or mapDispatchToProps function is now respected. We had been ignoring it for functions declared with two parameters, even though the option exists specifically for functions whose length isn't reliable.
Rendering <Provider> in a React Server Component without "use client" now throws a clear dev-mode error that tells you what's wrong, instead of failing with "useIsomorphicLayoutEffect is not a function" (#2082). Setups that resolve the react-server export condition already got a clear error. This covers the setups that don't.
Since v8, an error thrown in mapStateToProps during a store update has been caught in the subscription callback and then effectively swallowed. The component just kept rendering its previous props (#1942). connect now logs those errors to console.error in development, so they show up in DevTools. Production behavior is unchanged.
The internal NoInfer helper type has been replaced with TypeScript's built-in NoInfer, which was added in TS 5.4. That makes TS 5.4 the minimum version for React-Redux's types. Our CI matrix now covers TS 5.6 through 5.9, 6.0, 7.0, and next.
We've moved the repo to pnpm, Oxlint, and Oxfmt, and switched the library build from tsup to tsdown. The package exports layout is unchanged, but the build output comes from a different bundler. If you see any packaging or import problems with this release, please file an issue.
- ci: publish preview packages via
pkg.pr.newby @aryaemami59 in https://github.com/reduxjs/react-redux/pull/2323 - chore(deps): update
vitestto latest version by @aryaemami59 in https://github.com/reduxjs/react-redux/pull/2317 - fix(
connect): logmapStateToPropserrors toconsole.errorin dev (#1942) by @webdevelopersrinu in https://github.com/reduxjs/react-redux/pull/2306 - feat!: switch to native
NoInferutility type by @aryaemami59 in https://github.com/reduxjs/react-redux/pull/2316 - fix(
connect): splitmapStateToProps/mapDispatchToPropsunions into ordered overloads (#2244) by @veksa in https://github.com/reduxjs/react-redux/pull/2340 - Modern Tooling, Part 1: PNPM by @markerikson in https://github.com/reduxjs/react-redux/pull/2379
- Fix TS7 errors and update TS matrix by @markerikson in https://github.com/reduxjs/react-redux/pull/2407
- fix(
Provider): throw a clearer error when rendered in a React Server Component (#2082) by @veksa in https://github.com/reduxjs/react-redux/pull/2342 - fix: respect falsy server snapshots and production context overrides by @OskarEichler in https://github.com/reduxjs/react-redux/pull/2389
- Don't override ref property when not configured to. by @PSpSynedra in https://github.com/reduxjs/react-redux/pull/2252
- fix: honour explicit
dependsOnOwnProps=falsein getDependsOnOwnProps by @JSap0914 in https://github.com/reduxjs/react-redux/pull/2331
Full Changelog: https://github.com/reduxjs/react-redux/compare/v9.3.0...v9.3.1
v8.5.1
See the changelog for release notes: https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v851
v7.18.5
See the changelog for release notes: https://github.com/remix-run/react-router/blob/v7/CHANGELOG.md#v7185
v3.5.0
Fixes
- clip: fold culled block siblings into one spacer per run
#549 - prepare: reset the capture root's self-alignment
#548 - counter: render none, disc, circle and square counter styles
#547 - counter: keep commas and parentheses inside the counters() separator
#546 - background: ignore parentheses inside quoted url() when splitting layers
#545 - engine: make html-in-canvas safe and as exact as the svg engine
069bacf - images: keep a failed image's box and warn on tainted canvases
80f4898 - fonts: stop waiting on a Safari font set stuck at loading
0e4b5dd - clip: start a fractional clip on the output pixel grid
f9d23d0 - toCanvas: wait for nested svg images before drawing on Firefox
171350b - stream: report only dirty rects inside the canvas
f9302d4 - stream: keep a patch inside the ancestors that clip its host
eed95f9 - plugins: export the ascii helpers from the barrel and type toStream
de84e5c
Performance
- fonts: embed a near-weight face only where it can paint
ad2bd88 - fonts: leave out webfont families the page never drew
59e0f8a - fonts: warm only the font variants a Safari capture uses
3e92aba
- @Pharex38 made their first contribution in https://github.com/zumerlab/snapdom/pull/545
Full Changelog: https://github.com/zumerlab/snapdom/compare/v3.4.0...v3.5.0
electron v44.10.0
- Added filtering options to
session.registerPreloadScript-matches,excludeMatches,includeGlobs,excludeGlobs,matchOriginAsFallback. #55182 (Also in 45)
- Fixed a crash on Linux when a D-Bus method call was made on a disconnected bus. #55290 (Also in 45, 46)
- Fixed a main process crash when
onSendHeadersobserved Blob uploads. #55168 (Also in 45) - Fixed
app.getLoginItemSettings()not finding login items on Windows when the executable path contains spaces. #55207 (Also in 45) - Fixed Europe/London and Europe/Dublin time zone names showing as "GMT+00:00" in winter by updating ICU to tzdata 2026e. #55335
- Fixed File System Access blocklist gaps for
.git/hookswrites and hypervisor UNC shares. #55330 - Fixed handling of malformed asar archives whose size fields do not match the file length. #55176 (Also in 43, 45)
- Fixed inconsistent handling of asar archive paths between the main process and child processes. #55183 (Also in 43, 45)
- Fixed
Menu.popup()on macOS sometimes not showing a menu after another closed. #55325 (Also in 45, 46) - Fixed MV3 extension events not arriving to background service workers. #55152 (Also in 43, 45)
- Fixed paste hanging indefinitely on Linux X11 until the app was restarted. #55327
- Fixed
protocol.registerSourceschemes not applying the same fetch rules asprotocol.handleschemes. #55177 (Also in 45) - Fixed
utilityProcessnot emitting anexitevent when the app quit while the process was still launching. #55273 (Also in 43, 45, 46)
electron v43.8.4
- Backported fix for a macOS File System Access blocklist bypass via
/System/Volumes/Datapaths. #54677 - Fixed Europe/London and Europe/Dublin time zone names showing as "GMT+00:00" in winter by updating ICU to tzdata 2026e. #55336
- Fixed File System Access blocklist gaps for
.git/hookswrites and hypervisor UNC shares. #55331 - Fixed handling of malformed asar archives whose size fields do not match the file length. #55179 (Also in 44, 45)
- Fixed inconsistent handling of asar archive paths between the main process and child processes. #55185 (Also in 44, 45)
- Fixed MV3 extension events not arriving to background service workers. #55153 (Also in 44, 45)
- Fixed
utilityProcessnot emitting anexitevent when the app quit while the process was still launching. #55272 (Also in 44, 45, 46)
- Updated Node.js to v24.22.1. #55161
electron v45.1.0
- Added filtering options to
session.registerPreloadScript-matches,excludeMatches,includeGlobs,excludeGlobs,matchOriginAsFallback. #55181 (Also in 44)
- Fixed a crash on Linux when a D-Bus method call was made on a disconnected bus. #55292 (Also in 44, 46)
- Fixed a main process crash when
onSendHeadersobserved Blob uploads. #55169 (Also in 44) - Fixed extension
chrome.webRequestevents reporting atabIdof-1andchrome.declarativeNetRequestrules restricted to tabs never matching. #55283 (Also in 46)- Fixed
session.clearStorageData()unregistering the service workers of loaded extensions. - Fixed
chrome.managementmethods and events being unavailable to extensions with themanagementpermission. - Fixed
__MSG_*__placeholders not being localized in extension stylesheets. - Fixed extension service workers being stopped after 30 seconds while a WebSocket was active.
- Fixed sandboxed extension pages being hosted in a process with extension API privileges.
- Fixed extension service workers running an outdated script after an app restart when the extension's files changed without a version change.
- Fixed
chrome.alarmsand content scripts registered withpersistAcrossSessionsnot persisting across app restarts.
- Fixed
- Fixed File System Access blocklist gaps for
.git/hookswrites and hypervisor UNC shares. #55329 - Fixed handling of malformed asar archives whose size fields do not match the file length. #55175 (Also in 43, 44)
- Fixed inconsistent handling of asar archive paths between the main process and child processes. #55184 (Also in 43, 44)
- Fixed
Menu.popup()on macOS sometimes not showing a menu after another closed. #55326 (Also in 44, 46) - Fixed MV3 extension events not arriving to background service workers. #55154 (Also in 43, 44)
- Fixed
protocol.registerSourceschemes not applying the same fetch rules asprotocol.handleschemes. #55178 (Also in 44) - Fixed requests stalling when an extension used a blocking
chrome.webRequestlistener. #55271 (Also in 46) - Fixed
utilityProcessnot emitting anexitevent when the app quit while the process was still launching. #55274 (Also in 43, 44, 46)
mobx@7.1.3
78f3fa555a9481247c6f463d77ed3e59766599e2#4756 Thanks @kubk! - Fixsuperreads of a 2022.3@computedgetter returning the subclass override when that override had not been read yet on the instance.