Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
09548b7
chore: migrate router to tanstack/store 0.9.1
Sheraff Feb 17, 2026
88625dc
refactor(router-core): target redirected cache filtering to cached up…
Sheraff Feb 17, 2026
7cd4c1f
ci: apply automated fixes
autofix-ci[bot] Feb 17, 2026
1d5a870
Merge branch 'main' into codex/store-0.9.1-migration
Sheraff Feb 18, 2026
865a601
WIP signals refactor
Sheraff Feb 19, 2026
e3ba0a9
fix perf regression
Sheraff Feb 19, 2026
e553387
cleanup
Sheraff Feb 19, 2026
497701b
some more obvious perf improvements
Sheraff Feb 19, 2026
5964f11
fix spec
Sheraff Feb 19, 2026
94939d1
fix regression
Sheraff Feb 19, 2026
6cafe71
fix spec
Sheraff Feb 19, 2026
b62b74d
useMatch simplification and performance improvement in solid and vue
Sheraff Feb 20, 2026
e8649bd
Merge branch 'main' into refactor-signals
Sheraff Feb 20, 2026
f81cdf7
some stuff
Sheraff Feb 20, 2026
afd0913
remove cached and pending from RouterState
Sheraff Feb 20, 2026
d2fc557
remove cached and pending from RouterState
Sheraff Feb 20, 2026
e821b27
Merge branch 'main' into refactor-signals
Sheraff Feb 20, 2026
d437653
fix vue
Sheraff Feb 20, 2026
7c625ab
fix solid
Sheraff Feb 20, 2026
2c6a321
fix solid Match
Sheraff Feb 20, 2026
375dfd1
woops
Sheraff Feb 20, 2026
64a67d8
fix react store update counts
Sheraff Feb 20, 2026
f8e77e9
store updates regression somehow?
Sheraff Feb 20, 2026
bb085f0
fix tests
Sheraff Feb 20, 2026
07488dc
minor code removal
Sheraff Feb 20, 2026
6c57c91
todo comment
Sheraff Feb 20, 2026
ccfe20a
store updates summary
Sheraff Feb 20, 2026
759d3f7
extract signals into builder function
Sheraff Feb 20, 2026
e3d988a
simplify more, trim trim trim
Sheraff Feb 21, 2026
9218476
SSR optim
Sheraff Feb 21, 2026
95c3fe8
Merge branch 'main' into refactor-signals
Sheraff Feb 21, 2026
f8cdec5
Merge branch 'main' into refactor-signals
Sheraff Feb 22, 2026
9a53a76
Merge branch 'main' into refactor-signals
Sheraff Feb 23, 2026
4243c25
Merge branch 'main' into refactor-signals
Sheraff Mar 3, 2026
7137a7b
Merge branch 'main' into refactor-signals
Sheraff Mar 3, 2026
3b5314b
Merge branch 'main' into refactor-signals
Sheraff Mar 3, 2026
e394618
Adapter-injected router stores (no core default) + native Solid store…
Sheraff Mar 4, 2026
dcb32ba
Merge branch 'main' into refactor-signals
Sheraff Mar 4, 2026
f779aa9
refactor: vue-router uses tanstack/vue-store natively, no abstraction…
Sheraff Mar 5, 2026
415f32e
SSR fast path for vue (#6827)
Sheraff Mar 5, 2026
be76d52
fix lint
Sheraff Mar 5, 2026
8145c5c
update comment, i understand now
Sheraff Mar 5, 2026
929ca0c
addressing minor QA comments
Sheraff Mar 6, 2026
61ff754
ci: apply automated fixes
autofix-ci[bot] Mar 6, 2026
a3e26a3
Merge branch 'main' into refactor-signals
Sheraff Mar 6, 2026
3ab8018
fix: handle weird 'suddenly undefined' useMatch edge-case in solid (#…
Sheraff Mar 6, 2026
449de22
Merge branch 'main' into refactor-signals
Sheraff Mar 6, 2026
2447a59
refactor: solid link perf (#6836)
Sheraff Mar 7, 2026
cd8158c
refactor(solid-router): signals performance 2 (#6843)
Sheraff Mar 7, 2026
39ae29f
lint fix
Sheraff Mar 7, 2026
b67526f
Merge branch 'main' into refactor-signals
Sheraff Mar 7, 2026
ddbc230
PR comments about types
Sheraff Mar 7, 2026
4a410d8
refactor(solid-router): replace useMatch __pick with equals (#6849)
Sheraff Mar 7, 2026
2b03cf7
refactor(vue-router): reduce Match pending churn (#6855)
Sheraff Mar 8, 2026
1abac17
fix(react-router): avoid Link rerenders from location selector (#6850)
Sheraff Mar 8, 2026
0b17ca7
refactor(vue-router): clean up match context internals (#6857)
Sheraff Mar 8, 2026
e807c00
Merge branch 'main' into refactor-signals
Sheraff Mar 8, 2026
99918ca
fix(router): restore new test regressions (#6859)
Sheraff Mar 8, 2026
3917964
lint rule-of-hooks
Sheraff Mar 8, 2026
dbc1745
refactor(solid-router): replaceEqualDeep replaces deepEqual and shall…
Sheraff Mar 8, 2026
6f55bd3
refactor(vue-router): simplify onRendered emission (#6862)
Sheraff Mar 8, 2026
9252a5a
refactor: replace package router.state reads with granular stores (#6…
Sheraff Mar 8, 2026
e741308
Merge branch 'main' into refactor-signals
Sheraff Mar 8, 2026
ddeddaa
spacing
Sheraff Mar 8, 2026
b289fce
Merge branch 'main' into refactor-signals
Sheraff Mar 9, 2026
0ed1e16
LRU cache for matchByRouteId map
Sheraff Mar 9, 2026
8db3d91
post-merge fix
Sheraff Mar 10, 2026
563a125
post merge granular stores replacement
Sheraff Mar 10, 2026
4a35572
allow same milisecond stale age
Sheraff Mar 10, 2026
ab32d92
fix: (slightly) performant href/isActive Link resolution during navig…
Sheraff Mar 10, 2026
8eab810
Merge branch 'main' into refactor-signals
Sheraff Mar 10, 2026
32439e2
post merge fix
Sheraff Mar 10, 2026
fb1e8b2
did not mean to commit this
Sheraff Mar 11, 2026
d5622bb
refactor(vue-router): Link 'from' default is handled by buildLocation…
Sheraff Mar 11, 2026
dd39707
refactor(react-router): Head and Scripts use deepEqual to avoid useSt…
Sheraff Mar 11, 2026
f1da079
refactor(solid-router): detached signals finalization registry (#6885)
Sheraff Mar 11, 2026
a1bee66
fix(vue-router): use Vue listener casing for external links (#6856)
Sheraff Mar 11, 2026
1e703e6
Merge branch 'main' into refactor-signals
Sheraff Mar 11, 2026
f980d8f
fix Match SSR error catching behavior
Sheraff Mar 11, 2026
312cc7f
fix(tests): normalize HTML output in errorComponent test
Sheraff Mar 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions docs/router/api/router/RouterStateType.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ type RouterState = {
isLoading: boolean
isTransitioning: boolean
matches: Array<RouteMatch>
pendingMatches: Array<RouteMatch>
location: ParsedLocation
resolvedLocation: ParsedLocation
}
Expand Down Expand Up @@ -41,11 +40,6 @@ The `RouterState` type contains all of the properties that are available on the
- Type: [`Array<RouteMatch>`](./RouteMatchType.md)
- An array of all of the route matches that have been resolved and are currently active.

### `pendingMatches` property

- Type: [`Array<RouteMatch>`](./RouteMatchType.md)
- An array of all of the route matches that are currently pending.

### `location` property

- Type: [`ParsedLocation`](./ParsedLocationType.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/router/api/router/useChildMatchesHook.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ title: useChildMatches hook
The `useChildMatches` hook returns all of the child [`RouteMatch`](./RouteMatchType.md) objects from the closest match down to the leaf-most match. **It does not include the current match, which can be obtained using the `useMatch` hook.**

> [!IMPORTANT]
> If the router has pending matches and they are showing their pending component fallbacks, `router.state.pendingMatches` will used instead of `router.state.matches`.
> If the router has pending matches and they are showing their pending component fallbacks, pending matches are used instead of active matches.
## useChildMatches options

Expand Down
2 changes: 1 addition & 1 deletion docs/router/api/router/useParentMatchesHook.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ title: useParentMatches hook
The `useParentMatches` hook returns all of the parent [`RouteMatch`](./RouteMatchType.md) objects from the root down to the immediate parent of the current match in context. **It does not include the current match, which can be obtained using the `useMatch` hook.**

> [!IMPORTANT]
> If the router has pending matches and they are showing their pending component fallbacks, `router.state.pendingMatches` will used instead of `router.state.matches`.
> If the router has pending matches and they are showing their pending component fallbacks, pending matches are used instead of active matches.
## useParentMatches options

Expand Down
2 changes: 2 additions & 0 deletions e2e/react-router/basic-file-based/tests/app.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,8 @@ async function structuralSharingTest(page: Page, enabled: boolean) {

test('structural sharing disabled', async ({ page }) => {
await structuralSharingTest(page, false)
expect(await getRenderCount(page)).toBe(2)
await page.getByTestId('link').click()
expect(await getRenderCount(page)).toBeGreaterThan(2)
})

Expand Down
19 changes: 13 additions & 6 deletions e2e/solid-start/basic/tests/transition.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@ import { expect, test } from '@playwright/test'
test('transitions/count/create-resource should keep old values visible during navigation', async ({
page,
}) => {
const burstClicks = async (count: number) => {
await page
.getByTestId('increase-button')
.evaluate((element, clickCount) => {
for (let index = 0; index < clickCount; index++) {
;(element as HTMLAnchorElement).click()
}
}, count)
}

await page.goto('/transition/count/create-resource')

await expect(page.getByTestId('n-value')).toContainText('n: 1')
Expand All @@ -20,7 +30,7 @@ test('transitions/count/create-resource should keep old values visible during na

// 1 click

page.getByTestId('increase-button').click()
await burstClicks(1)

await expect(page.getByTestId('n-value')).toContainText('n: 1', {
timeout: 2_000,
Expand All @@ -40,8 +50,7 @@ test('transitions/count/create-resource should keep old values visible during na

// 2 clicks

page.getByTestId('increase-button').click()
page.getByTestId('increase-button').click()
await burstClicks(2)

await expect(page.getByTestId('n-value')).toContainText('n: 2', {
timeout: 2000,
Expand All @@ -61,9 +70,7 @@ test('transitions/count/create-resource should keep old values visible during na

// 3 clicks

page.getByTestId('increase-button').click()
page.getByTestId('increase-button').click()
page.getByTestId('increase-button').click()
await burstClicks(3)

await expect(page.getByTestId('n-value')).toContainText('n: 4', {
timeout: 2000,
Expand Down
Loading
Loading