Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
b2908c6
chore: update seroval to 1.6.2 (#7962)
Sheraff Aug 5, 2026
60163bf
test(start): cover ssr false hydration redirect (#7965)
Sheraff Aug 5, 2026
790e062
ci: Version Packages (#7963)
github-actions[bot] Aug 5, 2026
07a3d10
fix(router): preserve raw params for match identity (#7966)
Sheraff Aug 5, 2026
6aefb33
chore: add changeset for #7966 (#7967)
Sheraff Aug 5, 2026
697ebb6
fix(react-router): prevent blank frame before initial pending UI (#7961)
Sheraff Aug 5, 2026
84db4a8
perf(router-core): optimize route tree processing (#7984)
Sheraff Aug 6, 2026
86bf510
Pass intersection observer disabled state directly (#7971)
Sheraff Aug 6, 2026
2435885
Create file routes directly (#7970)
Sheraff Aug 6, 2026
9468530
perf: compact private bundle boundaries (#7975)
Sheraff Aug 6, 2026
9cac62a
perf: compact private bundle boundaries (#7975) missing changesets (#…
Sheraff Aug 6, 2026
ac1d0ab
ci: Version Packages (#7968)
github-actions[bot] Aug 6, 2026
abf9b81
test: stabilize codspeed CPU benchmarks (#7987)
Sheraff Aug 6, 2026
ea3a665
fix(router): retain mounted UI during revalidation (#7992)
Sheraff Aug 7, 2026
995bd97
ci: Version Packages (#7993)
github-actions[bot] Aug 7, 2026
2fbc99f
perf(start-client-core): compact private frame decoder result keys (#…
Sheraff Aug 7, 2026
6bede65
perf(start): compact deferred hydration private state (#7980)
Sheraff Aug 7, 2026
95dec51
perf(react-router): bail out of Link re-renders when href and active …
matclayton Aug 7, 2026
2265129
ci: Version Packages (#7994)
github-actions[bot] Aug 7, 2026
a43128e
ci: run bundle size workflow for benchmark scripts (#7999)
schiller-manuel Aug 7, 2026
4fa1df7
don't use esbuild to minify in vite's bundlesize benchmarks (#7995)
schiller-manuel Aug 8, 2026
c568caf
inline isServer for proper DCE (#7996)
schiller-manuel Aug 8, 2026
5253e70
perf(router-core): faster enumerable-key collection in structural sha…
Sheraff Aug 8, 2026
c59788c
perf(start-client-core): O(1) buffer drain in client frame decoder (#…
Sheraff Aug 8, 2026
44a8c3e
perf(router-core): skip impossible JSON parse attempts (#8006)
Sheraff Aug 8, 2026
6f8f534
ci: Version Packages (#8011)
github-actions[bot] Aug 9, 2026
5500fd3
fix(router-core): handle excessive parent relative links (#8018)
Sheraff Aug 9, 2026
51138a8
changeset (#8019)
Sheraff Aug 9, 2026
91a848e
ci: Version Packages (#8021)
github-actions[bot] Aug 9, 2026
af8dcb8
test(router-core): add missing test cleanup in 3920 (#8023)
Sheraff Aug 9, 2026
783f883
ci: migrate CodSpeed to v5 (#8033)
Sheraff Aug 10, 2026
7e93431
fix(router-core): load-client can cache settled abandoned loader work…
Sheraff Aug 11, 2026
1aafca9
refactor: remove Link transition state (#8043)
Sheraff Aug 12, 2026
aa10b65
fix(router): apply preload delay to viewport links (#8044)
Sheraff Aug 12, 2026
f500760
fix(router): warn when Outlet is rendered in fallback components (#8045)
Sheraff Aug 12, 2026
e15bda5
ci: Version Packages (#8040)
github-actions[bot] Aug 12, 2026
31355ae
fix(react-router): useMatchRoute w/ React Compiler (#8015)
Sheraff Aug 12, 2026
b0817f5
fix(react-router): useMatchRoute w/ React Compiler (changeset) (#8047)
Sheraff Aug 12, 2026
dc5a404
ci: Version Packages (#8048)
github-actions[bot] Aug 12, 2026
3848503
Fix default route component remounting (#8002)
Sheraff Aug 12, 2026
56cc90e
Upgrade solidjs rc 0 and rename vite-plugin-solid to @solidjs/vite-pl…
brenelz Aug 12, 2026
27dfa78
ci: apply automated fixes
autofix-ci[bot] Aug 13, 2026
4f89caf
Switch changesets pre-release tag from beta to rc
brenelz Aug 13, 2026
9b77320
Version Packages: solid family to 2.0.0-rc.0
brenelz Aug 13, 2026
1022de9
Merge branch 'main' into upgrade-solidjs-rc-0-main-merge
brenelz Aug 13, 2026
6512ced
ci: apply automated fixes
autofix-ci[bot] Aug 13, 2026
b3e9710
Drop main's pending warm-routes-rest changeset on the rc line
brenelz Aug 13, 2026
c7aeb97
Merge branch 'upgrade-solidjs-rc-0-main-merge' of github.com:TanStack…
brenelz Aug 13, 2026
6cb3c50
Rebuild pnpm-lock.yaml from main's side of the merge
brenelz Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
85 changes: 43 additions & 42 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
{
"mode": "pre",
"tag": "beta",
"tag": "rc",
"initialVersions": {
"@tanstack/arktype-adapter": "1.166.7",
"@tanstack/eslint-plugin-router": "1.161.4",
"@tanstack/history": "1.161.4",
"@tanstack/nitro-v2-vite-plugin": "1.154.7",
"@tanstack/react-router": "1.166.7",
"@tanstack/react-router-devtools": "1.166.7",
"@tanstack/react-router-ssr-query": "1.166.7",
"@tanstack/react-start": "1.166.8",
"@tanstack/react-start-client": "1.166.7",
"@tanstack/react-start-server": "1.166.7",
"@tanstack/router-cli": "1.166.7",
"@tanstack/router-core": "1.166.7",
"@tanstack/router-devtools": "1.166.7",
"@tanstack/router-devtools-core": "1.166.7",
"@tanstack/router-generator": "1.166.7",
"@tanstack/router-plugin": "1.166.7",
"@tanstack/router-ssr-query-core": "1.166.7",
"@tanstack/router-utils": "1.161.4",
"@tanstack/router-vite-plugin": "1.166.7",
"@tanstack/solid-router": "1.166.7",
"@tanstack/solid-router-devtools": "1.166.7",
"@tanstack/solid-router-ssr-query": "1.166.7",
"@tanstack/solid-start": "1.166.8",
"@tanstack/solid-start-client": "1.166.7",
"@tanstack/solid-start-server": "1.166.7",
"@tanstack/start-client-core": "1.166.7",
"@tanstack/start-fn-stubs": "1.161.4",
"@tanstack/start-plugin-core": "1.166.8",
"@tanstack/start-server-core": "1.166.7",
"@tanstack/start-static-server-functions": "1.166.8",
"@tanstack/start-storage-context": "1.166.7",
"@tanstack/valibot-adapter": "1.166.7",
"@tanstack/virtual-file-routes": "1.161.4",
"@tanstack/vue-router": "1.166.7",
"@tanstack/vue-router-devtools": "1.166.7",
"@tanstack/vue-router-ssr-query": "1.166.7",
"@tanstack/vue-start": "1.166.8",
"@tanstack/vue-start-client": "1.166.7",
"@tanstack/vue-start-server": "1.166.7",
"@tanstack/zod-adapter": "1.166.7",
"@tanstack/arktype-adapter": "1.167.0",
"@tanstack/eslint-plugin-router": "1.162.0",
"@tanstack/eslint-plugin-start": "0.1.0",
"@tanstack/react-start-rsc": "0.1.17"
"@tanstack/history": "1.162.0",
"@tanstack/nitro-v2-vite-plugin": "1.155.0",
"@tanstack/react-router": "1.170.19",
"@tanstack/react-router-devtools": "1.167.1",
"@tanstack/react-router-ssr-query": "1.167.1",
"@tanstack/react-start": "1.168.36",
"@tanstack/react-start-client": "1.168.17",
"@tanstack/react-start-rsc": "0.1.35",
"@tanstack/react-start-server": "1.167.24",
"@tanstack/router-cli": "1.167.22",
"@tanstack/router-core": "1.171.16",
"@tanstack/router-devtools": "1.167.1",
"@tanstack/router-devtools-core": "1.168.1",
"@tanstack/router-generator": "1.167.22",
"@tanstack/router-plugin": "1.168.24",
"@tanstack/router-ssr-query-core": "1.169.1",
"@tanstack/router-utils": "1.162.2",
"@tanstack/router-vite-plugin": "1.167.24",
"@tanstack/solid-router": "2.0.0-beta.30",
"@tanstack/solid-router-devtools": "2.0.0-beta.25",
"@tanstack/solid-router-ssr-query": "2.0.0-beta.31",
"@tanstack/solid-start": "2.0.0-beta.31",
"@tanstack/solid-start-client": "2.0.0-beta.30",
"@tanstack/solid-start-server": "2.0.0-beta.30",
"@tanstack/start-client-core": "1.170.15",
"@tanstack/start-fn-stubs": "1.162.0",
"@tanstack/start-plugin-core": "1.171.27",
"@tanstack/start-server-core": "1.169.19",
"@tanstack/start-static-server-functions": "1.167.20",
"@tanstack/start-storage-context": "1.167.18",
"@tanstack/valibot-adapter": "1.167.0",
"@tanstack/virtual-file-routes": "1.162.0",
"@tanstack/vue-router": "1.170.18",
"@tanstack/vue-router-devtools": "1.167.1",
"@tanstack/vue-router-ssr-query": "1.167.1",
"@tanstack/vue-start": "1.168.34",
"@tanstack/vue-start-client": "1.167.20",
"@tanstack/vue-start-server": "1.167.24",
"@tanstack/zod-adapter": "1.167.0"
},
"changesets": [
"brave-pans-create",
Expand Down Expand Up @@ -78,6 +78,7 @@
"solid-js-beta-27",
"solid-js-beta-29",
"solid-js-beta-32",
"solid-js-rc-0",
"solid-kings-help",
"solid-match-suspend-ssr-only",
"tall-horses-repair",
Expand Down
16 changes: 16 additions & 0 deletions .changeset/solid-js-rc-0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
'@tanstack/solid-router-devtools': patch
'@tanstack/solid-router-ssr-query': patch
'@tanstack/solid-router': patch
'@tanstack/solid-start-client': patch
'@tanstack/solid-start-server': patch
'@tanstack/solid-start': patch
---

Upgrade `solid-js` and `@solidjs/web` to `2.0.0-rc.0`, and migrate from `vite-plugin-solid` to its new name `@solidjs/vite-plugin` at `3.0.0-next.28`

`vite-plugin-solid` was renamed to `@solidjs/vite-plugin`; its final release (`3.0.0-next.27`) is a re-export shim over the new package. `@solidjs/vite-plugin@3.0.0-next.28` requires `solid-js`/`@solidjs/web` `^2.0.0-rc.0`, so the rename and the `rc` bump land together.

`@tanstack/router-plugin` is intentionally untouched: it detects the Solid JSX plugin by its Vite plugin _name_ (`solid`), which the renamed package still registers, and its `vite-plugin-solid` peer is optional — so it keeps working for both Solid 1 and Solid 2 consumers without a change.

Also bumps `@tanstack/solid-query` and `@tanstack/solid-query-devtools` to `^6.0.0-rc.0` (whose peer requires `solid-js >=2.0.0-rc.0`), and converges `@tanstack/query-core` on `5.101.4` — `solid-query` depends on query-core `5.101.0`, which previously resolved to a stale `5.99.0` and produced two incompatible `QueryClient` types.
2 changes: 2 additions & 0 deletions .github/workflows/bundle-size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ on:
paths:
- 'packages/**'
- 'benchmarks/**'
- 'scripts/benchmarks/bundle-size/**'
push:
branches: [main]
paths:
- 'packages/**'
- 'benchmarks/**'
- 'scripts/benchmarks/bundle-size/**'
workflow_dispatch:

concurrency:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/client-nav-benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
@benchmarks/${{ matrix.benchmark }}:build:${{ matrix.framework }}

- name: Run ${{ matrix.benchmark }}:${{ matrix.framework }} CodSpeed benchmark
uses: CodSpeedHQ/action@9d332c4d90b43981c3e55ae8e38e68709996240f # v4.17.0
uses: CodSpeedHQ/action@4296e51e7041e24dadb86d1d6e8b9320d223dbe8 # v5.0.3
with:
mode: ${{ matrix.mode }}
run: >-
Expand Down
8 changes: 4 additions & 4 deletions benchmarks/bundle-size/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
}
},
"dependencies": {
"@solidjs/web": "2.0.0-beta.32",
"@solidjs/web": "^2.0.0-rc.0",
"@tanstack/react-router": "workspace:^",
"@tanstack/react-start": "workspace:^",
"@tanstack/solid-router": "workspace:^",
Expand All @@ -45,12 +45,13 @@
"@tanstack/vue-start": "workspace:^",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"solid-js": "2.0.0-beta.32",
"solid-js": "^2.0.0-rc.0",
"vue": "^3.5.16"
},
"devDependencies": {
"@rsbuild/core": "^2.1.0",
"@rsbuild/plugin-react": "^2.0.0",
"@solidjs/vite-plugin": "^3.0.0-next.28",
"@tanstack/router-plugin": "workspace:^",
"@types/react": "^19.0.8",
"@types/react-dom": "^19.0.3",
Expand All @@ -59,7 +60,6 @@
"@vitejs/plugin-vue-jsx": "^5.1.5",
"@typescript/native": "npm:typescript@^7.0.2",
"typescript": "npm:@typescript/typescript6@^6.0.2",
"vite": "^8.0.14",
"vite-plugin-solid": "^3.0.0-next.23"
"vite": "^8.0.14"
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { defineConfig } from 'vite'
import solid from 'vite-plugin-solid'
import solid from '@solidjs/vite-plugin'
import { tanstackRouter } from '@tanstack/router-plugin/vite'

export default defineConfig({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { defineConfig } from 'vite'
import solid from 'vite-plugin-solid'
import solid from '@solidjs/vite-plugin'
import { tanstackRouter } from '@tanstack/router-plugin/vite'

export default defineConfig({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { defineConfig } from 'vite'
import solid from 'vite-plugin-solid'
import solid from '@solidjs/vite-plugin'
import { tanstackStart } from '@tanstack/solid-start/plugin/vite'

export default defineConfig({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { defineConfig } from 'vite'
import solid from 'vite-plugin-solid'
import solid from '@solidjs/vite-plugin'
import { tanstackStart } from '@tanstack/solid-start/plugin/vite'

export default defineConfig({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { defineConfig } from 'vite'
import solid from 'vite-plugin-solid'
import solid from '@solidjs/vite-plugin'
import { tanstackStart } from '@tanstack/solid-start/plugin/vite'

export default defineConfig({
Expand Down
8 changes: 5 additions & 3 deletions benchmarks/client-nav/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,29 +19,31 @@
"test:types:vue": "tsc -p ./vue/tsconfig.json --noEmit"
},
"dependencies": {
"@solidjs/web": "2.0.0-beta.32",
"@solidjs/web": "^2.0.0-rc.0",
"@tanstack/history": "workspace:^",
"@tanstack/react-router": "workspace:^",
"@tanstack/router-core": "workspace:^",
"@tanstack/solid-router": "workspace:^",
"@tanstack/vue-router": "workspace:^",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"solid-js": "2.0.0-beta.32",
"solid-js": "^2.0.0-rc.0",
"vue": "^3.5.16"
},
"devDependencies": {
"@codspeed/vitest-plugin": "^5.5.0",
"@platformatic/flame": "^1.6.0",
"@solidjs/vite-plugin": "^3.0.0-next.28",
"@tanstack/router-plugin": "workspace:^",
"@testing-library/react": "^16.2.0",
"@types/jsdom": "28.0.0",
"@vitejs/plugin-react": "^6.0.1",
"@vitejs/plugin-vue": "^6.0.5",
"@vitejs/plugin-vue-jsx": "^5.1.5",
"@typescript/native": "npm:typescript@^7.0.2",
"jsdom": "^29.1.1",
"typescript": "npm:@typescript/typescript6@^6.0.2",
"vite": "^8.0.14",
"vite-plugin-solid": "^3.0.0-next.23",
"vitest": "^4.1.4"
},
"nx": {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
import { afterAll, beforeAll, bench, describe } from 'vitest'
import { afterEach, beforeEach, bench, describe } from 'vitest'
import { benchOptions, ticksPerIteration } from '../shared'
import { setup } from './setup'

describe('client-async-pipeline', () => {
const test = setup()

/**
* Running `vitest bench` ignores "suite hooks" like `beforeAll` and `afterAll`,
* so we use tinybench's `setup` and `teardown` options to run our setup and teardown logic.
*
* But CodSpeed calls the benchmarked function directly, bypassing `setup` and `teardown`,
* but it does support `beforeAll` and `afterAll`.
*
* So it looks like we're setting up in duplicate, but in reality, it's only running once per environment, as intended.
* Running `vitest bench` ignores suite hooks, so Tinybench uses the `setup`
* and `teardown` options below. CodSpeed bypasses those options but supports
* `beforeEach` and `afterEach`. Only one lifecycle path runs in either
* environment, and every measured invocation receives fresh application state.
*/

beforeAll(test.before)
afterAll(test.after)
beforeEach(test.before)
afterEach(test.after)

bench(
'client-async-pipeline navigation loop (react)',
async () => {
for (let i = 0; i < ticksPerIteration; i++) {
await test.tick()
}
await test.finishBatch()
},
{
...benchOptions,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import type { RouterHistory } from '@tanstack/history'
import { RouterProvider, createRouter } from '@tanstack/react-router'
import { createRoot } from 'react-dom/client'
import { routeTree } from './routeTree.gen'

export function createTestRouter() {
export function createTestRouter(history: RouterHistory) {
return createRouter({
routeTree,
history,
scrollRestoration: true,
// Key the scroll-restoration cache by pathname instead of the default
// random per-entry location key: with push navigations the default mints
Expand All @@ -22,8 +24,8 @@ declare module '@tanstack/react-router' {
}
}

export function mountTestApp(container: HTMLElement) {
const router = createTestRouter()
export function mountTestApp(container: HTMLElement, history: RouterHistory) {
const router = createTestRouter(history)

const reactRoot = createRoot(container)
reactRoot.render(<RouterProvider router={router} />)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
import { afterAll, beforeAll, bench, describe } from 'vitest'
import { afterEach, beforeEach, bench, describe } from 'vitest'
import { benchOptions, ticksPerIteration } from '../shared'
import { setup } from './setup'

describe('client-async-pipeline', () => {
const test = setup()

/**
* Running `vitest bench` ignores "suite hooks" like `beforeAll` and `afterAll`,
* so we use tinybench's `setup` and `teardown` options to run our setup and teardown logic.
*
* But CodSpeed calls the benchmarked function directly, bypassing `setup` and `teardown`,
* but it does support `beforeAll` and `afterAll`.
*
* So it looks like we're setting up in duplicate, but in reality, it's only running once per environment, as intended.
* Running `vitest bench` ignores suite hooks, so Tinybench uses the `setup`
* and `teardown` options below. CodSpeed bypasses those options but supports
* `beforeEach` and `afterEach`. Only one lifecycle path runs in either
* environment, and every measured invocation receives fresh application state.
*/

beforeAll(test.before)
afterAll(test.after)
beforeEach(test.before)
afterEach(test.after)

bench(
'client-async-pipeline navigation loop (solid)',
async () => {
for (let i = 0; i < ticksPerIteration; i++) {
await test.tick()
}
await test.finishBatch()
},
{
...benchOptions,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import type { RouterHistory } from '@tanstack/history'
import { render } from '@solidjs/web'
import { RouterProvider, createRouter } from '@tanstack/solid-router'
import { routeTree } from './routeTree.gen'

export function createTestRouter() {
export function createTestRouter(history: RouterHistory) {
return createRouter({
routeTree,
history,
scrollRestoration: true,
// Key the scroll-restoration cache by pathname instead of the default
// random per-entry location key: with push navigations the default mints
Expand All @@ -22,8 +24,8 @@ declare module '@tanstack/solid-router' {
}
}

export function mountTestApp(container: HTMLElement) {
const router = createTestRouter()
export function mountTestApp(container: HTMLElement, history: RouterHistory) {
const router = createTestRouter(history)

const unmount = render(() => <RouterProvider router={router} />, container)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { fileURLToPath } from 'node:url'
import { defineConfig } from 'vitest/config'
import solid from 'vite-plugin-solid'
import solid from '@solidjs/vite-plugin'
import codspeedPlugin from '@codspeed/vitest-plugin'
import { tanstackRouter } from '@tanstack/router-plugin/vite'

Expand Down
Loading
Loading