What is it?
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).
loadRouteLoaderByQrl deletes 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-refetch routes) — they still assert the opposite (reuse-serialized / no refetch) and must flip to assert refetch.
What is it?
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.errorcan only be retried by refetching. Today the behavior happens to refetch, but the semantics were never settled.Phase B scope:
loadRouteLoaderByQrldeletes rejected promises from the promises map, so a naive re-trigger double-executes the loader.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.