본문 바로가기

Frontend/React Native

[RN / Expo] Expo vs Expo CLI vs Expo SDK

 

✅ Expo란?

Expo란, React Native 앱을 더 쉽게 만들고 배포할 수 있도록 도와주는 플랫폼 + 툴 체인(toolchain)이다.

 

 

 

📦 Expo의 구성 요소들

구성 요소 설명
Expo Go 앱 모바일에서 앱을 실시간으로 미리보기할 수 있는 앱 (앱스토어/플레이스토어에서 설치 가능)
Expo CLI expo 명령어로 앱을 생성/실행/빌드/배포할 수 있는 커맨드라인 도구
Expo SDK GPS, 카메라, 푸시알림 등 다양한 기능들을 쉽게 쓸 수 있게 만든 라이브러리 모음

 

 

 

 

expo CLI와 expo SDK의 차이

구분 Expo CLLI Expo SDK
역할 명령어 기반 툴 (앱 실행/빌드/배포 등) 앱에서 쓰는 기능 라이브러리 모음
설치 위치 로컬에 설치 (npm, yarn 등으로) 프로젝트 내부에 설치됨 (package.json에 명시됨)
버전 확인 expo --version package.json에서 expo 항목의 버전 확인

 

 

// package.json 예시

{
  "dependencies": {
    "expo": "^50.0.0"
  }
}

 

 

 

 

✅ 보너스 질문: 그럼 expo랑 react-native는 어떻게 다르지?

  • React Native는 기본적으로 Android/iOS 네이티브 코드 빌드 도구 설정이 직접 필요해요.
  • Expo는 그런 복잡한 설정 없이 앱을 더 쉽게 만들 수 있게 해주는 프레임워크이자 툴체인이에요.
항목 React NAtive (Bare) Expo (Managed)
네이티브 설정 직접 해야 함 자동으로 구성됨
빌드/배포 복잡함 명령어 한 줄로 가능
빠른 테스트 X Expo Go 앱으로 가능
자유도 매우 높음 다소 제한됨 (그러나 많이 개선됨)

 

 

 


+++ 보너스 tmi

 

 

✅ 트러블슈팅: Expo CLI 버전 낮음  이슈

expo 개발환경세팅하면서 내가 겪었던 문제점은...

왜 인지는 모르겠으나 Expo CLI 버전이 너무 낮아서(0.22.22) 지우고 다시 설치해서 버전 업데이트하느라 꽤나 고생했다.

gpt로 해결법 찾으려다가도 계속 안 되면, 항상 공식문서를 참고하도록!!!

https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/

 

Upgrade Expo SDK

Learn how to incrementally upgrade the Expo SDK version in your project.

docs.expo.dev

 

 

 

 

🧨 낮은 Expo CLI 버전에서 발생 가능한 주요 문제들

문제 유형 구체적인 현상
🔄 명령어 비호환 npx expo start --tunnel 같은 명령어 실행 시 Unknown option 또는 동작 안 함
🔗 프록시 서버 미지원 이전에는 가능하던 makeRedirectUri({ useProxy: true })가 작동하지 않거나, deprecated 됨
🧱 프로젝트 생성 구조 차이 최신 Expo는 expo-router, expo-updates, config plugins를 포함한 새로운 구조를 사용함
— 구버전 CLI로 만든 프로젝트는 파일 구조나 설정 방식이 다름
SDK 버전 호환성 에러 프로젝트에 설치된 expo 버전이 예를 들어 52인데, CLI가 46을 기반으로 동작하고 있으면
"expected version ~52.0.0" 같은 경고 또는 빌드 실패가 발생
📦 패키지 설치 시 충돌 최신 패키지 설치하려고 하면 구버전 CLI가 peerDependencies를 제대로 해석 못해서 npm install 자체가 꼬일 수 있음
🚫 Expo Go 연결 문제 낮은 CLI는 현재 Expo Go 앱 버전과 연결이 안 맞아서 QR 찍어도 무한 로딩
또는“디버그 빌드 필요” 오류 발생
가능
🪲 디버깅 도구 제한 npx expo start --dev-client 사용 불가하거나, 로그가 부정확하게 출력됨

 

'Frontend > React Native' 카테고리의 다른 글

[RN / Expo] Vector Icon vs Image Icon(SVG or PNG)  (0) 2025.04.04