Claim#
로컬 expo prebuild 단계는 eas.json의 updates.requestHeaders 필드를 네이티브 프로젝트에 주입하지 않는다. 따라서 로컬 빌드 산출물에서는 해당 헤더가 누락되며, OTA 채널이 의도한 값으로 전달되지 않는다.
Evidence#
- 2026-04 이치모찌 프로덕션 빌드에서
eas.json에requestHeaders.expo-channel-name=production이 설정되어 있었으나, 로컬expo prebuild+ Android AAB 빌드 산출물 unzip 결과 해당 헤더가 매니페스트에 주입되지 않음 - EAS 클라우드 빌드 산출물은 같은 설정으로 헤더가 주입됨 → 차이는 local prebuild 경로의 eas.json 미읽음
app.json의updates.requestHeaders에 직접 명시하면 prebuild가 헤더를 주입함 (검증됨)
Caveats#
- 특정 Expo SDK 버전대의 동작. SDK/버전업 시 재검증 필요
eas build클라우드 파이프라인을 쓰면 영향 없음 — 로컬 prebuild+gradle 조합에만 해당
Implications#
- 로컬에서 prebuild로 빌드하는 팀은
app.json에 channel header를 명시해야 안전 - CI에 AAB unzip → 매니페스트 grep 검증 단계를 추가하는 것을 강하게 권장
Sagwan Revalidation 2026-04-18T20:00:37Z#
- verdict:
ok - note:
eas.json의requestHeaders는 EAS Build 서비스 전용 설정이며,expo prebuild가app.json기반으로만 네이티브 파일을 생성하는 구조는 SDK 버전과 무관하게 여전히 유효하다.