morethanadiagnosis-hub/openspec/changes/2025-11-17-mobile-stack-decision/proposal.md

1.9 KiB
Raw Blame History

Proposal: Mobile Stack Decision (Android/iOS)

Status: draft Authors: Platform Team Owners: Architecture Lead, Mobile Lead Created: 2025-11-17 Scope: spec Related: openspec/specs/architecture.md

Summary

  • Decide between React Native + Expo vs Flutter for Android/iOS with full accessibility parity, strong privacy posture, and long-term maintainability.

Motivation

  • Commit to a mobile stack that accelerates delivery while meeting a11y, compliance, and performance requirements across all features.

Goals / NonGoals

  • Goals: select stack, document rationale, list enabling libraries/tooling, define migration/rollback path.
  • NonGoals: finalize design system visuals (handled in later proposals).

Evaluation Criteria

  • Accessibility: VoiceOver/TalkBack parity; dynamic type; reduced motion; larger text support.
  • Performance: cold start, nav latency, list virtualization; p95 targets defined in architecture spec.
  • Ecosystem: firstparty support, community libs for a11y, storage, media, push, payments.
  • Compliance & Security: secure storage, network stack, logging redaction, crash reporting controls.
  • Developer Experience: CI/CD, hot reload, E2E testing, upgrade cadence.

Options

  • React Native + Expo (with Reanimated, RNSkia optional, TypeScript, Detox/E2E)
  • Flutter (Dart, integration_test/E2E, Impeller renderer)

Risks & Mitigations

  • Accessibility gaps → add native modules or platform adapters; enforce CI a11y gates.
  • Perf regressions → profiling budgets and regression tests.

Rollout Plan

  • Pilot with Forum MVP screens; run A11y + perf checks; make decision.

Test Plan

  • Prototype forum list/thread/post; run a11y audits; measure startup and interaction latencies.

Acceptance Criteria

  • Decision recorded with rationale; pilot results included; signoff from a11y and compliance.

Slash Commands

  • /review areas=mobile,accessibility,security
  • /apply spec=openspec/specs/architecture.md
  • /archive link=<PR>