Skip to content

fix(router-core): wildcard nodes respect DFS priority like other nodes in route matching#7273

Merged
Sheraff merged 7 commits intomainfrom
fix-router-core-route-matching-wildcard-nodes-respect-priority
Apr 27, 2026
Merged

fix(router-core): wildcard nodes respect DFS priority like other nodes in route matching#7273
Sheraff merged 7 commits intomainfrom
fix-router-core-route-matching-wildcard-nodes-respect-priority

Conversation

@Sheraff
Copy link
Copy Markdown
Contributor

@Sheraff Sheraff commented Apr 26, 2026

Summary by CodeRabbit

  • Bug Fixes

    • Unified priority handling across static/dynamic/optional/wildcard segments, improved handling at path ends, and smarter pruning to skip lower-priority wildcard candidates and avoid unnecessary parsing.
  • Tests

    • Expanded coverage for precedence, positional scoring, and param extraction across optional/static/dynamic/wildcard interactions, including fallback and parsing-failure cases.
  • Chores

    • Added a patch changeset documenting the matching behavior update.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 26, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Replaces per-segment counts with positional bitmask scoring, enqueues wildcard candidates onto the DFS stack (reverse order) with pruning against a discovered best match, refines end-of-path acceptance for index/wildcard, and consolidates wildcard param-parsing to avoid redundant or premature evaluations.

Changes

Cohort / File(s) Summary
Route Matching Algorithm
packages/router-core/src/new-process-route-tree.ts
Reworks scoring to positional bitmask functions (segmentScore, isPerfectStaticMatch), uses DFS stack for wildcard candidates (reverse-iterated) and sets wildcard frames to depth + 1, adds pruning to skip less-specific wildcard frames when bestMatch exists, adjusts end-of-path acceptance for SEGMENT_TYPE_INDEX/SEGMENT_TYPE_WILDCARD when pathIsIndex, and centralizes wildcard param-parsing behavior.
Route Matching Tests
packages/router-core/tests/new-process-route-tree.test.ts
Adds broad assertions for precedence between static/dynamic/optional segments and wildcards (prefix/suffix), fuzzy vs exact layout precedence, wildcard parsing semantics (single-parse for stacked wildcards, fallback on parse failure, avoid parsing when higher-priority static/index matches), and positional scoring invariants (including pathless node behavior).
Release Metadata
.changeset/loud-women-end.md
Adds a patch changeset noting that wildcard nodes follow the same priority rules as other nodes during route matching.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 I hop through bits and shift them left,
Wildcards wait upon the DFS cleft,
I prune the lesser, hold the best tight,
Parse once, then sleep through the night,
Nose twitch, I guard the match till light.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: wildcard nodes now respect DFS priority like other nodes, which is the core behavioral fix implemented across the route-tree processing logic.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-router-core-route-matching-wildcard-nodes-respect-priority

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

@nx-cloud
Copy link
Copy Markdown
Contributor

nx-cloud Bot commented Apr 26, 2026

View your CI Pipeline Execution ↗ for commit e942d11

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ✅ Succeeded 7m 26s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 1m 45s View ↗

☁️ Nx Cloud last updated this comment at 2026-04-26 23:26:30 UTC

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 26, 2026

🚀 Changeset Version Preview

1 package(s) bumped directly, 22 bumped as dependents.

🟩 Patch bumps

Package Version Reason
@tanstack/router-core 1.168.16 → 1.168.17 Changeset
@tanstack/react-router 1.168.24 → 1.168.25 Dependent
@tanstack/react-start 1.167.49 → 1.167.50 Dependent
@tanstack/react-start-client 1.166.42 → 1.166.43 Dependent
@tanstack/react-start-rsc 0.0.28 → 0.0.29 Dependent
@tanstack/react-start-server 1.166.43 → 1.166.44 Dependent
@tanstack/router-cli 1.166.36 → 1.166.37 Dependent
@tanstack/router-generator 1.166.35 → 1.166.36 Dependent
@tanstack/router-plugin 1.167.27 → 1.167.28 Dependent
@tanstack/router-vite-plugin 1.166.42 → 1.166.43 Dependent
@tanstack/solid-router 1.168.24 → 1.168.25 Dependent
@tanstack/solid-start 1.167.47 → 1.167.48 Dependent
@tanstack/solid-start-client 1.166.41 → 1.166.42 Dependent
@tanstack/solid-start-server 1.166.42 → 1.166.43 Dependent
@tanstack/start-client-core 1.167.19 → 1.167.20 Dependent
@tanstack/start-plugin-core 1.169.5 → 1.169.6 Dependent
@tanstack/start-server-core 1.167.21 → 1.167.22 Dependent
@tanstack/start-static-server-functions 1.166.35 → 1.166.36 Dependent
@tanstack/start-storage-context 1.166.30 → 1.166.31 Dependent
@tanstack/vue-router 1.168.20 → 1.168.21 Dependent
@tanstack/vue-start 1.167.43 → 1.167.44 Dependent
@tanstack/vue-start-client 1.166.37 → 1.166.38 Dependent
@tanstack/vue-start-server 1.166.38 → 1.166.39 Dependent

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 26, 2026

Bundle Size Benchmarks

  • Commit: de980342a65e
  • Measured at: 2026-04-26T23:19:39.924Z
  • Baseline source: history:944b1558965b
  • Dashboard: bundle-size history
Scenario Current (gzip) Delta vs baseline Raw Brotli Trend
react-router.minimal 87.30 KiB -42 B (-0.05%) 274.68 KiB 75.83 KiB ███████████▁
react-router.full 90.80 KiB +24 B (+0.03%) 286.19 KiB 79.00 KiB ▁▁▁▁▁▁▁▁▁▁▁█
solid-router.minimal 35.55 KiB -36 B (-0.10%) 106.95 KiB 31.97 KiB ▁▁▁▁▁▁▁████▁
solid-router.full 40.28 KiB -40 B (-0.10%) 121.16 KiB 36.16 KiB ▁▁▁▄▄▄▄▆███▆
vue-router.minimal 53.30 KiB -5 B (-0.01%) 152.09 KiB 47.88 KiB ███████████▁
vue-router.full 58.44 KiB +3 B (+0.01%) 168.27 KiB 52.33 KiB ▁▁▁▁▁▁▁▁▁▁▁█
react-start.minimal 101.92 KiB +6 B (+0.01%) 322.84 KiB 88.06 KiB ▁▁▁▁▁▁▁▁▁▁▁█
react-start.full 105.34 KiB -12 B (-0.01%) 333.17 KiB 90.98 KiB ███████████▁
react-start.rsbuild.minimal 101.45 KiB +19 B (+0.02%) 325.78 KiB 87.12 KiB ▁▃▃▃▃▃▃▃▃▃█
react-start.rsbuild.full 104.76 KiB +15 B (+0.01%) 336.47 KiB 89.88 KiB ▁▁▁▁▁▁▁▁▁▁█
solid-start.minimal 49.55 KiB -37 B (-0.07%) 152.77 KiB 43.68 KiB ▁▁▁▁▁▁▁████▂
solid-start.full 55.33 KiB -35 B (-0.06%) 169.68 KiB 48.71 KiB ▁▁▁▄▄▄▄▅███▆

Trend sparkline is historical gzip bytes ending with this PR measurement; lower is better.

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented Apr 26, 2026

More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/@tanstack/arktype-adapter@7273

@tanstack/eslint-plugin-router

npm i https://pkg.pr.new/@tanstack/eslint-plugin-router@7273

@tanstack/eslint-plugin-start

npm i https://pkg.pr.new/@tanstack/eslint-plugin-start@7273

@tanstack/history

npm i https://pkg.pr.new/@tanstack/history@7273

@tanstack/nitro-v2-vite-plugin

npm i https://pkg.pr.new/@tanstack/nitro-v2-vite-plugin@7273

@tanstack/react-router

npm i https://pkg.pr.new/@tanstack/react-router@7273

@tanstack/react-router-devtools

npm i https://pkg.pr.new/@tanstack/react-router-devtools@7273

@tanstack/react-router-ssr-query

npm i https://pkg.pr.new/@tanstack/react-router-ssr-query@7273

@tanstack/react-start

npm i https://pkg.pr.new/@tanstack/react-start@7273

@tanstack/react-start-client

npm i https://pkg.pr.new/@tanstack/react-start-client@7273

@tanstack/react-start-rsc

npm i https://pkg.pr.new/@tanstack/react-start-rsc@7273

@tanstack/react-start-server

npm i https://pkg.pr.new/@tanstack/react-start-server@7273

@tanstack/router-cli

npm i https://pkg.pr.new/@tanstack/router-cli@7273

@tanstack/router-core

npm i https://pkg.pr.new/@tanstack/router-core@7273

@tanstack/router-devtools

npm i https://pkg.pr.new/@tanstack/router-devtools@7273

@tanstack/router-devtools-core

npm i https://pkg.pr.new/@tanstack/router-devtools-core@7273

@tanstack/router-generator

npm i https://pkg.pr.new/@tanstack/router-generator@7273

@tanstack/router-plugin

npm i https://pkg.pr.new/@tanstack/router-plugin@7273

@tanstack/router-ssr-query-core

npm i https://pkg.pr.new/@tanstack/router-ssr-query-core@7273

@tanstack/router-utils

npm i https://pkg.pr.new/@tanstack/router-utils@7273

@tanstack/router-vite-plugin

npm i https://pkg.pr.new/@tanstack/router-vite-plugin@7273

@tanstack/solid-router

npm i https://pkg.pr.new/@tanstack/solid-router@7273

@tanstack/solid-router-devtools

npm i https://pkg.pr.new/@tanstack/solid-router-devtools@7273

@tanstack/solid-router-ssr-query

npm i https://pkg.pr.new/@tanstack/solid-router-ssr-query@7273

@tanstack/solid-start

npm i https://pkg.pr.new/@tanstack/solid-start@7273

@tanstack/solid-start-client

npm i https://pkg.pr.new/@tanstack/solid-start-client@7273

@tanstack/solid-start-server

npm i https://pkg.pr.new/@tanstack/solid-start-server@7273

@tanstack/start-client-core

npm i https://pkg.pr.new/@tanstack/start-client-core@7273

@tanstack/start-fn-stubs

npm i https://pkg.pr.new/@tanstack/start-fn-stubs@7273

@tanstack/start-plugin-core

npm i https://pkg.pr.new/@tanstack/start-plugin-core@7273

@tanstack/start-server-core

npm i https://pkg.pr.new/@tanstack/start-server-core@7273

@tanstack/start-static-server-functions

npm i https://pkg.pr.new/@tanstack/start-static-server-functions@7273

@tanstack/start-storage-context

npm i https://pkg.pr.new/@tanstack/start-storage-context@7273

@tanstack/valibot-adapter

npm i https://pkg.pr.new/@tanstack/valibot-adapter@7273

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/@tanstack/virtual-file-routes@7273

@tanstack/vue-router

npm i https://pkg.pr.new/@tanstack/vue-router@7273

@tanstack/vue-router-devtools

npm i https://pkg.pr.new/@tanstack/vue-router-devtools@7273

@tanstack/vue-router-ssr-query

npm i https://pkg.pr.new/@tanstack/vue-router-ssr-query@7273

@tanstack/vue-start

npm i https://pkg.pr.new/@tanstack/vue-start@7273

@tanstack/vue-start-client

npm i https://pkg.pr.new/@tanstack/vue-start-client@7273

@tanstack/vue-start-server

npm i https://pkg.pr.new/@tanstack/vue-start-server@7273

@tanstack/zod-adapter

npm i https://pkg.pr.new/@tanstack/zod-adapter@7273

commit: e942d11

Copy link
Copy Markdown
Contributor

@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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/router-core/src/new-process-route-tree.ts`:
- Around line 1350-1355: The numeric bitmask operations lose precision for deep
paths; update shiftScore and isPerfectStaticMatch (and any comparisons in
isFrameMoreSpecific) to use BigInt for bit shifting and masks instead of Number
so masks remain exact beyond 53 bits: change shiftScore to perform BigInt shifts
(e.g., 1n << BigInt(amount) or use multiplication with BigInt), ensure
statics/dynamics/optionals are stored/compared as BigInt, and update
isPerfectStaticMatch to compute 2**(partsLength-1)-1 using BigInt (or bit-shift)
so route specificity comparisons remain correct for long paths. Ensure callers
that pass numbers coerce to BigInt consistently and maintain interop where
necessary.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bd54ac60-b009-4bf4-8b31-e14a78b2ed67

📥 Commits

Reviewing files that changed from the base of the PR and between de98034 and 7396793.

📒 Files selected for processing (2)
  • packages/router-core/src/new-process-route-tree.ts
  • packages/router-core/tests/new-process-route-tree.test.ts

Comment on lines +1350 to +1355
function shiftScore(score: number, amount = 1): number {
return score * 2 ** amount
}

function isPerfectStaticMatch(statics: number, partsLength: number): boolean {
return statics === 2 ** (partsLength - 1) - 1
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cd packages/router-core/src && head -c 200000 new-process-route-tree.ts | tail -c 100000 | grep -n "function shiftScore\|function isPerfectStaticMatch\|MatchStackFrame\|statics.*number\|dynamics.*number" -A 5 -B 2

Repository: TanStack/router

Length of output: 2204


🏁 Script executed:

# First, check the exact lines mentioned (1350-1355)
sed -n '1345,1360p' packages/router-core/src/new-process-route-tree.ts

# Then check the MatchStackFrame definition (1026-1030)
sed -n '1020,1035p' packages/router-core/src/new-process-route-tree.ts

# Check the isFrameMoreSpecific function to understand how scores are used
rg "isFrameMoreSpecific" packages/router-core/src/new-process-route-tree.ts -A 10 -B 2

Repository: TanStack/router

Length of output: 2561


🏁 Script executed:

# Search for any depth limits or safeguards
rg "MAX.*DEPTH|MAX.*SEGMENT|53|Number.MAX_SAFE" packages/router-core/src/new-process-route-tree.ts -B 2 -A 2

# Check if there are tests for deep routes
find . -path "*/test*" -name "*.test.*" -o -name "*.spec.*" | head -20 | xargs grep -l "deep\|depth.*segment\|53.*segment" 2>/dev/null | head -5

# Check for any comments about the bitmasking approach and limitations
rg "BigInt|bitmask|precision|safe.*integer" packages/router-core/src/new-process-route-tree.ts -B 1 -A 1

Repository: TanStack/router

Length of output: 658


🏁 Script executed:

# Check if there are practical limits preventing deep routes
rg "partsLength|\.length.*parts" packages/router-core/src/new-process-route-tree.ts | head -20

# Look for any validation or limits on route depth
rg "throw.*depth|throw.*segment|validate.*path.*length" packages/router-core/src/new-process-route-tree.ts -B 2 -A 2

# Check how shiftScore is actually used - see the caller context
rg "shiftScore\(" packages/router-core/src/new-process-route-tree.ts -B 3 -A 3

Repository: TanStack/router

Length of output: 1934


Bitmask precision loss breaks route specificity comparison on deep paths.

Lines 1350-1355 use JavaScript number bitmasks to track route specificity. The shiftScore() helper multiplies scores by powers of two for each consumed segment, and isFrameMoreSpecific() relies on direct numeric comparison of these masks. Once a path exceeds ~53 segments, statics, dynamics, and optionals lose precision beyond JavaScript's Number.MAX_SAFE_INTEGER, causing incorrect route ordering and incorrect results from isPerfectStaticMatch(). While the codebase acknowledges this risk for the skipped field (with a comment suggesting BigInt as fallback), the positional score fields face the same vulnerability and require the same mitigation.

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

In `@packages/router-core/src/new-process-route-tree.ts` around lines 1350 - 1355,
The numeric bitmask operations lose precision for deep paths; update shiftScore
and isPerfectStaticMatch (and any comparisons in isFrameMoreSpecific) to use
BigInt for bit shifting and masks instead of Number so masks remain exact beyond
53 bits: change shiftScore to perform BigInt shifts (e.g., 1n << BigInt(amount)
or use multiplication with BigInt), ensure statics/dynamics/optionals are
stored/compared as BigInt, and update isPerfectStaticMatch to compute
2**(partsLength-1)-1 using BigInt (or bit-shift) so route specificity
comparisons remain correct for long paths. Ensure callers that pass numbers
coerce to BigInt consistently and maintain interop where necessary.

Copy link
Copy Markdown

@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: 7396793323

ℹ️ 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".

Comment on lines +1350 to +1352
function shiftScore(score: number, amount = 1): number {
return score * 2 ** amount
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Avoid precision loss in positional specificity scoring

Using number bitmasks for statics/dynamics/optionals means scores stop being exact once a match consumes ~54 path segments (values exceed Number.MAX_SAFE_INTEGER). In that range, distinct specificity patterns can collapse to the same numeric value (for example 2**53 and 2**53 + 1), so isFrameMoreSpecific can pick the wrong route. This is a functional regression from the previous count-based scoring and affects very deep route trees/URLs.

Useful? React with 👍 / 👎.

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 26, 2026

Merging this PR will not alter performance

✅ 5 untouched benchmarks
⏩ 1 skipped benchmark1


Comparing fix-router-core-route-matching-wildcard-nodes-respect-priority (e942d11) with main (944b155)2

Open in CodSpeed

Footnotes

  1. 1 benchmark was skipped, so the baseline result was used instead. If it was deleted from the codebase, click here and archive it to remove it from the performance reports.

  2. No successful run was found on main (de98034) during the generation of this report, so 944b155 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

Sheraff and others added 2 commits April 27, 2026 00:50
Co-authored-by: Copilot <copilot@github.com>
nx-cloud[bot]

This comment was marked as outdated.

Copy link
Copy Markdown
Contributor

@nx-cloud nx-cloud Bot left a comment

Choose a reason for hiding this comment

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

Nx Cloud has identified a flaky task in your failed CI:

🔂 Since the failure was identified as flaky, we triggered a CI rerun by adding an empty commit to this branch.

Nx Cloud View detailed reasoning in Nx Cloud ↗


🎓 Learn more about Self-Healing CI on nx.dev

Copy link
Copy Markdown
Contributor

@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.

🧹 Nitpick comments (1)
packages/router-core/src/new-process-route-tree.ts (1)

1403-1407: Boolean-to-number coercion is valid but unusual.

The expression (next.node.kind === SEGMENT_TYPE_INDEX) > (prev.node.kind === SEGMENT_TYPE_INDEX) relies on boolean-to-number coercion (true → 1, false → 0). This is correct and likely intentional for performance in this hot path, but a brief inline comment would help future readers understand the intent.

📝 Optional: Add clarifying comment
              ((next.node.kind === SEGMENT_TYPE_INDEX) >
-                (prev.node.kind === SEGMENT_TYPE_INDEX) ||
+                (prev.node.kind === SEGMENT_TYPE_INDEX) || // true > false, INDEX wins over non-INDEX
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/router-core/src/new-process-route-tree.ts` around lines 1403 - 1407,
The comparison using numeric coercion in the conditional—specifically the
expression "(next.node.kind === SEGMENT_TYPE_INDEX) > (prev.node.kind ===
SEGMENT_TYPE_INDEX) || ((next.node.kind === SEGMENT_TYPE_INDEX) ===
(prev.node.kind === SEGMENT_TYPE_INDEX) && next.depth > prev.depth)"—relies on
boolean-to-number coercion (true→1, false→0) to rank index segments and is
intentional; add a brief inline comment next to that expression (referencing
next.node.kind, prev.node.kind and SEGMENT_TYPE_INDEX) stating that the boolean
comparison is purposely used as numeric ordering for performance/clarity and
should not be converted to a different form.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@packages/router-core/src/new-process-route-tree.ts`:
- Around line 1403-1407: The comparison using numeric coercion in the
conditional—specifically the expression "(next.node.kind === SEGMENT_TYPE_INDEX)
> (prev.node.kind === SEGMENT_TYPE_INDEX) || ((next.node.kind ===
SEGMENT_TYPE_INDEX) === (prev.node.kind === SEGMENT_TYPE_INDEX) && next.depth >
prev.depth)"—relies on boolean-to-number coercion (true→1, false→0) to rank
index segments and is intentional; add a brief inline comment next to that
expression (referencing next.node.kind, prev.node.kind and SEGMENT_TYPE_INDEX)
stating that the boolean comparison is purposely used as numeric ordering for
performance/clarity and should not be converted to a different form.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a09b6e92-0193-4682-93fd-b9389512c8ea

📥 Commits

Reviewing files that changed from the base of the PR and between cd5655a and e942d11.

📒 Files selected for processing (1)
  • packages/router-core/src/new-process-route-tree.ts

@Sheraff Sheraff merged commit 493148b into main Apr 27, 2026
18 checks passed
@Sheraff Sheraff deleted the fix-router-core-route-matching-wildcard-nodes-respect-priority branch April 27, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant