PWA Feasibility Study: Replacing Native Mobile & Desktop Apps¶
Project: Forma3D.Connect
Version: 1.0
Date: January 19, 2026
Status: Research / Proposal
Executive Summary¶
This document evaluates Progressive Web Apps (PWA) as an alternative to the currently planned Tauri (desktop) and Capacitor (mobile) native shell applications. Based on research conducted in January 2026, PWA technology is highly relevant and well-suited for Forma3D.Connect's use case, potentially eliminating the need for separate mobile and desktop applications.
Recommendation¶
Adopt PWA as the primary cross-platform strategy, deprecating the planned Tauri desktop and Capacitor mobile apps from the roadmap. The Forma3D.Connect admin dashboard is an ideal PWA candidate: a SaaS-style application focused on data visualization, real-time updates, and notifications rather than heavy device integration.
Current Architecture Plan¶
As documented in C4_Container.puml:
Container(desktop, "Desktop App", "Tauri, Rust", "Native desktop shell wrapping the web application (future)")
Container(mobile, "Mobile App", "Capacitor", "Mobile shell for on-the-go monitoring (future)")
Both planned apps are essentially WebView wrappers around the existing React web application. This makes them prime candidates for PWA replacement.
PWA Relevance in 2026¶
Market Position¶
PWA technology remains highly relevant and growing in 2026:
- Market CAGR of 30-32% projected through 2034
- Strong enterprise adoption for admin dashboards, internal tools, and SaaS applications
- Particularly strong in emerging markets where network/device constraints exist
Key Capabilities (2026)¶
| Feature | Status | Notes |
|---|---|---|
| Offline Support | ✅ Mature | Service workers with sophisticated caching strategies |
| Push Notifications | ✅ Available | Full support on Android; iOS 16.4+ with Home Screen install |
| Installability | ✅ Standard | Install from browser, appears in app drawer/dock |
| Real-time Updates | ✅ Works | WebSocket/Socket.IO fully supported |
| Background Sync | ⚠️ Limited | Available on Chromium; limited on Safari |
| File System Access | ⚠️ Limited | Chromium-only; Safari restrictions remain |
| Badging API | ✅ Available | Unread count badges on app icons |
iOS/Safari PWA Support (Critical Analysis)¶
Apple's PWA support has significantly improved but retains some limitations:
What Works (iOS 16.4+)¶
- ✅ Web Push notifications for Home Screen installed PWAs
- ✅ Badging API for notification counts
- ✅ Declarative Web Push (iOS 18.4+) - improved reliability
- ✅ Screen Wake Lock
- ✅ Standalone display mode
Limitations¶
| Limitation | Impact on Forma3D.Connect | Mitigation |
|---|---|---|
| Must install to Home Screen for full features | Low - one-time user action | Clear onboarding guidance |
| User gesture required for notification permission | None - standard UX pattern | Button in dashboard settings |
| No notification sounds/vibration | Low - visual notification sufficient | N/A |
| Service worker may be suspended after inactivity | Low - dashboard used frequently | Declarative Web Push handles this |
Assessment¶
For an admin dashboard like Forma3D.Connect, iOS limitations are acceptable. The primary users (Forma3D operators) will: - Install the PWA once to their Home Screen - Use the app regularly (not affected by inactivity suspensions) - Receive push notifications for order/print job updates
PWA vs Tauri Comparison (Desktop)¶
| Aspect | PWA | Tauri |
|---|---|---|
| Install Size | ~0 MB (uses browser) | ~3-10 MB |
| Memory Usage | Browser-dependent | ~30-50 MB |
| Development Effort | Zero additional | Rust backend, build pipelines, signing |
| Updates | Instant (web deployment) | Requires new installer/auto-updater |
| Native File Access | Limited (Chromium only) | Full |
| System Tray | Not supported | Supported |
| Native Dialogs | Web-based alternatives | Native |
| Cross-platform | Any browser | Windows, macOS, Linux (separate builds) |
Tauri Advantages Not Needed¶
- Rich file system access: Forma3D.Connect doesn't require local file manipulation
- System tray: Dashboard is used actively, not as background utility
- Native performance: Admin dashboard doesn't have performance-critical requirements
- Rust backend processing: All heavy processing is server-side (NestJS API)
PWA Advantages Critical for Forma3D¶
- Zero maintenance overhead: No separate build pipelines, code signing, or distribution
- Instant updates: Deploy once, all clients updated immediately
- Lower complexity: Single codebase, single deployment target
- Browser familiarity: Operators can use existing browser or install as PWA
PWA vs Capacitor Comparison (Mobile)¶
| Aspect | PWA | Capacitor |
|---|---|---|
| App Store Presence | Optional (via PWABuilder) | Required |
| App Store Fees | None | $99/year (Apple) + review process |
| Native Device APIs | Limited but improving | Full access via plugins |
| Camera/Photo Access | Available | Available |
| Push Notifications | Available (iOS 16.4+) | Available |
| Biometric Auth | Web Authentication API | Native plugins |
| Update Cycle | Instant | App store review (1-7 days) |
Capacitor Advantages Not Needed¶
- Deep device integration: Dashboard doesn't need NFC, Bluetooth, health sensors
- App Store discovery: B2B tool for known operators, not consumer app
- Native UI components: React + Tailwind provides excellent mobile UX
PWA Advantages Critical for Mobile¶
- No app store friction: Operators can start using immediately
- Cross-platform consistency: Same experience on iOS and Android
- Easier onboarding: Share URL, install from browser
Forma3D.Connect Feature Compatibility¶
Evaluating current and planned features against PWA capabilities:
| Feature | PWA Support | Notes |
|---|---|---|
| Order management dashboard | ✅ Full | Core web functionality |
| Product mapping UI | ✅ Full | Standard CRUD operations |
| Real-time WebSocket updates | ✅ Full | Socket.IO works in PWAs |
| Push notifications (print job status) | ✅ Full | Web Push API |
| API key authentication | ✅ Full | Standard auth patterns |
| Offline order viewing | ✅ Full | Service worker caching |
| Activity logs | ✅ Full | Standard data display |
| Toast notifications | ✅ Full | In-app notifications |
| QR code scanning (future) | ✅ Full | Camera API available |
| Printing shipping labels | ⚠️ Partial | Browser print dialog; mobile limitations |
Only Limitation¶
Printing shipping labels on mobile: This is inherently challenging on any mobile platform. The standard workflow (print to network printer) works via browser print dialog. For Bluetooth thermal printers, native apps would have advantages, but this is not a primary use case for mobile operators.
Implementation Plan¶
Phase 1: PWA Foundation (Minimal Effort)¶
The current React/Vite web app requires only minor additions:
-
Web App Manifest (
manifest.json){ "name": "Forma3D.Connect", "short_name": "Forma3D", "start_url": "/", "display": "standalone", "background_color": "#ffffff", "theme_color": "#0066cc", "icons": [...] } -
Service Worker (via Vite PWA plugin)
vite-plugin-pwahandles generation- Cache static assets, enable offline access
-
Precache critical routes
-
HTTPS (Already implemented)
- Required for PWA features
Phase 2: Push Notifications¶
- Implement Web Push API in frontend
- Add VAPID key configuration
- Backend push notification service (integrate with existing email notifications)
- User permission flow in settings
Phase 3: Enhanced Offline Support¶
- IndexedDB for offline data storage
- Background sync for queued actions
- Optimistic UI updates
Cost-Benefit Analysis¶
Development Cost Savings¶
| Item | Tauri + Capacitor | PWA |
|---|---|---|
| Initial development | 40-80 hours | 8-16 hours |
| CI/CD pipelines | 16-24 hours | 0 hours |
| Code signing setup | 8-16 hours | 0 hours |
| App store submissions | 4-8 hours | 0 hours |
| Ongoing maintenance | 4-8 hours/month | 0-2 hours/month |
Estimated savings: 80-150 hours initial + ongoing maintenance reduction
Complexity Reduction¶
- Remove Tauri app from monorepo (
apps/desktop) - Remove Capacitor app from monorepo (
apps/mobile) - Single deployment target (web only)
- No native build environments required (Xcode, Android Studio, Rust toolchain)
Risk Reduction¶
- No platform-specific bugs to debug
- No webview inconsistencies between platforms
- No app store rejection risks
- No signing certificate management
Risks and Mitigations¶
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Apple further restricts PWAs | Low | High | Monitor WebKit releases; Capacitor fallback possible |
| User unfamiliarity with PWA install | Medium | Low | Clear onboarding documentation |
| Browser compatibility issues | Low | Medium | Target modern browsers only; test on Safari |
| Offline sync conflicts | Medium | Medium | Proper conflict resolution strategy |
Decision Framework¶
Adopt PWA If:¶
- ✅ Application is primarily data-driven (dashboard, forms, lists)
- ✅ Real-time updates needed but not gaming-level performance
- ✅ Push notifications required
- ✅ Cross-platform reach is important
- ✅ Rapid iteration and updates desired
- ✅ Development resources are limited
All criteria apply to Forma3D.Connect
Keep Native If:¶
- ❌ Heavy graphics/3D rendering required
- ❌ Deep device integration (Bluetooth LE, NFC, sensors)
- ❌ App store presence essential for marketing
- ❌ Offline-first with complex sync requirements
- ❌ Background processing requirements
None of these apply to Forma3D.Connect
Conclusion¶
PWA technology in 2026 is mature, well-supported, and ideal for Forma3D.Connect. The planned Tauri and Capacitor apps would add significant development and maintenance overhead while providing no meaningful advantages for an admin dashboard application.
Recommended Actions¶
- Add PWA support to the existing web application (Phase 1)
- Implement push notifications for print job and order status updates (Phase 2)
- Remove
apps/desktopandapps/mobilefrom the project roadmap - Update C4 Container diagram to reflect PWA-only architecture
- Create ADR documenting this architectural decision
References¶
- WebKit Blog: Web Push for Web Apps on iOS
- WebKit Blog: Declarative Web Push
- web.dev: PWA OS Integration
- HTTP Archive: PWA Almanac 2025
- Vite PWA Plugin Documentation