Offline is a product promise, not a service-worker checkbox.
A page can load from cache and still fail the moment a user submits a form, opens an uncached record, or returns after the application version changes. Calling that offline support pushes the hard decisions into production.
Name the tasks that work without a network and the point where the product must stop, queue, or explain itself. Then the cache, local data, synchronization, and update path can serve a promise users can understand.
First-release planning
- $15K
- starting point for one focused PWA
- Workflow, manifest, offline boundary, and release
- 8-14 weeks
- usual window for a focused first release
- Sync and browser support affect timing
- 1 URL
- distribution path across supported browsers
- Installation remains platform-dependent
These are RaftLabs planning figures, not a promise that one web build replaces every native use case. Browser support, storage eviction, background limits, notification delivery, and operating-system policy remain external constraints that the scope must name.
A PWA fits when web distribution is the priority and app-like behaviour can stay within browser limits.
Choose a normal web app if installation and offline work add little value, or native mobile when device capability defines the product.
A fit01The product has one core web workflow and a clear install or offline use case.
02Target browsers and devices can be prioritized rather than treated as identical.
03Product owners can decide conflict, stale-data, storage, and update behaviour.
Not a fitThe workflow needs sustained background execution or deep device and sensor access.
The buyer expects identical install, push, storage, and offline behaviour everywhere.
The current web application is unstable and needs product repair before PWA features.
Focused scope
What one PWA release includes
01Install and browser support
Define the manifest, icons, display mode, install education, supported
browsers, and fallback for environments that do not offer the same
installation experience.
02Offline assets and data
Choose which application shell, records, and tasks work offline. Define local
storage, queued changes, expiry, conflict handling, authentication loss, and
what the user sees when a server decision is required.
Control caching and version activation so a new release does not leave tabs on
incompatible code or data. Test refresh, waiting updates, partial downloads,
rollback, and recovery from a bad cached version.
04Push, telemetry, and handover
Implement web push only on the agreed matrix, measure install and offline
failures, and leave browser support, release checks, cache rules, and incident
runbooks with the operating team.
Web distribution vs native capability
| Progressive web app | Native mobile app |
|---|
| Distribution | URL first, installation where supported | App-store package and review |
| Codebase | Shared with the web application | Platform or cross-platform mobile runtime |
| Offline | Defined within browser storage and lifecycle | Broader local and background capability |
| Device access | Available web APIs and permissions | Richer platform SDK access |
| Starting price | $15K for focused PWA | Scoped against mobile platform needs |
Use web application development for a normal browser product without a material install or offline requirement. Use mobile app development when sensors, background tasks, stores, or native interaction are central.
Delivery
From browser workflow to a tested installable release
Four steps turn app-like language into explicit browser behaviour.
- Step 1
01Define the PWA promise
Name the core workflow, target browsers, install path, offline tasks,
notification need, and reason a normal web app is insufficient. Record
unsupported devices and states.
- Step 2
02Design cache, data, and update rules
Choose assets and records available offline, synchronization and conflict
behaviour, version activation, storage limits, and fallbacks. Review user
messages for every boundary.
- Step 3
03Build and test on real devices
Implement the workflow, manifest, service worker, install prompts, and
supported push. Exercise first visit, return, offline, reconnection, eviction,
update, and permission failures.
- Step 4
04Release and hand over
Deploy through the normal web pipeline, verify install and recovery paths, and
leave browser support, telemetry, runbooks, and known limits. Track real
failures before widening offline scope.
- Offline has no task boundary
- List the screens, reads, writes, conflicts, and server decisions that work or stop without a network.
- A cached release cannot update safely
- Test service-worker activation, old tabs, schema changes, partial downloads, and recovery before shipping automatic updates.
- Platform support is assumed
- Maintain a real browser and device matrix, progressive fallbacks, and copy that does not promise unavailable capabilities.
- Sensitive records remain on shared devices
- Define local encryption, expiry, sign-out deletion, storage limits, and privacy review before caching protected data.
Scope and price
A focused progressive web app starts at $15,000.
Begin with one workflow and an explicit install, offline, update, and browser-support boundary.
Starts at $15KA focused first release usually takes 8 to 14 weeks. Synchronization, roles, payments, media, and broad device support move the estimate.
Hosting, push providers, analytics, and other third-party charges remain separate unless included in the proposal.
Offline behaviour is written down
The scope names which tasks work disconnected, what becomes stale, how changes
queue, how conflicts resolve, and when the product must stop.
Browser limits stay visible
The support matrix and fallbacks are acceptance criteria; RaftLabs does not
promise identical install, push, or background behaviour everywhere.
Related application paths
Choose the delivery model the workflow earns