인디스트릿
앱 개발 경험 후기

with react-native

로토

목차

  • react-native 소개
  • expo 소개
  • 구현한 기능 및 코드 설명

react 개발하던 방식으로

native application 개발하기

다른 기술들도 많은데..

  • 이미 경험을 해보기도 했고
  • 다른 기술들 대비해서 개밥먹기가 가장 열심히 되고 있음
  • 이미 널리 쓰이고 있음

초기계획

인디스트릿 웹 버전 만들면서 만든
components-base를 활용해서

만들자!

graphql query, 공용 유틸 등

여러가지 문제에 직면

  • react-native에서 쓰는 react 버전이 달라서 충돌
    • 기존 lerna 기반으로 만든 mono repo를
      lerna + yarn workspace로 변경해서 해결
  • react-query 기반의 codegen으로 쿼리를 붙여봤으나
    ​잘 동작하지 않음
    • 디버깅도 용이하지 않아서 일단 REST API로
      빠르게 구현하고 나중에 붙이기로 전략을 수정
  • 사실상 mono repo에 있는 독립 프로젝트가 되어버림

expo?

  • react native 프레임워크
  • native와 관련된 코드를 전부 숨김
    • 프로젝트가 자바스크립트(or 타입스크립트)로만
      이루어짐
    • create-react-app 으로 react-app을 만드는 것과 비슷
      (webpack 설정 숨기기)
  • expo go 라는 앱을 이용하면 배포 없이도 실제 기기에서
    ​테스트 가능
    • ​expo 기반으로 개발된 앱의 js 번들을 expo go 앱에서
      불러와서 실행시키는 방식
    • ios는 개발자 등록 해야 가능
  • OTA 지원

expo 제약사항

  • native 관련 기능을 다 숨겨버리다보니, 직접 linking해서
    써야하는 모듈들은 설치가 안 되거나 호환이 안 됨
  • 특히 실제 디바이스의 기능들을 사용해야하면 expo가
    지원하는 모듈만 써야 정상작동할 확률이 큼
  • 앱 빌드시 expo sdk가 기본으로 들어가기 때문에,
    앱 사이즈 용량이 커질 수 있음

그럼에도 불구하고

  • expo를 전격 선택한 이유는
    • OTA를 기본으로 지원하기 때문에 code push 세팅이
      필요가 없었고
    • expo go 앱을 통해 앱을 빌드하고 배포하는 과정
      없이 실제 기기에서 테스트를 하기 용이했으며
    •  기존 사용경험이 있었기 때문

expo로 빌드하기

  • expo를 사용하는 경우 기본적인 빌드는 내 로컬 PC가
    ​아닌 expo 서버에서 빌드를 하는 방식
    • 맥 기기가 없어도 ios 앱을 빌드할 수 있는 장점이 있음
    • 단, 무료 사용자인 경우 앱 빌드 서버 자체에 사용량
      제한이 있어서 그런지 무료 사용자 빌드가 많으면
      pending이 오래 걸림
    • 빌드 완료 후에 빌드된 파일을 다운로드 받아서 사용함

eas build

  • expo application service
    • 내부적으로 eject 후 빌드하는 방식
    • expo sdk 전체가 포함되지 않고
      실제 사용되는 것만 앱 번들에
      포함되기 때문에 앱 용량이 감소
    • hermes 지원
  • 유료입니다.. 😅

얼추 개발이 진행되고

안드로이드 스토어와 앱스토어에

심사를 넣어봤습니다.

안드로이드 플레이 스토어

  • 추석 연휴에 심사를 올려서 그런지,
    심사 올리고 삼일에서 사일 정도 후에 올라옴
  • 출시하자마자는 플레이 스토어 검색에 안 걸림
    • 한 이삼일뒤부터 검색이 되더라고요.. 😥
    • 스토어 url로 직접 접근하면 접근은 가능했습니다.

iOS 앱스토어

  • 추석 연휴에 심사를 올렸는데 올리고 두시간 뒤에 바로
    피드백 옴
    • 버그 있으니까 고치라는 내용
    • deep linking 관련 기능이었는데, 저는 잘 되어서..
      그냥 deep linking 빼고 웹뷰 썼습니다.
  • 재심사 요청했는데 두시간 두에 바로 피드백 옴
    • 전체이용가로 올렸는데, 유튜브 링크가 있으면 12세 이상이어야 한다고 함
      • 유튜브가 12세 이상이라서..

결론

해볼만합니다!

인디스트릿 앱 개발 경험 후기

By TaeHee Kim

인디스트릿 앱 개발 경험 후기

인디스트랫 앱을 react-native와 expo로 개발해본 경험에 대해 정리해본 슬라이드

  • 70