Skip to content

Conversation

Sheraff
Copy link
Contributor

@Sheraff Sheraff commented Jul 17, 2025

Main changes in router-core/src/path.ts:

  1. use integers instead of strings for Segment.type
  2. parsePathname caches all parses as readonly in a Map
  3. encodePathParam is now pre-compiled based on pathParamsAllowedCharacters during router initialization
  4. getMatchedRoutes caches all calls without a 2nd argument. This is the case w/ the most complexity (flatRoutes.find((r) => getMatchedParams(r)), and this ensures the cache doesn't explode because of all the combinations.
  5. resolvePathWithBase caches all calls (it's only string -> string, so even a big cache should be ok)

API changes:

  • interpolatePath requires encodePathParam in its options => maybe we could make this optional, like decodeCharMap was optional

Copy link

nx-cloud bot commented Jul 17, 2025

View your CI Pipeline Execution ↗ for commit 96634b3

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ❌ Failed 14m 26s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 2m 3s View ↗

☁️ Nx Cloud last updated this comment at 2025-07-17 21:07:36 UTC

Copy link

pkg-pr-new bot commented Jul 17, 2025

More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/arktype-adapter@4682

@tanstack/directive-functions-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/directive-functions-plugin@4682

@tanstack/eslint-plugin-router

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

@tanstack/history

npm i https://pkg.pr.new/TanStack/router/@tanstack/history@4682

@tanstack/react-router

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

@tanstack/react-router-devtools

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

@tanstack/react-router-with-query

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-router-with-query@4682

@tanstack/react-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start@4682

@tanstack/react-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-client@4682

@tanstack/react-start-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-plugin@4682

@tanstack/react-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/react-start-server@4682

@tanstack/router-cli

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

@tanstack/router-core

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

@tanstack/router-devtools

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

@tanstack/router-devtools-core

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

@tanstack/router-generator

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

@tanstack/router-plugin

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

@tanstack/router-utils

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

@tanstack/router-vite-plugin

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

@tanstack/server-functions-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/server-functions-plugin@4682

@tanstack/solid-router

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

@tanstack/solid-router-devtools

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

@tanstack/solid-start

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start@4682

@tanstack/solid-start-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-client@4682

@tanstack/solid-start-plugin

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-plugin@4682

@tanstack/solid-start-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/solid-start-server@4682

@tanstack/start-client-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-client-core@4682

@tanstack/start-plugin-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-plugin-core@4682

@tanstack/start-server-core

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-core@4682

@tanstack/start-server-functions-client

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-functions-client@4682

@tanstack/start-server-functions-fetcher

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-functions-fetcher@4682

@tanstack/start-server-functions-server

npm i https://pkg.pr.new/TanStack/router/@tanstack/start-server-functions-server@4682

@tanstack/valibot-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/valibot-adapter@4682

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/TanStack/router/@tanstack/virtual-file-routes@4682

@tanstack/zod-adapter

npm i https://pkg.pr.new/TanStack/router/@tanstack/zod-adapter@4682

commit: 96634b3

@Sheraff Sheraff changed the title feat(router-core) Path: performance improvements [WIP] feat(router-core) Path: performance improvements [PoC] Jul 19, 2025
@Sheraff Sheraff closed this Jul 24, 2025
@Sheraff Sheraff deleted the router-core-path-performance branch July 24, 2025 14:44
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