Skip to content

feat: create loader deps hash with stringifySearch #4713

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

KubaJastrz
Copy link
Contributor

@KubaJastrz KubaJastrz commented Jul 19, 2025

https://discord.com/channels/719702312431386674/1389585719630102650/1389585719630102650

My thoughts

stringifySearch and parseSearch options exit to extend the default behavior of the router to potentially support new data types, such as bigint, Set, Map, etc. Chances are that you'll also want to use these new data types in your loaders (via loaderDeps), so the JSON.stringify used in loaderDepsHash can be treated as a limitation.

I think there are two solutions to the problem:

  1. Leave the problem up to the user, making them do additional work in loaderDeps calculation, like

    validateSearch: z.object({ foo: z.coerce.bigint() }),
    loaderDeps: (deps) => ({ foo: deps.search.foo.toString() }),

    This would probably require additional docs around loaderDeps and stringifySearch option.

  2. Do the chore for the user by leveraging stringifySearch in loaderDepsHash like in 5677406.

Copy link

nx-cloud bot commented Jul 19, 2025

View your CI Pipeline Execution ↗ for commit 5677406

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

☁️ Nx Cloud last updated this comment at 2025-07-19 11:31:39 UTC

Copy link

pkg-pr-new bot commented Jul 19, 2025

More templates

@tanstack/arktype-adapter

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

@tanstack/directive-functions-plugin

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

@tanstack/eslint-plugin-router

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

@tanstack/history

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

@tanstack/react-router

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

@tanstack/react-router-devtools

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

@tanstack/react-router-with-query

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

@tanstack/react-start

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

@tanstack/react-start-client

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

@tanstack/react-start-plugin

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

@tanstack/react-start-server

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

@tanstack/router-cli

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

@tanstack/router-core

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

@tanstack/router-devtools

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

@tanstack/router-devtools-core

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

@tanstack/router-generator

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

@tanstack/router-plugin

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

@tanstack/router-utils

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

@tanstack/router-vite-plugin

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

@tanstack/server-functions-plugin

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

@tanstack/solid-router

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

@tanstack/solid-router-devtools

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

@tanstack/solid-start

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

@tanstack/solid-start-client

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

@tanstack/solid-start-plugin

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

@tanstack/solid-start-server

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

@tanstack/start-client-core

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

@tanstack/start-plugin-core

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

@tanstack/start-server-core

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

@tanstack/start-server-functions-client

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

@tanstack/start-server-functions-fetcher

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

@tanstack/start-server-functions-server

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

@tanstack/valibot-adapter

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

@tanstack/virtual-file-routes

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

@tanstack/zod-adapter

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

commit: 5677406

@schiller-manuel
Copy link
Contributor

can you please add a test that would fail if we were to use JSON.stringify?

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.

2 participants