v2.10.0
- New
duplicatesoption on theimport*()methods of the filesystem API, set to"throw","keep-first"or"keep-last". A zip file stores a flat list of filenames while the filesystem API indexes the entries by path, so two entries can claim the same node of the tree: they can hold the same filename, hold filenames differing only by the path components ignored when building the tree such as"a/b.txt"and"./a/b.txt", or one can be a file and the other a directory holding it such as"a"and"a/b.txt". The three cases are now governed by one option instead of aborting the import in every case. The default stays"throw", an archive holding the same name twice being also the shape making an extractor and a scanner disagree on the file they see."keep-last"is the behavior of most zip tools, verified against Info-ZIP, 7-Zip, libarchive,ditto, Pythonzipfile, fflate and JSZip - The name passed to an
add*()method of the filesystem API is now split into path components, like the filename of an imported entry already was.addText("a/b.txt", text)adds"b.txt"to the"a"directory and creates that directory when it does not exist, instead of adding one entry whose name holds a"/". The directories created that way are implicit, they are not written when the tree is exported, so the exported zip file is unchanged.rename()splits the name the same way and moves the entry accordingly - New
ERR_DUPLICATE_IMPORTED_ENTRYandERR_INVALID_DUPLICATESerrors, and newZipDirectoryEntryImportOptionstype.ERR_DUPLICATE_IMPORTED_ENTRYreplacesERR_ENTRY_EXISTSwhen an import is refused, the former reading as an error made by the caller while the caller only passed a zip file
- A failed import no longer modifies the filesystem. The entries created before the error are removed, and the content the
ZipFSinstance held before the import is restored instead of being discarded before the first entry is read - The
replace*()methods of the filesystem API now update the size of the entry, which kept describing the content held before the call. The archive was written correctly, onlygetExportedSize()was affected: replacing 1 byte of text with 5000 bytes predicted 127 bytes for an export of 5126.replaceReadable()reports an undetermined size, likeaddReadable()does, instead of returning a prediction it cannot make. The five methods also clear the pass-through state of an entry imported with thepassThroughoption, the bytes copied verbatim being gone ZipFS#find()no longer throws aTypeErrorwhen a component of the path it is given is a file entry rather than a directory- Renaming an entry to the name it already has is no longer refused as a collision with itself
- New
Hello world with the filesystem APIexample in the README. The filesystem API needs a single import, infers the Reader and the Writer from the type of the data, and reaches an entry from its name, which is what the five other examples never showed - The encoding limitations of the filename options are now documented
- The conditions making
getExportedSize()unable to predict a size mention that a name holding"/"builds a nested tree
- New tests covering the duplicate filename policies, the rollback of a failed import, the path components built from a name, and the size of an entry whose content is replaced
- The size prediction tests cover the names holding
"/", the two duplicate policies and the entries whose imported content is replaced - The CP437 table is now checked by a test instead of at runtime, and the characters it decodes are written as characters in that test
v16.4.0-canary.16
- test: remove stale deploy manifest exclusions: #98051
- Enable hourly next-maintainer auto-close workflow: #98225
- Return client errors for unrecognized Server Actions: #98123
- Add Next Maintainer auto-close workflow: #98197
- perf(turbopack): skip ignored files during server tracing: #97475
- docs: note that experimental.taint taints process.env: #98145
- test: preserve static params during Cache Components migration: #98209
- Upgrade web-vitals to v6 and report soft navigations: #97232
- Upgrade React from
21c89c9f-20260901tof4e439e1-20260902: #98188
Huge thanks to @gnoff, @marcoshernanz, @jimmyhmiller, @icyJoseph, @aurorascharff, and @timneutkens for helping!
Release 2026-09-03 20:13
Release 2026-09-03 20:13
- solid-router: native SSR match transfer, hydration-claiming boot, provider-owned dispatch (#8213) (b445b89281) by @ryansolid
- solid: named single-flight source + loadFlightTarget, the cache-agnostic trigger (#8192) (96f50d94a6) by @ryansolid
- examples: migrate remaining legacy createEffect calls to Solid 2.0 two-phase signature (#8223) (c753d0a222) by @ryansolid
- solid: retire solid-router-ssr-query — native channels carry the Router + Query pairing (#8193) (5a6935f2d5) by @ryansolid
- @tanstack/solid-router@2.0.0-rc.5
- @tanstack/solid-router-devtools@2.0.0-rc.5
- @tanstack/solid-router-ssr-query@2.0.0-rc.5
- @tanstack/solid-start@2.0.0-rc.5
- @tanstack/solid-start-client@2.0.0-rc.5
- @tanstack/solid-start-server@2.0.0-rc.5
@tanstack/solid-start@2.0.0-rc.5
-
#8192
96f50d9- Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly. -
#8192
96f50d9- Adopt Solid's multi-source single-flight protocol: the router's flight data (loader/match state, dehydrated data) registers under its own source id (tsr), so other caches' slices — e.g. solid-query'ssq— coexist on the same mutation response instead of competing for a single consumer slot, and a user-suppliedcollectFlightDatahook adds data alongside the router's rather than displacing it. Requires solid-js / @solidjs/web 2.0.0-rc.6+ (named flight-data sources). -
Updated dependencies [
96f50d9,96f50d9,b445b89]:- @tanstack/solid-router@2.0.0-rc.5
- @tanstack/solid-start-client@2.0.0-rc.5
- @tanstack/solid-start-server@2.0.0-rc.5
@tanstack/solid-router-devtools@2.0.0-rc.5
-
#8192
96f50d9- Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly. -
Updated dependencies [
96f50d9,96f50d9,b445b89]:- @tanstack/solid-router@2.0.0-rc.5
@tanstack/solid-router-ssr-query@2.0.0-rc.5
-
#8192
96f50d9- Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly. -
#8193
5a6935f- Deprecated: Solid Query'sQueryClientProvidernow carries the Router + Query SSR pairing natively (registry hydration, named single-flight sources, redirect handling via userland glue), so this integration package is no longer needed. See the README for the migration.
@tanstack/solid-router@2.0.0-rc.5
-
#8192
96f50d9- Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly. -
#8192
96f50d9- NewloadFlightTargethelper (exported from@tanstack/solid-router/ssr/server): the router's half of a single-flight refresh. Given the mutation request's target href, it builds a router for that location, loads it, and returns the dehydrated payload for thetsrflight-data slice, so server collectors can refresh router state alongside other caches on the same mutation response. -
#8213
b445b89- Native SSR state transfer for Solid: router match state (loaderData, beforeLoad context, status, errors) now rides Solid's hydration registry undertsr:keys instead of a bespoke bootstrap script, deferredloaderDatapromises stream natively via seroval, the client primes router state from the registry in the Router constructor (before any render context, eliminating boot-time refetches andbootLoad-style workarounds), andRouterProviderowns the server-siderouter.load()dispatch so server entries no longer await it manually.
@tanstack/solid-start-client@2.0.0-rc.5
-
#8192
96f50d9- Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly. -
Updated dependencies [
96f50d9,96f50d9,b445b89]:- @tanstack/solid-router@2.0.0-rc.5
@tanstack/solid-start-server@2.0.0-rc.5
-
#8192
96f50d9- Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly. -
Updated dependencies [
96f50d9,96f50d9,b445b89]:- @tanstack/solid-router@2.0.0-rc.5
electron v45.0.0-alpha.4
Note: This is an alpha release. Please file new issues for any bugs you find in it.
This release is published to npm under the alpha tag and can be installed via npm install electron@alpha, or npm install electron@45.0.0-alpha.4.
- Fixed
chrome.tabs.query()returning taburlandtitleto extensions without thetabspermission or host access, aligning withtabs.get. #53353 (Also in 42, 43, 44) - Fixed a pending read on a
net.requestchunked upload stream inside a protocol handler never settling when the request failed or was aborted. #53368 (Also in 43, 44) - Fixed an intermittent crash (access violation) on Windows when an ASAR integrity violation is detected, so the process now exits with code 1 as intended. #53438 (Also in 43, 44)
- Fixed application crash after a large number of IPC messages from renderers. #53418 (Also in 42, 43, 44)
- Fixed native addons deriving from
node::ObjectWrapaborting during garbage collection on Node.js 24.19.0 and later. #53391 (Also in 42, 43, 44)