core: failed handler-chunk import reaches the boundary after resume, bypassing the importError skip
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?
- Bug
Description
The client qerror listener deliberately skips importError events so a failed chunk import never routes to an <ErrorBoundary> (error-handling.ts — chunk 404s are a version-skew problem, #8795). After the Vite 8 / rolldown merge on #8745, a resumed container dispatches handlers through core (_qDispatch / run-qrl) instead of the qwikloader import path, so a failed handler-chunk fetch now lands in the nearest boundary as a plain error and the fallback renders the raw browser message (Failed to fetch dynamically imported module: …). No qerror event fires at all.
Two channels now disagree: the loader path still skips import errors, the core dispatch path catches them. Decide which behavior is intended (skip everywhere per #8795, or boundary-catches everywhere — possibly as NetworkError, #8882) and align both paths.
The e2e pin (error-handling.e2e.ts — "a failed qwikloader dynamic import (chunk 404) leaves the boundary inert") is parked on this issue.
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 error-handling.ts and trace the resumed-container dispatch through _qDispatch and run-qrl, comparing it with the qwikloader import path. Review the parked case in error-handling.e2e.ts and the context from #8795 and #8882; done means the intended import-error behavior is consistent across both paths and the failed chunk test passes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript, vite
- Domain
- frontend, testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100