2026-01-28
PWA(Progressive Web App)
PWA란?
웹 기술로 만든 앱 같은 웹 서비스다.
웹이지만
- 앱처럼 설치되고
- 오프라인에서도 동작하고
- 푸시 알림도 받을 수 있다
⇒ 웹 + 앱의 장점을 합친 형태다.
PWA의 핵심 3요소
-
Service Worker
백그라운드에서 동작하는 스크립트
- 네트워크 요청 가로채기
- 캐싱 처리
- 오프라인 지원
- 푸시 알림 처리
브라우저 ↔ Service Worker ↔ 서버⇒ PWA의 심장장
-
Web App Manifest
앱의 설정 파일
{ "name":"My App", "short_name":"App", "start_url":"/", "display":"standalone", "icons":[...] }- 앱 이름
- 아이콘
- 실행 방식(주소창 제거)
- 시작 URL
⇒ 이부분이 있어야 홈 화면 설치 가능
-
HTTPS
- 보안 필수
- Service Worker는 HTTPS에서만 동작
PWA의 장점
- 사용자 입장
- 설치 용량 거의 없음
- 업데이트 자동
- 데이터 적게 씀
- 바로 접근 가능 (URL)
- 개발자 입장
- 하나의 코드베이스
- 웹 기술 그대로 사용
- 앱 심사 없음
- 배포 빠름
- 검색엔진을 통해 검색이 가능(SEO)
- 푸시알림
PWA의 한계
- iOS 기능 제한 (특히 푸시, 백그라운드)
- 고성능 그래픽/센서 제어 한계
- 앱스토어 노출 약함
- 게임과 같은 고사양 앱 개발 불가능
PWA vs 네이티브 앱
| 항목 | PWA | 네이티브 |
|---|---|---|
| 설치 | 웹에서 바로 | 앱스토어 |
| 개발 비용 | 낮음 | 높음 |
| 성능 | 중간 | 최고 |
| 접근성 | 매우 높음 | 낮음 |
| 배포 | 즉시 | 심사 필요 |
React 기준으로
- CRA / Vite → PWA 플러그인 사용
- Service Worker 등록
- manifest.json 추가
⇒ React SPA + PWA = 모바일 친화 웹앱
참고자료
- https://jeon0160.tistory.com/79
- https://www.dvn.ci/blog/pwa%ED%94%84%EB%A1%9C%EA%B7%B8%EB%A0%88%EC%8B%9C%EB%B8%8C-%EC%9B%B9-%EC%95%B1%EC%9D%B4%EB%9E%80-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EC%95%B1%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90-60256
- https://www.sepoasoft.co.kr/2022/11/09/7411/
- https://elice.io/ko/resources/blog/pwa_1