什麼是 PWA

Progressive Web App(漸進式網頁應用)是一種讓網站具備部分原生 App 功能的技術集合:

  • 可以「加到主畫面」——在 iOS/Android 手機桌面上有自己的圖示,點開後沒有瀏覽器地址欄,體驗像原生 App
  • 離線讀取——已瀏覽過的頁面可以在沒有網路的情況下存取(透過 Service Worker 快取)
  • 推播通知——主動向已安裝到桌面的用戶發送通知(Android 支援較好,iOS 自 iOS 16.4 起支援)
  • 更快的載入速度——透過 Service Worker 快取靜態資源

PWA 不需要在 App Store 上架,不需要原生開發,是網站技術的延伸。

PWA 對品牌官網的實際效益評估

並不是所有品牌官網都需要 PWA。以下是誠實的效益評估:

明顯有幫助的情境

你的網站內容需要頻繁查詢: 例如服務細節、報價資訊、作品集——如果用戶可能多次回訪,「加到主畫面」讓回訪更方便。

你的目標用戶在網路不穩定的環境下訪問: 施工現場、戶外活動、部分台灣原住民族地區。離線快取讓你的核心頁面在弱網路下仍可閱覽。

每週都有新內容(部落格/媒體型網站): 推播通知可以在新文章發布時通知訂閱者,比 Email 更即時。

效益有限的情境

對「一次性瀏覽、主要用於潛在客戶轉換」的品牌官網,PWA 的大部分功能意義不大——用戶決定是否聯絡你,通常不需要多次回訪,也不需要離線閱覽。

PWA 的 3 個核心技術

1. Web App Manifest

一個 JSON 格式的設定檔,定義 App 的「外觀」:

  • App 名稱
  • 圖示(多尺寸,用於不同設備)
  • 主題色(開啟 App 時的頂部狀態欄顏色)
  • 顯示模式(standalone:隱藏瀏覽器 UI,讓它更像原生 App)
  • 起始頁面 URL

在 Next.js 中,在 app/manifest.ts 中匯出 manifest 設定物件,Next.js 會自動生成 manifest.json 並在 HTML head 中引用。

2. Service Worker

在瀏覽器背景執行的 JavaScript,負責攔截網路請求、管理快取。

Service Worker 是 PWA 最複雜的部分,但對大多數品牌官網,使用 next-pwa 這個套件可以幾乎零設定地自動生成 Service Worker。

3. HTTPS

PWA 要求網站必須在 HTTPS 下運作(localhost 例外)。所有現代主機服務(Vercel、Netlify、Cloudflare)都預設提供 HTTPS,這不是需要額外處理的問題。

在 Next.js 中快速導入 PWA

使用 @ducanh2912/next-pwa 或 next-pwa 套件:

安裝後,在 next.config 中包裹 withPWA 設定,並確保存在 next-pwa 能正確運作所需的 manifest 和圖示。

這個設定會自動:

  • 在生產環境啟用 Service Worker
  • 預快取所有靜態資源
  • 在開發模式中停用(避免快取問題影響開發體驗)

iOS 的限制

Apple 對 PWA 的支援一直比 Android 保守:

  • iOS 16.4 之前:不支援 PWA 推播通知
  • iOS 16.4+:透過 Web Push API 支援推播,但需要用戶主動將網站加到主畫面
  • 某些 PWA 功能(例如後台同步)在 iOS 上仍有限制

這是 2026 年 PWA 最大的現實限制:iOS 用戶(台灣市場佔比約 35–40%)的 PWA 體驗仍不如 Android 完整。

應該導入 PWA 嗎?

推薦考慮的品牌類型:

  • 內容型網站(部落格、媒體、知識庫)
  • 有高回訪需求的服務業(診所、瑜珈工作室的課表查詢)
  • 電商網站(快速的第二次訪問體驗很重要)

暫時不需要的品牌類型:

  • 純粹的品牌展示型官網(訪客主要是第一次來決定是否聯絡)
  • 預算有限且沒有技術資源維護 PWA 功能的品牌

導入 PWA 的技術成本在使用 Next.js 的情況下已很低,但仍需要確認圖示、Manifest 設定、快取策略是否正確——不正確的設定可能造成用戶看到過期的頁面內容。