Interface Affected
App Version
System / Environment Info
Steps to Reproduce
- Open
https://app.uniswap.org/#//example.org in a clean browser session.
- Allow the landing page to finish loading.
- A "Something went wrong" modal appears with a
SecurityError stack trace.
Expected Behavior
Ignore external-looking hash fragments or redirect only to internal routes without raising errors.
Actual Behavior
- Fragment is passed to React Router's
<Navigate>.
- Router calls
history.replaceState('https://example.org/'); the browser rejects it with SecurityError.
- User stays on
app.uniswap.org but sees the error overlay until reload.
Screenshots or Screen Recording
Screenshot available showing the "Something went wrong" overlay with the SecurityError stack trace.
Additional Context
- Logic lives in
apps/web/src/pages/RouteDefinitions.tsx via <Navigate to={args.hash.replace('#', '')} />.
- Sanitising fragments (e.g., require a leading
/) preserves legacy hashes like #/swap while avoiding the error.
- No cross-origin redirect occurs; the issue is limited to a user-visible error state.
Interface Affected
App Version
System / Environment Info
Steps to Reproduce
https://app.uniswap.org/#//example.orgin a clean browser session.SecurityErrorstack trace.Expected Behavior
Ignore external-looking hash fragments or redirect only to internal routes without raising errors.
Actual Behavior
<Navigate>.history.replaceState('https://example.org/'); the browser rejects it withSecurityError.app.uniswap.orgbut sees the error overlay until reload.Screenshots or Screen Recording
Screenshot available showing the "Something went wrong" overlay with the
SecurityErrorstack trace.Additional Context
apps/web/src/pages/RouteDefinitions.tsxvia<Navigate to={args.hash.replace('#', '')} />./) preserves legacy hashes like#/swapwhile avoiding the error.