Implement bundle failure and retry mechanism
- Dominant language
- TypeScript
- Stars
- 38
- Forks
- 22
- PR merge metrics
- No merged PRs in 30d
Description
#### Description
We tried to implement a retry mechanism to handle failures [when loading the map bundle](https://github.com/getodk/web-forms/pull/491/files#diff-9bd67616bff84ff2c4df60c24197d5196d889e124d9cf5a2dd438192fc107881). However, the cache-busting query (e.g.,` /map-block.js?bust=`) was ineffective in host applications using Vite/Vue, such as Central or a minimal Vue project, as the bundle could not be located. Once offline capabilities are integrated, leveraging web workers will simplify managing retries for any bundle or asset.
---
#### Checklist
- **Does it need UI/UX design?**
- [ ] Yes. Describe the UI/UX requirements or attach a Figma link in the "Design" section.
- [x] No
- **Does it need API design?**
- [ ] Yes. Specify the endpoints, methods, or data structures needed.
- [x] No
- **Does it need design around state flow?**
- [ ] Yes. Outline the state flow requirements.
- [x] No
- **Does it need a test plan?**
- [x] Yes. Add the test plan as a comment in this task or attach the document.
- Test plan to verify failure detection, retry logic, and offline form submission.
#### Dependencies
- Requires service worker implementation for offline support.
---
#### Related Issues
- https://github.com/getodk/web-forms/issues/305
Contributor guide
No contributing guide indexed for this repository
Research direction
Review the linked PR #491 and related issue #305 first, then locate the service-worker implementation this work depends on. Use the stated test plan to verify failure detection, retry logic, and offline form submission; done means those scenarios pass without relying on the ineffective cache-busting approach.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript, vite
- Domain
- frontend, web-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100