Skip to content

blog(router): refactor signals#757

Open
Sheraff wants to merge 20 commits intoTanStack:mainfrom
Sheraff:blog-router-refactor-signals
Open

blog(router): refactor signals#757
Sheraff wants to merge 20 commits intoTanStack:mainfrom
Sheraff:blog-router-refactor-signals

Conversation

@Sheraff
Copy link
Contributor

@Sheraff Sheraff commented Mar 15, 2026

Blog post for TanStack/router#6704

Summary by CodeRabbit

  • Documentation
    • Added blog post documenting TanStack Router's reactive system optimization, including performance improvements for client-side navigation and implementation details across different frameworks.

@netlify
Copy link

netlify bot commented Mar 15, 2026

👷 Deploy request for tanstack pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 895bc58

@changeset-bot
Copy link

changeset-bot bot commented Mar 15, 2026

⚠️ No Changeset found

Latest commit: 7d32728

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link

coderabbitai bot commented Mar 15, 2026

📝 Walkthrough

Walkthrough

A blog post was added documenting TanStack Router's architectural refactor from a monolithic state object to a granular signal graph system. The documentation covers store patterns, framework-agnostic adapter contracts, and performance benchmarks across different rendering frameworks.

Changes

Cohort / File(s) Summary
Blog Post
src/blog/tanstack-router-signal-graph.md
New documentation post detailing TanStack Router's transition from single router.state to granular signal graph architecture, including per-match stores organized by lifecycle, framework adapter patterns via TypeScript interfaces, and performance optimization results.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Poem

🐰 The signal graph hops into view,
Smaller stores, each one true,
From one big state to many small,
The rabbit's refactor stands tall!
✨📚

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'blog(router): refactor signals' directly summarizes the main change—adding a blog post documenting TanStack Router's signal-based refactor from monolithic state to a granular signal graph architecture.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@Sheraff Sheraff changed the title Blog router refactor signals blog(router): refactor signals Mar 23, 2026
@Sheraff Sheraff marked this pull request as ready for review March 23, 2026 21:11
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ceec1ad026

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
src/blog/tanstack-router-signal-graph.md (2)

228-228: Avoid duplicate heading text in the second tab block.

React, Solid, and Vue are reused as headings later in the file, triggering MD024. Make the second set unique (for example, “React (Bundle Size)”, etc.) to avoid duplicate anchors/warnings.

Proposed markdown diff
-### React
+### React (Bundle Size)
...
-### Solid
+### Solid (Bundle Size)
...
-### Vue
+### Vue (Bundle Size)

Also applies to: 237-237, 246-246

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/blog/tanstack-router-signal-graph.md` at line 228, The second set of tab
headings duplicates earlier headings ("React", "Solid", "Vue") causing MD024;
update those duplicate headings in the second tab block to unique labels (e.g.,
"React (Bundle Size)", "Solid (Bundle Size)", "Vue (Bundle Size)") so anchors
differ and the linter warning is resolved; locate the headings in the tab block
around the second occurrence and rename the headings used there (the exact
strings "React", "Solid", "Vue") to their new unique variants throughout that
block.

110-110: Fix heading level jumps in tab sections (#### under ##).

The tab headings jump from ## to ####, which triggers MD001. Use ### for the React/Solid/Vue subsection headings in both tab blocks.

Proposed markdown diff
-#### React
+### React
...
-#### Solid
+### Solid
...
-#### Vue
+### Vue
...
-#### React
+### React
...
-#### Solid
+### Solid
...
-#### Vue
+### Vue
...
-#### React
+### React
...
-#### Solid
+### Solid
...
-#### Vue
+### Vue

Also applies to: 119-119, 128-128, 189-189, 198-198, 207-207, 228-228, 237-237, 246-246

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/blog/tanstack-router-signal-graph.md` at line 110, The subsection
headings inside the tab blocks use '####' under a parent '##', causing a
heading-level jump; change those subsection headings for the React, Solid, and
Vue tabs from '####' to '###' so they are one level below the '##' section.
Update every occurrence of the React/Solid/Vue tab headings (the current '####
React', '#### Solid', '#### Vue' instances noted in the comment) to use '###'
instead to fix MD001 consistently across the document.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/blog/tanstack-router-signal-graph.md`:
- Line 269: Update the footnote text for the alias ^alien-bench so the month is
capitalized; locate the footnote line that reads "[^alien-bench]:
[js-reactivity-benchmark](https://github.com/transitive-bullshit/js-reactivity-benchmark)
last updated january 2025" and change "january 2025" to "January 2025" to match
standard date formatting.

---

Nitpick comments:
In `@src/blog/tanstack-router-signal-graph.md`:
- Line 228: The second set of tab headings duplicates earlier headings ("React",
"Solid", "Vue") causing MD024; update those duplicate headings in the second tab
block to unique labels (e.g., "React (Bundle Size)", "Solid (Bundle Size)", "Vue
(Bundle Size)") so anchors differ and the linter warning is resolved; locate the
headings in the tab block around the second occurrence and rename the headings
used there (the exact strings "React", "Solid", "Vue") to their new unique
variants throughout that block.
- Line 110: The subsection headings inside the tab blocks use '####' under a
parent '##', causing a heading-level jump; change those subsection headings for
the React, Solid, and Vue tabs from '####' to '###' so they are one level below
the '##' section. Update every occurrence of the React/Solid/Vue tab headings
(the current '#### React', '#### Solid', '#### Vue' instances noted in the
comment) to use '###' instead to fix MD001 consistently across the document.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ee86843c-9132-4d1c-8994-7cc9efb1493f

📥 Commits

Reviewing files that changed from the base of the PR and between b4d12a1 and 895bc58.

⛔ Files ignored due to path filters (12)
  • public/blog-assets/tanstack-router-signal-graph/after-granular-store-graph-2.mp4 is excluded by !**/*.mp4
  • public/blog-assets/tanstack-router-signal-graph/before-granular-store-graph-2.mp4 is excluded by !**/*.mp4
  • public/blog-assets/tanstack-router-signal-graph/bundle-size-history-react.png is excluded by !**/*.png
  • public/blog-assets/tanstack-router-signal-graph/bundle-size-history-solid.png is excluded by !**/*.png
  • public/blog-assets/tanstack-router-signal-graph/bundle-size-history-vue.png is excluded by !**/*.png
  • public/blog-assets/tanstack-router-signal-graph/client-side-nav-react.png is excluded by !**/*.png
  • public/blog-assets/tanstack-router-signal-graph/client-side-nav-solid.png is excluded by !**/*.png
  • public/blog-assets/tanstack-router-signal-graph/client-side-nav-vue.png is excluded by !**/*.png
  • public/blog-assets/tanstack-router-signal-graph/header.jpg is excluded by !**/*.jpg
  • public/blog-assets/tanstack-router-signal-graph/store-updates-history-react.png is excluded by !**/*.png
  • public/blog-assets/tanstack-router-signal-graph/store-updates-history-solid.png is excluded by !**/*.png
  • public/blog-assets/tanstack-router-signal-graph/store-updates-history-vue.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • src/blog/tanstack-router-signal-graph.md


[^alien-migration]: [TanStack Store PR #265](https://github.com/TanStack/store/pull/265)

[^alien-bench]: [js-reactivity-benchmark](https://github.com/transitive-bullshit/js-reactivity-benchmark) last updated january 2025
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Capitalize month name in footnote text.

Use January 2025 instead of january 2025 for consistency with standard date formatting in the post.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/blog/tanstack-router-signal-graph.md` at line 269, Update the footnote
text for the alias ^alien-bench so the month is capitalized; locate the footnote
line that reads "[^alien-bench]:
[js-reactivity-benchmark](https://github.com/transitive-bullshit/js-reactivity-benchmark)
last updated january 2025" and change "january 2025" to "January 2025" to match
standard date formatting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants