[React Native] DEV/PROD 환경 분리

DaYoung·2026년 1월 20일

React-Native

목록 보기
36/38

React Native에서 DEV/PROD 분리는 필수다.
iOS는 보통 환경(DEV/PROD) × 빌드모드(Debug/Release) 조합으로 Build Configuration을 만든다.

이름의미보통 사용
Dev.Debug개발 서버 + 디버그로컬 개발
Dev.Release개발 서버 + 릴리즈TestFlight QA
Debug운영 서버 + 디버그거의 안 씀
Release운영 서버 + 릴리즈App Store

1) Scheme

Configuration이 있어도 Scheme이 그걸 안 쓰면 의미 없음.

Xcode → Edit Scheme에서 보통 이렇게 고정한다.

  • RunDev.Debug
  • ArchiveDev.Release(QA용) 또는 Release(스토어용)

TestFlight는 Run이 아니라 Archive 결과물이다.
“개발계로 올렸는데 PROD처럼 보인다”는 대부분 Archive가 어떤 Configuration을 쓰는지부터 보면 됨

(확인 경로: Xcode 상단 Scheme 클릭 → Edit Scheme → Run/Archive의 Build Configuration)


2) iOS는 env가 “런타임”이 아니라 “빌드 타임”에 박힌다

Android는 flavor로 감이 오는데, iOS는 .env빌드할 때 네이티브 상수로 주입하는 방식이라서 스크립트가 안 돌면 값이 안 바뀐다.

  • 어떤 env 파일 쓸지: ENVFILE
  • 그 env를 iOS 네이티브에 주입: BuildDotenvConfig.rb

둘 중 하나라도 빠지면 앱에서는 계속 기본값(예: .env / BASE)이 찍힌다.


3) 설정

(1) Dev/Prod xcconfig에 ENVFILE 지정

// Dev.xcconfig
ENVFILE=$(SRCROOT)/../.env.dev
// Prod.xcconfig
ENVFILE=$(SRCROOT)/../.env.prod

(2) Target → Build Phases에 Run Script 1개 추가

Bundle React Native code and images 위에 추가:

set -e

RBC="${PROJECT_DIR}/../node_modules/react-native-config/ios/ReactNativeConfig/BuildDotenvConfig.rb"
ruby "$RBC"
  • Run Script 옵션에 Based on dependency analysis가 켜져 있으면
    Xcode가 “변경 없음”으로 판단해서 스크립트를 스킵할 수 있음.
  • 그럼 .env.dev 바꿔도 계속 예전 값(예: BASE)이 남는다.

👉 환경 분기할 때는 이 옵션 꺼두는 게 안전함.

profile
안녕하세요. 프론트앤드 개발자 홍다영입니다.

0개의 댓글