router: settle ErrorBoundary reset → loader revalidation semantics (Phase B)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 22.1k
- Forks
- 1.4k
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 52
Description
What is it?
- Feature / enhancement
Description
#8745 ruled that reset() on an <ErrorBoundary> should re-invoke the loaders feeding the errored subtree — the v2 error design counts on it, since a redacted server failure in .error can only be retried by refetching. Today the behavior happens to refetch, but the semantics were never settled.
Phase B scope:
- Define reset → revalidation semantics (which loaders re-run, dedupe across boundaries).
loadRouteLoaderByQrldeletes rejected promises from the promises map, so a naive re-trigger double-executes the loader.- Rewrite the two parked pins in
e2e/qwik-e2e/tests/error-handling.e2e.ts(test.fixme,loader-data-throw/loader-reset-no-refetchroutes) — they still assert the opposite (reuse-serialized / no refetch) and must flip to assert refetch.
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 with loadRouteLoaderByQrl and the loader promise map to understand current reset and rejected-promise behavior. Then inspect the two parked tests in e2e/qwik-e2e/tests/error-handling.e2e.ts, including the loader-data-throw and loader-reset-no-refetch routes. Done means the reset-to-revalidation semantics are settled and the tests assert the intended refetch behavior without duplicate loader execution.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100