Back links are inconsistent and often don't return to the previous screen #308

Closed
opened 2026-06-27 00:31:40 +00:00 by james · 0 comments
Owner

The "back" affordances across the universal client (apps/client) are inconsistent: some go back in history, others navigate to a hardcoded parent route, so in many cases "back" does not return to the screen you came from.

Goal

Audit every back affordance (back buttons/links, ChevronLeft/ArrowLeft icons, header back, router.back() / router.replace() / <Link>-to-parent, navigation.goBack()) and make them behave consistently: go back to the actual previous location when there is history, with a sensible fallback (e.g. a parent route) when there isn't — for cases where a screen was reached via deep link or cold start and there's nothing to pop.

Acceptance

  • One consistent back pattern used everywhere (ideally a small shared helper, e.g. goBackOr(fallback) that uses router.canGoBack() ? router.back() : router.replace(fallback)).
  • No back affordance hardcodes a destination that ignores history.
  • Web + native both behave: back returns to the prior screen.
  • typecheck + lint pass.
The "back" affordances across the universal client (`apps/client`) are inconsistent: some go back in history, others navigate to a hardcoded parent route, so in many cases "back" does **not** return to the screen you came from. ## Goal Audit every back affordance (back buttons/links, `ChevronLeft`/`ArrowLeft` icons, header back, `router.back()` / `router.replace()` / `<Link>`-to-parent, `navigation.goBack()`) and make them behave consistently: **go back to the actual previous location** when there is history, with a sensible fallback (e.g. a parent route) when there isn't — for cases where a screen was reached via deep link or cold start and there's nothing to pop. ## Acceptance - One consistent back pattern used everywhere (ideally a small shared helper, e.g. `goBackOr(fallback)` that uses `router.canGoBack() ? router.back() : router.replace(fallback)`). - No back affordance hardcodes a destination that ignores history. - Web + native both behave: back returns to the prior screen. - typecheck + lint pass.
james closed this issue 2026-06-27 01:26:34 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
james/carol#308
No description provided.