피드로 돌아가기
Dev.toFrontend
원문 읽기
iOS 백그라운드 연결 단절 해결로 모바일 이용률 30.4% 달성
I Built a Mobile App in 3 Days. The Hard Part Was Keeping It Connected.
AI 요약
Context
Web 기반 AI 서비스의 모바일 전환 과정에서 iOS Hermes 엔진의 ReadableStream 미지원으로 인한 스트리밍 구현 제약 발생. 앱 백그라운드 진입 시 iOS의 공격적인 프로세스 정지로 네트워크 연결이 강제 종료되며 응답 데이터가 유실되는 병목 지점 확인.
Technical Solution
- ReadableStream 부재를 해결하기 위해 XMLHttpRequest의 onprogress 이벤트를 활용한 텍스트 청크 추적 구조 설계
- 클라이언트 상태 변화에 따른 데이터 유실 방지를 위해 서버 측 응답 전체를 Convex DB에 영속화하는 저장 전략 도입
- 연결 단절 후 재접속 시 DB에서 완료된 응답을 즉시 조회하여 복구하는 Reconnection 로직 구현
- Turborepo 기반 Monorepo 구조를 통해 Web과 Mobile 간 Type 및 API 정의를 공유하며 백엔드 로직 재구현 비용 최소화
- Expo Router와 Clerk Auth 통합으로 모바일 환경의 인증 및 네비게이션 계층 신속 구축
실천 포인트
1. iOS 환경에서 fetch API의 스트리밍 지원 여부 확인 및 필요 시 XHR onprogress 대체 방안 검토
2. 네트워크 연결이 불안정한 모바일 환경을 고려하여 '전송 중 데이터'의 서버 사이드 임시 저장소 설계
3. Monorepo 도입을 통한 프론트엔드 다각화 시 Type 공유 및 API 정의 단일화를 통한 개발 속도 최적화
4. 앱 백그라운드 전환 시나리오에 따른 데이터 복구 프로세스(Reconnection/Polling) 정의