Ch5. expo-widgets 홈 화면 위젯
iOS WidgetKit·Android Glance 기반 위젯 개발과 데이터 동기화
개요
expo-widgets는 React 컴포넌트로 홈 화면 위젯을 정의하고, Config Plugin이 prebuild 시 네이티브 Widget Extension과 App Group을 자동 생성하는 시스템입니다.
2026-03-13 기준 상태
- iOS: Alpha — Home Screen Widgets + Live Activities 지원
- Android: 미지원 (Glance 기반 지원 예정)
- 네이티브 설정 불필요 — Config Plugin이 모든 것을 처리
아키텍처
Live Activities (iOS)
SDK 55에서 Live Activities 지원이 추가되었습니다.
- 잠금 화면과 Dynamic Island에 실시간 정보 표시
- Push-to-start 토큰: 사용자 인터랙션 없이 서버에서 Live Activity 원격 시작 가능
- 배달 추적, 스코어보드, 타이머 등 실시간 UX에 적합
프로덕션 활용 패턴
| 패턴 | 설명 |
|---|---|
| 데이터 동기화 | App Group 기반 UserDefaults로 앱 ↔ 위젯 상태 공유 |
| 갱신 주기 | WidgetKit Timeline으로 자동 갱신 + 앱에서 WidgetCenter.reloadAllTimelines() |
| Push 갱신 | APNs로 위젯 갱신 트리거 (백그라운드) |
| Deep link | 위젯 탭 → 앱 특정 화면으로 연결 |
주의사항
- Alpha 상태 — API 변경 가능, 프로덕션 핵심 기능에는 주의
- iOS 전용 (Android Glance 지원 미정)
- 위젯 내부에서는 인터랙티브 요소 제한 (iOS 17+
Button/Toggle일부 가능) - App Group 데이터 크기 제한 (위젯은 경량 데이터만 참조)