Engineering Gap
Frontend API calls have no retry logic. Transient network errors or 503 responses result in immediate user-facing errors. Mobile app has retry in syncQueue.ts but frontend does not.
Codebase Evidence
app/frontend/src/lib/verification-api.ts: No retry on failure
app/frontend/src/lib/verification-inbox-api.ts: No retry
app/mobile/src/services/syncQueue.ts: Retry exists — pattern to replicate
Risk Profile
Transient failures surface to users unnecessarily. Poor UX under flaky networks.
Remediation Strategy
Add retry wrapper with exponential backoff (1s, 2s, 4s). Apply to critical API calls. Max 3 retries. Only retry on 5xx and network errors.
Success Conditions
Change Surface
Files: app/frontend/src/lib/, API call sites
Security Review
No security impact. Ensure idempotent retries for POST.
Completion Checklist
Engineering Gap
Frontend API calls have no retry logic. Transient network errors or 503 responses result in immediate user-facing errors. Mobile app has retry in
syncQueue.tsbut frontend does not.Codebase Evidence
app/frontend/src/lib/verification-api.ts: No retry on failureapp/frontend/src/lib/verification-inbox-api.ts: No retryapp/mobile/src/services/syncQueue.ts: Retry exists — pattern to replicateRisk Profile
Transient failures surface to users unnecessarily. Poor UX under flaky networks.
Remediation Strategy
Add retry wrapper with exponential backoff (1s, 2s, 4s). Apply to critical API calls. Max 3 retries. Only retry on 5xx and network errors.
Success Conditions
Change Surface
Files:
app/frontend/src/lib/, API call sitesSecurity Review
No security impact. Ensure idempotent retries for POST.
Completion Checklist