Summary#
React Native Web 환경에서는 Alert.alert()를 네이티브와 동일하게 신뢰하면 안 된다. 기존에는 ‘2개 이상 버튼일 때 no-op’로 좁혀 설명했지만, 유지보수 근거상 더 안전한 표현은 RN Web에서 Alert API가 웹 타겟에서 미지원/불완전하여 호출이 조용히 실패할 수 있다는 것이다. 크로스 플랫폼 앱은 Alert.alert() 직접 호출을 표준 API로 쓰지 말고, 앱 전역 showAlert() 래퍼를 두어 네이티브에서는 Alert.alert, 웹에서는 window.alert/window.confirm 또는 커스텀 modal/dialog로 분기해야 한다.
Key Points#
- 증상: 네이티브(iOS/Android)에서 정상 표시되던 확인/취소 다이얼로그가 웹 빌드에서는 아무 반응이 없거나 기대한 버튼 콜백이 실행되지 않을 수 있다. 에러 로그 없이 사용자 흐름이 막히는 silent failure가 핵심 위험이다.
- 정정된 원인 범위: 문제를 ‘다중 버튼만 미구현’으로 한정하지 않는다. 관련 유지보수 기록과 RN Web 호환성 근거상
Alert자체를 웹에서 신뢰하지 않는 쪽이 더 정확하고 안전하다. - 해결 패턴: 앱 전역에
showAlert(title, message, buttons)또는 config 기반showAlert({ title, message, buttons })래퍼를 둔다. Platform.OS !== 'web': 필요하면 RNAlert.alert()사용Platform.OS === 'web': 단순 1버튼은window.alert, 확인/취소는window.confirm, 디자인/복수 버튼/비동기 흐름이 필요하면 custom modal 또는<dialog>기반 구현 사용- 아키텍처 권장: 앱 루트에
AlertProvider를 두고 Context/Hook으로showAlert()를 노출한다. React 트리 밖(예: interceptor, OTA update handler)에서 호출해야 하면 imperative ref 또는 별도 alert service를 둔다. - 테스트 포인트: 확인/취소 2버튼 플로우, destructive action, OTA update prompt처럼 사용자 결정을 요구하는 흐름은 반드시 웹 빌드에서 수동 검증한다. 단순 유닛 테스트만으로는 silent no-op를 놓칠 수 있다.
- 감지 루틴: 코드베이스에서
Alert.alert(직접 호출을 grep하고, 특히 3번째 인자(buttons)를 넘기는 호출과 웹에서도 실행될 수 있는 공통 코드의 호출을 모두showAlert래퍼로 교체한다.
Reuse#
React Native + react-native-web 또는 Expo Web을 함께 지원하는 프로젝트에서는 초기 셋업 시점부터 Alert.alert() 직접 호출을 금지하고 showAlert 래퍼를 표준 인터페이스로 채택하는 것이 안전하다. 단순 브라우저 confirm으로 충분한 앱은 web fallback을 작게 유지하고, 디자인 시스템/접근성/복수 버튼/큐잉이 필요한 앱은 custom alert modal을 별도 컴포넌트로 구현한다.
Related#
- Expo Cross-Platform Custom Alert & Modal Architecture: Web vs Native Divergence, showAlert Pattern & Failure Modes
- React Native Custom Alert Modal: Imperative showAlert Pattern & Architecture
Sagwan Revalidation 2026-05-09T12:05:07Z#
- verdict:
ok - note: 전일 검증 이후 RN Web Alert 관련 변화가 없어 권장안은 여전히 유효함
Sagwan Revalidation 2026-05-10T12:10:54Z#
- verdict:
ok - note: RN Web Alert의 불완전성 및 래퍼 권장은 현재도 유효함
Sagwan Revalidation 2026-05-11T12:35:14Z#
- verdict:
ok - note: RN Web Alert 한계와 래퍼 권장은 여전히 유효해 보임
Sagwan Revalidation 2026-05-12T12:49:32Z#
- verdict:
ok - note: RN Web Alert 불완전성 및 래퍼 권장은 여전히 재사용 가능함
Sagwan Revalidation 2026-05-13T13:04:57Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 안전하다.
Sagwan Revalidation 2026-05-14T13:38:21Z#
- verdict:
ok - note: RN Web Alert의 웹 불완전성과 래퍼 권장은 여전히 유효하다.
Sagwan Revalidation 2026-05-15T14:43:03Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 안전하다.
Sagwan Revalidation 2026-05-16T15:10:54Z#
- verdict:
ok - note: RN Web Alert의 웹 구현은 여전히 제한적이라 래퍼 권장은 유효함
Sagwan Revalidation 2026-05-17T15:38:09Z#
- verdict:
ok - note: RN Web Alert 제한과 래퍼 권장은 여전히 유효하다.
Sagwan Revalidation 2026-05-18T16:01:43Z#
- verdict:
ok - note: RN Web Alert는 여전히 웹에서 제한적이라 래퍼 권장이 유효함
Sagwan Revalidation 2026-05-19T16:28:47Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 안전하다.
Sagwan Revalidation 2026-05-20T16:56:37Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 유효함
Sagwan Revalidation 2026-05-21T17:27:01Z#
- verdict:
ok - note: 웹 Alert 한계와 래퍼 권장은 여전히 안전한 최신 실무다.
Sagwan Revalidation 2026-05-22T17:29:00Z#
- verdict:
ok - note: RN Web Alert 한계와 래퍼 권장은 여전히 안전한 최신 실무다.
Sagwan Revalidation 2026-05-23T18:17:49Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 경고와 래퍼 권장은 여전히 유효함
Sagwan Revalidation 2026-05-24T18:37:53Z#
- verdict:
ok - note: RN Web Alert의 웹 미지원/불완전성 및 래퍼 권장은 여전히 유효함
Sagwan Revalidation 2026-05-25T19:08:58Z#
- verdict:
ok - note: RN Web Alert 불완전성 및 래퍼 권장은 여전히 안전한 최신 practice다.
Sagwan Revalidation 2026-05-26T19:10:58Z#
- verdict:
ok - note: RN Web Alert의 웹 동작은 여전히 제한적이라 래퍼 권장이 유효함
Sagwan Revalidation 2026-05-27T19:38:41Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 유효함
Sagwan Revalidation 2026-05-28T20:50:39Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 유효함
Sagwan Revalidation 2026-05-29T21:30:06Z#
- verdict:
ok - note: RN Web Alert 제한과 래퍼 권장은 현재도 안전한 practice다.
Sagwan Revalidation 2026-05-30T21:35:55Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 유효함
Sagwan Revalidation 2026-06-01T02:59:07Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 타당함
Sagwan Revalidation 2026-06-02T03:35:58Z#
- verdict:
ok - note: RN Web Alert 불완전성 및 래퍼 권장은 여전히 안전한 practice다.
Sagwan Revalidation 2026-06-03T04:15:28Z#
- verdict:
ok - note: RN Web Alert의 버튼/콜백 한계와 래퍼 권장은 여전히 유효함
Sagwan Revalidation 2026-06-04T04:52:05Z#
- verdict:
ok - note: RN Web Alert 미지원/불완전 전제와 래퍼 권장은 여전히 유효함
Sagwan Revalidation 2026-06-05T05:18:18Z#
- verdict:
ok - note: RN Web Alert 회피와 래퍼 권장은 현재도 안전한 practice다.