UI: Tab navigation does not update the page without a hard refresh — route change silently ignored #182
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic#182
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue Summary
Clicking a header navigation tab (e.g. switching from
/swapto/pool) does not load the new route. The URL in the browser address bar does not change and the page content remains on the current route. A hard refresh (or manually typing the tab URL and pressing Enter) is required to load the intended page. This affects at minimum the Swap → Pool tab transition and was reproduced consistently across multiple attempts.However the
/moredropdown menu functions wellReproduction Steps
/swap— confirm the Swap page is loaded/swapExpected Behavior
Clicking any header navigation tab should immediately update the route and render the corresponding page without requiring a manual reload. Client-side routing (React Router or equivalent) should handle the transition in-place.
Actual Behavior
Clicking the Pool tab and other tabs from
/swapdoes not trigger a route change. The page stays on the current route and renders no new content. No error is shown and no loading indicator appears. The navigation click is visually acknowledged (tab may highlight) but the app does not navigate. A hard refresh of the new route URL is the only workaround.Screen Record
Environment Details
VITE_NETWORK=local npm run devatlocalhost:3000Wallet / Device Details
/swap→/poolSeverity / Impact
P1 — potential LAUNCH-BLOCKER. Core navigation is non-functional for the Swap → Pool transition without a hard refresh. If this affects all inter-tab navigation, users cannot move between any section of the app during a session without reloading. On mainnet with real users this would cause high drop-off and confusion — a trader who clicks Pool expecting to add liquidity and sees nothing happen will assume the app is broken. Root cause is likely a broken router link handler, a missing
<Link>component, or a history/push event not being picked up by the router. Requires reproduction on multiple browsers and routes to determine full scope.cc: @PlasticDigits
changed title from
Tabs don't change onClick of the assigned buttontoUI: Tab navigation does not update the page without a hard refresh — route change silently ignoredchanged the description
mentioned in commit
d69c8c37aeFix landed on
main(a494a22)Header/mobile tab clicks could paint
:activestyles while history and<Outlet>stayed on the previous route until a hard refresh — especially with wallet extensions (Keplr) intercepting default<a>navigation. A render-phasesetStateinRouteContentReadyProvider(from the #138 NFA footer work) could also interfere with React Router transitions.Changes
AppShellNavLink— plain left-click callsnavigate()afterpreventDefaultso client routing always updates the URL; modified clicks (new tab, etc.) unchanged.RouteContentReadyProvider— removed render-phasesetStateon pathname change;readyForPath === pathnamealready prevents stale footer ready state.skills/AGENTS_FRONTEND_SHELL_NAV.md, cross-links in responsive-header and risk-disclaimer playbooks.AppShellNavLink.test.tsx, E2Edesktop primary tabs change URL without reload (GitLab #182).Verification checklist
/), click Pool → URL/pool, pool route renders (no reload).npm run test:run -- src/components/common/__tests__/AppShellNavLink.test.tsx src/contexts/__tests__/RouteContentReadyContext.test.tsxREQUIRE_LOCALTERRA=0 npx playwright test e2e/navigation.spec.ts -g "desktop primary tabs"@brouie — please verify on
mainwith your usual localterra + Keplr setup; leaving this issue open until confirmed.mentioned in commit
a9832a6be1Verified and closed (agent run 2026-05-27)
Confirmed fix on
main(originalAppShellNavLink+RouteContentReadyProviderchanges froma494a22). No additional routing bugs found.Infrastructure
127.0.0.1:26657):5432(dex_indexer DB)http://127.0.0.1:3001/health)http://127.0.0.1:3000(VITE_NETWORK=local)Verification checklist
/poolnpm run test:run -- AppShellNavLink.test.tsx RouteContentReadyContext.test.tsx— 5/5 passedREQUIRE_LOCALTERRA=0 npx playwright test e2e/navigation.spec.ts -g "desktop primary tabs"— passed/) and Pool (/pool) after client-side tab clickFollow-up on main
connected wallet: primary tabs change URL without reload (GitLab #182)innavigation.spec.ts(commita9832a6)Note: Cursor browser MCP was not available in this agent session; visual verification used Playwright browser automation + screenshots instead.
mentioned in issue #358
mentioned in merge request !865
mentioned in issue #711
mentioned in issue #713