Docs: Add explicit browser compatibility floor and graceful fallback for unsupported clients #4

Closed
opened 2026-09-01 20:38:20 +00:00 by Ty · 2 comments
Owner

Summary

The refactor docs do not define browser compatibility requirements or any gating for older, incompatible browsers. Phase 6 acceptance only says "E2E capture→publish on iPhone and Android browsers works," which is too vague to be testable.

This issue tracks making that promise explicit without turning it into a POC blocker.

Scope

Three items, kept small:

  1. Minimum version floor — document the oldest iOS Safari and Android Chrome the app will support, written into the tech spec as a real constraint rather than an assumption.

  2. Graceful fallback — when an unsupported browser loads the app, show a clear message with a link to update, instead of a broken mask or silent failure. No polyfill work; a hard stop is fine.

  3. Load-bearing API inventory — a short note listing the APIs the client depends on (OffscreenCanvas, the crop pipeline, File System Access if used, etc.) so future contributors know what not to break.

Non-goals

  • Not a POC gate. The existing Phase 6 acceptance is sufficient for V1.
  • No polyfill strategy or broad browser-matrix testing.
  • No changes to the hybrid architecture or server stack.

Acceptance criteria

  • Tech spec names a minimum iOS Safari and Android Chrome version.
  • Unsupported-browser fallback behavior is specified (message + update link).
  • Load-bearing client APIs are listed in the docs.
  • Issue is associated with the docs/refactor-v2 branch.
## Summary The refactor docs do not define browser compatibility requirements or any gating for older, incompatible browsers. Phase 6 acceptance only says "E2E capture→publish on iPhone and Android browsers works," which is too vague to be testable. This issue tracks making that promise explicit without turning it into a POC blocker. ## Scope Three items, kept small: 1. **Minimum version floor** — document the oldest iOS Safari and Android Chrome the app will support, written into the tech spec as a real constraint rather than an assumption. 2. **Graceful fallback** — when an unsupported browser loads the app, show a clear message with a link to update, instead of a broken mask or silent failure. No polyfill work; a hard stop is fine. 3. **Load-bearing API inventory** — a short note listing the APIs the client depends on (OffscreenCanvas, the crop pipeline, File System Access if used, etc.) so future contributors know what not to break. ## Non-goals - Not a POC gate. The existing Phase 6 acceptance is sufficient for V1. - No polyfill strategy or broad browser-matrix testing. - No changes to the hybrid architecture or server stack. ## Acceptance criteria - [ ] Tech spec names a minimum iOS Safari and Android Chrome version. - [ ] Unsupported-browser fallback behavior is specified (message + update link). - [ ] Load-bearing client APIs are listed in the docs. - [ ] Issue is associated with the docs/refactor-v2 branch.
Ty added this to the POC milestone 2026-09-01 23:49:50 +00:00
Author
Owner

Doc changes applied:

  • TECH-SPEC §0 added: browser minimums (iOS Safari 17, Android Chrome 110), load-bearing API inventory, hard stop for unsupported browsers.
  • UX.md added "Browser compatibility" section with fallback message and update link.

Test cases needed once implementation exists:

  1. Hard stop — loading the app in a browser below the minimum version shows the compatibility message with an update link, not a broken mask or blank screen.
  2. API detection — the app does not crash or silently fail when load-bearing APIs are available; it functions normally.
Doc changes applied: - TECH-SPEC §0 added: browser minimums (iOS Safari 17, Android Chrome 110), load-bearing API inventory, hard stop for unsupported browsers. - UX.md added "Browser compatibility" section with fallback message and update link. Test cases needed once implementation exists: 1. **Hard stop** — loading the app in a browser below the minimum version shows the compatibility message with an update link, not a broken mask or blank screen. 2. **API detection** — the app does not crash or silently fail when load-bearing APIs are available; it functions normally.
Owner

Verified in main @ 0c00d25: REQUIREMENTS.md:18 CAPTURE-10 shipped (iOS Safari, Android Chrome, desktop Chrome/Edge/Firefox, hard stop, no polyfills). frontend/src/browser.ts implements the check.

Verified in main @ 0c00d25: REQUIREMENTS.md:18 CAPTURE-10 shipped (iOS Safari, Android Chrome, desktop Chrome/Edge/Firefox, hard stop, no polyfills). frontend/src/browser.ts implements the check.
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Ty_Tech/SlabUploader#4