피드로 돌아가기
Dev.toFrontend
원문 읽기
Local DB 공백을 신규 유저로 오인하는 Reinstall Bug 해결 및 State Machine 기반 복구 설계
The reinstall bug almost every Flutter app ships
AI 요약
Context
Local DB와 Cloud Backend를 동기화하는 일반적 아키텍처에서 앱 재설치 시 Local Storage가 삭제됨에 따라 발생하는 데이터 인식 오류 분석. 단순 hasLocalData 체크 기반의 분기 로직으로 인해 기존 유저가 신규 유저의 Onboarding 과정으로 잘못 진입하는 사용자 경험 손실 발생.
Technical Solution
- 단순 조건문 대신 4가지 시그널(Interrupted Checkpoint, Local Data, Account Status, Authenticated Empty DB)을 처리하는 State Machine 도입
- Cloud Backend 부하 방지를 위해 전체 데이터 요청 전 Manifest 기반의 저비용 Probe 단계 수행
- 네트워크 불안정성에 대응하기 위한 Cursor-paged Batch Pull 및 배치 단위의 Checkpoint 기록 구조 설계
- 데이터 중복 방지 및 일관성 유지를 위한 Idempotent Upsert 전략 적용
- Secure Storage에서 암호화 키를 우선 복구한 후 Local DB 쓰기를 수행하는 엄격한 순차적 복구 프로세스 구축
- 일시적 네트워크 오류를 데이터 손실로 오인하지 않도록 Retry-into-Resume 메커니즘 구현
실천 포인트
- 앱 재설치 후 Signed-in 상태의 Local DB 공백 시나리오에 대한 Cold-launch 경로 검증 - 대량 데이터 복구 시 중단 지점을 기록하는 Checkpoint 로직 및 중복 방지를 위한 Idempotency 보장 여부 확인 - Local Storage 삭제 시 Encryption Key 복구 전략이 데이터 쓰기 단계보다 선행되는지 검토