SellerBox는 온라인 셀러가 상품·주문·매출·광고·모니터링을 모바일에서 다루는 React Native 앱입니다. 서클플랫폼의 메인 제품 중 하나로, 저는 OTA 배포 인프라와 CI/CD, 전반적인 안정성 쪽에 집중해서 기여해 왔습니다.
맡은 부분
S3 기반 CodePush 자체 구축
Microsoft App Center CodePush는 서비스 종료가 예정돼 있었고, EAS Update는 구독료 부담이 있었습니다. 앱 개수가 계속 늘어나는 상황이었기 때문에 유료 구독에 묶이지 않는 자체 인프라가 필요했고, 그래서 AWS S3 하나로 번들 업로드·버전 매니페스트·롤백까지 직접 구현했습니다. 앱은 기동 시 S3에서 매니페스트를 읽고, 필요한 경우 번들을 내려받아 다음 실행 때 적용합니다. 자세한 설계와 운영 방식은 블로그 글에 정리했고, 이후 매머드·더리터 점주앱에도 그대로 이식했습니다.
Codemagic + Fastlane + GitHub Actions CI/CD
codemagic.yaml을 여러 번 다듬으며 iOS·Android 동시 배포를 자동화했습니다. Fastlane으로 인증·업로드를 자동화하고, App Store Connect 자동 업로드와 Slack 알림까지 엮어서 릴리즈 사이클을 줄였습니다. Bridgeless 모드에서도 CodePush 리로드가 매끄럽게 동작하도록 네이티브 쪽까지 함께 손봤습니다.
Expo 54 + RN 0.81 + React 19 업그레이드
메이저 버전 업그레이드를 맡아서 의존성 호환성 점검, 내부 라이브러리 교체, 네이티브 모듈 재빌드까지 함께 처리했습니다. 16KB 페이지 정렬 미지원 네이티브 라이브러리 업데이트, iOS 시뮬레이터 부트스트랩 안정화 같은 실전 이슈도 같이 털어냈습니다.
BottomModal · SafeScreenView 리팩토링
react-native-modal 기반의 BottomModal을 @gorhom/bottom-sheet로 전면 교체했습니다. 이 과정에서 Android 소프트 네비게이션 바가 화면을 가리는 문제, iOS 키보드 포커스 깨지는 이슈, 키보드가 올라올 때 스냅 포인트가 어긋나는 문제 등을 정리했고, 전체 스택 화면을 새로 만든 SafeScreenView로 마이그레이션했습니다.
IAP v13 → v14 마이그레이션
멤버십 구독 결제에 쓰던 IAP API가 구버전 함수 기반이었습니다. v14 스펙에 맞춰 교체하고 deprecated 함수를 제거했습니다.
카카오 로그인 네이티브 브릿지
별도 레포로 분리된 RN Kakao Login 네이티브 브릿지를 앱에 붙였습니다. 초기화 시점에 RNKakaoLogins가 null일 때 나던 크래시는 safe unwrapping으로 막았습니다.
모니터링 기능 UX 정리
셀러 모니터링 관련해서 분석 API가 실패해도 편집 화면은 유지되도록 처리하고, 수집 중 상품 리스트 피드백과 모니터링 갱신 루프의 불필요한 재호출을 차단하는 등 사용자 혼선이 생기는 지점들을 다듬었습니다.
햅틱 피드백
홈·주문·검색·필터·탭 전환 등 주요 액션에 섬세한 햅틱 피드백을 붙였습니다. 에뮬레이터에서는 스킵하고 네이티브 에러가 떨어져도 앱이 죽지 않도록 예외 처리를 함께 넣었습니다.
스택
React Native, Expo, TypeScript, Redux Toolkit, React Query, Recoil, 자체 CodePush(AWS S3), Codemagic, Fastlane, GitHub Actions, Firebase, React Native WebView, RN Kakao Login 브릿지, @gorhom/bottom-sheet.
공통 WebView 셸과 CodePush 이식 관련 상세는 점주앱 프로젝트에 정리했습니다.






