chore(openspec): propose mobile stack decision (RN/Expo vs Flutter)

This commit is contained in:
admin 2025-11-17 23:32:35 +00:00
parent 0cd2d50810
commit 3d95ecea9f

View file

@ -0,0 +1,48 @@
# 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>`