Commit bcac1db
fix(react-router): Do not re-write origin on router state changes (#21056)
## Summary
Closes #20784. Closes #20772.
The router state-change subscription in `hydratedRouter.ts` was
unconditionally re-writing `sentry.origin` on whatever root span was
active at the time. Two side effects:
1. **The flaky CI failure** — for static routes (where the parameterized
path equals the URL pathname), the `pathname === rootSpanName` guard
didn't filter out the still-active pageload span, so the pageload got
tagged with `auto.navigation.react_router` and produced transactions
with `op=pageload` but `origin=auto.navigation.react_router`. Dynamic
routes hid the bug because the parameterized name no longer equalled the
pathname, short-circuiting the block.
2. **An instrumentation-API regression** — when the navigation span was
created via `createClientInstrumentation`, its origin is
`auto.navigation.react_router.instrumentation_api`. The subscribe
callback's re-write was stripping the `.instrumentation_api` suffix.
The origin is correctly set once at span creation (in
`maybeCreateNavigationTransaction` / instrumentation API) or once in
`trySubscribe` for the pageload. The subscribe callback only needs to
update `name` + `source`. Drop the origin write entirely.
Added a regression test asserting the pageload origin is preserved when
the subscribe callback fires while the pageload is still the active
root, and tightened the existing navigation assertion to check the
attribute payload rather than just that `setAttributes` was called.
Also corrected the `react-router-7-framework-instrumentation` navigation
e2e tests, which were asserting the legacy origin only because of the
same bug — React Router 7 actually invokes the instrumentation API
navigate hook on the client, so the navigation spans genuinely carry the
`.instrumentation_api` origin (with the legacy subscribe callback still
doing parameterization).
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 97feb2c commit bcac1db
3 files changed
Lines changed: 62 additions & 31 deletions
File tree
- dev-packages/e2e-tests/test-applications/react-router-7-framework-instrumentation/tests/performance
- packages/react-router
- src/client
- test/client
Lines changed: 20 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | | - | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
7 | 11 | | |
8 | | - | |
9 | 12 | | |
10 | | - | |
11 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
12 | 17 | | |
13 | 18 | | |
14 | 19 | | |
15 | 20 | | |
16 | | - | |
17 | 21 | | |
18 | 22 | | |
19 | 23 | | |
| |||
25 | 29 | | |
26 | 30 | | |
27 | 31 | | |
28 | | - | |
29 | | - | |
30 | 32 | | |
31 | 33 | | |
32 | 34 | | |
33 | 35 | | |
34 | | - | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
35 | 43 | | |
36 | 44 | | |
37 | 45 | | |
| |||
58 | 66 | | |
59 | 67 | | |
60 | 68 | | |
61 | | - | |
| 69 | + | |
62 | 70 | | |
63 | 71 | | |
64 | 72 | | |
| |||
89 | 97 | | |
90 | 98 | | |
91 | 99 | | |
92 | | - | |
| 100 | + | |
93 | 101 | | |
94 | 102 | | |
95 | 103 | | |
| |||
109 | 117 | | |
110 | 118 | | |
111 | 119 | | |
112 | | - | |
| 120 | + | |
113 | 121 | | |
114 | 122 | | |
115 | 123 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
70 | 72 | | |
71 | | - | |
| 73 | + | |
72 | 74 | | |
73 | | - | |
| 75 | + | |
74 | 76 | | |
75 | 77 | | |
76 | 78 | | |
77 | | - | |
78 | | - | |
| 79 | + | |
| 80 | + | |
79 | 81 | | |
80 | 82 | | |
81 | | - | |
| 83 | + | |
82 | 84 | | |
83 | | - | |
84 | | - | |
| 85 | + | |
| 86 | + | |
85 | 87 | | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
| 88 | + | |
| 89 | + | |
91 | 90 | | |
92 | 91 | | |
93 | 92 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
42 | 43 | | |
43 | 44 | | |
44 | 45 | | |
45 | | - | |
46 | | - | |
| 46 | + | |
| 47 | + | |
47 | 48 | | |
48 | 49 | | |
49 | 50 | | |
50 | | - | |
| 51 | + | |
51 | 52 | | |
52 | | - | |
| 53 | + | |
| 54 | + | |
53 | 55 | | |
54 | 56 | | |
55 | 57 | | |
| |||
91 | 93 | | |
92 | 94 | | |
93 | 95 | | |
94 | | - | |
95 | | - | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
96 | 120 | | |
97 | 121 | | |
98 | 122 | | |
| |||
0 commit comments