← knowledge.oriz.in

PWABuilder is the primary PWA→native converter; Tauri optional

decision architecturedistributionpwapwabuildertauristores

PWABuilder is the primary PWA?native converter; Tauri optional

Decision

Every Astro app in the family ships as a PWA first. Native packages are generated from that PWA — never hand-written native code:

Distribution channels (locked):

No code signing on Windows (lean on PWA route to avoid SmartScreen entirely; the EXE side is for power users who accept first-time warnings). No macOS signing (no Apple Developer Program). Linux unsigned (no convention).

Why

PWABuilder collapses the per-app distribution surface to zero: there is no per-app src-tauri/, no per-app android/, no per-app xcode/. The PWA manifest emitted by astro-pwa is the entire input; native packages are downloaded outputs.

PWABuilder is free, hosted by Microsoft (alignment with Microsoft Store distribution), and has a CLI suitable for CI (pwabuilder package --platform <android|windows|ios|macos>). Bubblewrap (Google's tool) is what PWABuilder runs internally for Android — using PWABuilder gives both Android AAB + Windows MSIX from one tool instead of two.

Tauri stays available as an opt-in escape hatch because PWABuilder MSIX binaries are larger and don't support auto-update. Apps that ship frequently or care about install size can switch to Tauri per-app without affecting the rest of the family.

Implications

Rejected

Cross-refs