개발일지

[개발일지_safeHome] 14. react native로 app 시작하기

woopii 2026. 1. 18. 22:58

React Native 프로젝트 시작

1. React Native를 선택한 이유

이번 프로젝트는 웹이 아닌 앱만 제공하는 설치형 서비스를 목표로 했다.
iOS와 Android를 각각 네이티브로 개발하기엔 개발·유지 비용이 부담되기 때문에,
하나의 코드베이스로 두 플랫폼을 동시에 지원할 수 있는 React Native를 선택했다.

React Native는 이라는 특징이 있다.

  • JavaScript / TypeScript 기반
  • React 문법 그대로 사용
  • 실제 네이티브 컴포넌트로 렌더링

웹(React) 경험을 그대로 활용하면서도 네이티브 앱에 가까운 성능과 UX를 낼 수 있다.


2. 프로젝트 시작 시 Expo를 사용한 이유

React Native는 순수 CLI 방식으로 시작할 수도 있지만,
초기 환경 설정과 네이티브 빌드 설정이 복잡한 편이다.

이번 프로젝트에서는:

  • 빠른 시작
  • 설정 최소화
  • 실기기에서 즉시 실행

이 더 중요했기 때문에 Expo 기반으로 프로젝트를 시작했다.

Expo를 사용하면:

  • Android / iOS 개발 환경을 미리 갖추지 않아도 실행 가능
  • QR 코드 스캔만으로 실기기 테스트 가능
  • 파일 첨부, 알림, 카메라 등 앱에서 자주 쓰는 기능을 기본 지원

즉, 앱 개발에 집중할 수 있는 환경을 바로 만들 수 있다.


3. Expo란 무엇인가?

Expo는 React Native를 더 쉽게 쓰기 위한 도구이자 플랫폼다.

역할을 정리하면:

  • React Native 위에서 동작
  • 네이티브 설정을 감춰줌
  • 공통 API 제공 (알림, 파일, 센서 등)

개발 흐름은 다음과 같다:

 
React Native 코드 ↓
Expo ↓
iOS / Android 네이티브 앱
 

초기에는 Expo Go를 통해 앱을 설치 없이 실행하고,
필요해지면 실제 설치형 앱(APK, IPA) 으로 빌드할 수 있다.


4. Expo의 제약사항과 해결 방법

Expo는 React Native를 쉽게 시작할 수 있는 도구지만,
초기에는 몇 가지 분명한 제약이 존재했다.

과거 Expo의 주요 제약

  • Expo Go에서는 Expo SDK에 포함된 기능만 사용 가능
  • 커스텀 네이티브 코드(Swift / Kotlin) 직접 추가 불가
  • 특정 네이티브 라이브러리 사용 불가
  • 기본 앱 용량이 큰 편

이 때문에 Expo는 “프로토타입용 도구”라는 인식이 강했다.

 

하지만 현재는 상황이 많이 달라졌다.

Expo는 Prebuild와 Dev Client를 도입하면서
기존의 구조적 한계를 상당 부분 해소했다.

  • 필요 시 네이티브 코드 직접 추가 가능
  • 원하는 네이티브 라이브러리 설치 가능
  • Expo의 개발 편의성을 유지하면서 네이티브 확장 가능

즉, Expo는 더 이상
고정된 제약 안에서만 쓰는 도구가 아니라,
필요에 따라 점진적으로 확장할 수 있는 구조로 발전했다.