Router devtools crash when search params contain a BigInt (JSON.stringify in history tracking)
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- react, typescript
Direzione di ricerca
Inizia da @tanstack/router-devtools-core, in BaseTanStackRouterDevtoolsPanel, e verifica come il tracciamento della cronologia confronta la posizione corrente con quella precedente. L’issue indica JSON.stringify sui valori di ricerca; controlla se location.searchStr o location.href del router è disponibile per il confronto. Il lavoro è concluso quando i devtools possono tracciare una route con un valore di ricerca BigInt senza generare errori e continuano a rilevare i cambiamenti di posizione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Which project does this relate to?
Router (devtools)
Describe the bug
TanStackRouterDevtoolsPanel throws TypeError: Do not know how to serialize a BigInt as soon as the current route's validated search holds a bigint, e.g. a route whose validateSearch decodes an int64 id. The router itself handles it fine (the app's custom parseSearch/stringifySearch round-trip the value). The crash comes from the devtools' history tracking, which compares locations with JSON.stringify:
// @tanstack/router-devtools-core, BaseTanStackRouterDevtoolsPanel
const sameLocation = lastMatch && lastMatch.pathname === currentMatch.pathname
&& JSON.stringify(lastMatch.search ?? {}) === JSON.stringify(currentMatch.search ?? {});
JSON.stringify throws on any bigint, and the error surfaces as an uncaught route error ("The following error wasn't caught by any route!").
Steps to reproduce
- Configure the router with a
parseSearch/stringifySearchthat supports bigints, and a route whosevalidateSearchreturns e.g.{ id: 9007199254740993n }. - Mount
TanStackRouterDevtoolsPanel. - Navigate to that route: the devtools throw
TypeError: Do not know how to serialize a BigInt.
Expected behavior
The devtools shouldn't assume search values are JSON-serializable. The router has already serialized the search with the app's own stringifySearch, so comparing location.searchStr (or location.href) needs no JSON.stringify and respects custom serializers. Wherever the devtools must stringify search values for display, a configurable serializer that defaults to JSON.stringify would match what was suggested for Query's devtools in TanStack/query#3082. That issue is the same class of bug, still commonly worked around by patching BigInt.prototype.toJSON.
Platform
@tanstack/router-devtools-core1.168.2 (latest), via@tanstack/react-router-devtools@tanstack/react-router1.171.x- Chrome, React 19
- Lingua principale
- TypeScript
- Stelle
- 15.2k
- Fork
- 1.9k
- Merge medio
- 1g 13h
- PR unite (30g)
- 76
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di TanStack/router
-
router.startViewTransition leaves the ready/finished promises unhandled, so a skipped transition throws an unhandled AbortErrorForse già presa @unjica l’ha presa 3 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
TanStack/router#8776 · 3 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
docs: `createLink` has no API reference page; 3 how-to guides link to a missing `#createlink` anchorForse già presa @A-Raphie l’ha presa 6 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Inline scripts are duplicated after hydration when the CSP nonce is sent in a headerForse già presa @gabriel-le l’ha presa 27 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
start-plugin-core: sitemap lastmod and pages.json lastBuilt are stamped with the build's wall clock (no SOURCE_DATE_EPOCH support)Forse già presa @treadnot l’ha presa 29 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Empty .ts route file is scaffolded with JSX, breaking all route generationForse già presa @nathan-logan l’ha presa 33 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di TanStack/router
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
awslabs/visual-asset-management-system#804 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
restatedev/sdk-typescript#813 ·
-
bug desktop P1 session XS
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
Merit-Systems/x402scan#1312 ·
-
type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Azure/apiops-cli#331 ·
I maintainer di solito rispondono entro 3 giorni