Why I Ship Internal Tools as Progressive Web Apps (and How I Ship One Quickly)

A practical playbook for building lightweight, offline-friendly progressive web apps for internal tools that save data, install easily, and fit Indian work realities.

Written by: Arjun Malhotra

Person working on a laptop with code on screen, coffee nearby
Image credit: Photo by Unsplash

At my last startup, we had three tiny internal tools: an approvals dashboard, a delivery tracker, and a little expenses scanner. Each was getting used on phones and laptops, often on shaky cafe Wi‑Fi or employees’ limited mobile data. Instead of shipping three native apps or forcing everyone through a web login every time, I switched them to progressive web apps (PWAs). The payoff was immediate: faster access, smaller installs, and fewer “I can’t open this on my boss’s phone” support tickets.

If you’re building internal tools for teams in India — where low data caps, older Android devices, and flaky networks are still common — progressive web apps deserve a serious look. Here’s a practical, honest playbook for shipping one quickly, what to expect, and the tradeoffs you’ll live with.

Why progressive web apps fit this audience

Main keyword: progressive web app (use 3–6 times) — sprinkled through the rest of the article.

A quick, pragmatic build plan

  1. Start with the shell

    • Create a simple single‑page app (React/Vue/Svelte or plain HTML/JS). Focus on the minimum: authentication, a dashboard list, a detail view.
    • Add a web app manifest (name, icons, theme_color) so the browser offers install prompts and the app looks native on the home screen.
  2. Add a service worker for the core experience

    • Cache the shell (HTML/CSS/JS) with a cache-first strategy so the app opens instantly once installed.
    • Use stale-while-revalidate for API results the UI can tolerate being a little old (lists, statuses). Use network-first for critical write operations so the user sees errors appropriately.
  3. Keep the initial payload tiny

    • Aim for <1MB initial load on mobile. Lazy-load heavy charts or images.
    • Minify, serve compressed assets, and use a small image format. This respects data-conscious users.
  4. Use tooling that speeds you up

    • Workbox for service worker generation and common caching patterns.
    • Lighthouse to audit PWA basics (manifest, HTTPS, service worker) and PWA performance score.
    • Simple hosting (Netlify, Vercel, or a ₹200–₹500/month VPS + nginx) is fine.
  5. Make install and discoverability obvious

    • Add a small “Add to Home screen” CTA with instructions for Android; include an inline help note for iOS users (they still need the Share → Add to Home Screen flow).

Real constraints and tradeoffs (don’t let the marketing fool you)

Operational tips for Indian teams

When progressive web apps are the wrong tool If your product requires complex native integrations (Bluetooth, continuous background location, high-frequency notifications) or must appear in app stores for marketing reach, don’t force a PWA. It’s a pragmatic choice — not a one-size-fits-all solution.

Final thought Progressive web apps let small teams ship fast, keep costs low, and respect users’ data and device constraints — a practical match for many internal tools in India. But they come with real limits: iOS feature gaps, caching complexity, and device fragmentation. Build with those tradeoffs in mind, keep the install experience explicit, and you’ll turn a sluggish, web-only workflow into a nearly-native, low-data tool that your team will actually use.

If you want, I can sketch a minimal service worker + manifest example tuned for data-constrained users and show a practical caching policy that worked for our approvals dashboard.