PWA 핵심 구성요소: Manifest


Manifest?

PWA가 단순한 웹에서 앱이 되는 전환점은 manifest.json에 있다.

이 파일은 브라우저에게 이 웹이 앱처럼 설치될 수 있다는 신호를 준다.

즉, 웹의 메타데이터(metadata) 역할을 하며

아이콘, 이름, 시작 경로, 표시 모드(display mode) 등을 정의한다.

Manifest 파일의 기본 구조

{
  "name": "Lux Store",
  "short_name": "Lux",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#111111",
  "icons": [
    {
      "src": "/icons/icon-192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ]
}
필드역할
name앱의 전체 이름, 홈 화면에 표시될 이름
short_name아이콘 아래 짧은 이름
start_url앱 실행 시 처음 열릴 경로
display앱 표시 방식(standalone, fullscreen, minimal-ui, browser)
background_color스플래시 화면의 배경색
theme_color브라우저 툴바 색상
icons설치 아이콘 이미지(192px, 512px 이상 권장)

Display 모드가 바꾸는 UX

display 속성은 앱이 실행될 때의 화면 형태를 결정한다.

일반적으로는 PWA는 standalone을 사용,

사용자는 홈 화면에서 실행했을 때 브라우저 UI가 사라지고 앱 전용 창을 오픈한 경험을 얻는다.

  • browser: 일반 웹처럼 주소창・탭 노출
  • minimal-ui: 주소창만 최소화된 브라우저
  • standalone: 앱처럼 동작, 주소창 없음
  • fullscreen: 완전한 전체 화면 모드



Add to Home Screen(A2HS) 동작 과정

브라우저는 다음 조건이 충족되면 이 웹을 설치할 수 있다는 프로그래시브 신호를 감지한다.

다음 조건이 만족되면 Chrome, Edge 등은 자동으로 A2HS 가능 상태로 전환한다.

  • 설치 조건
    1. HTTPS 환경에서 제공될 것
    2. 유효한 manifest.json이 존재할 것
    3. Service Worker가 등록되어 있을 것



beforeinstallprompt 이벤트로 제어하기

브라우저가 설치 가능한 상태가 되면, beforeinstallprompt 이벤트가 발생한다.

개발자는 사용자에게 언제, 어떻게 설치 안내를 띄울지 설정할 수 있다.

예를 들어, 페이지 진입 10초후에 설치 배너 표시하려고 할 때:

let deferredPrompt;

window.addEventListener('beforeinstallprompt', (e) => {
  e.preventDefault();
  deferredPrompt = e;

  // 커스텀 설치 버튼 노출
  const installBtn = document.querySelector('#install-btn');
  installBtn.style.display = 'block';

  installBtn.addEventListener('click', async () => {
    deferredPrompt.prompt();
    const choice = await deferredPrompt.userChoice;
    if (choice.outcome === 'accepted') {
      console.log('사용자가 설치를 수락했습니다.');
    }
    deferredPrompt = null;
  });
});

홈 화면에 추가된 후

설치가 완료되면, 브라우저는 manifest의 정보를 기반으로 OS 수준의 앱 아이콘을 생성한다.

설치된 PWA는 이후 브라우저 캐시 및 서비스 워커를 통해 오프라인에서도 실행 가능.

  • Android: 런처 아이콘으로 표시, 실행 시 standalone 창에서 구동
  • iOS(Safari): 홈 화면에 추가 수동 트리거 방식(자동 배너 없음)
  • 데스크톱 Chrome: 앱 설치 시 OS 프로그램 목록에도 추가됨

설치 UX를 CTA(Call To Action)로 디자인하면 전환율이 높아진다.

e.g. 앱으로 더 빠르게 열기


manifest 검증과 진단은 어떻게 할까?

Chrome DevTools → Application → Manifest 탭에서 설치 가능 여부를 실시간으로 확인 가능.

[Lighthouse]의 [Progressive Web App] 카테고리를 통해 다음 항목을 자동으로 점검할 수 있다.

  • manifest 유효성
  • 앱 설치 가능 여부
  • 오프라인 대응 여부
  • HTTPS 보안 연결 상태

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다