feat(router): expose global navigation-blocking controls
Open
Nobody has claimed this yet.
enhancement
- Dominant language
- TypeScript
- Stars
- 15.1k
- Forks
- 1.9k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 143
Description
Goal
Expose global navigation-blocking state so an application can render one shared confirmation UI for blockers registered elsewhere.
Scope
- Preserve the existing
BlockerFnand custom history contract, or provide a deliberate compatible migration path. - Define global state and actions for a pending blocked navigation.
- Define behavior for multiple blockers and repeated navigation attempts.
- Support browser back/forward and programmatic navigation.
- Keep React, Solid, and Vue behavior aligned.
- Add unit and E2E coverage for proceed, reset, proceed-all behavior, back/forward, multiple blockers, repeated attempts, and cleanup.
- Document the public API and action semantics.
Related Work
This continues the work started in #4398
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the existing BlockerFn and custom history contract, then read the work referenced in #4398. Define the global state and actions for blocked navigation across React, Solid, and Vue, and add the listed unit, E2E, and documentation coverage; done means proceed, reset, proceed-all, history navigation, repeated attempts, multiple blockers, and cleanup are covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react, typescript
- Domain
- frontend, web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100