What Happens When You Type a URL and Press Enter
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →A PWA lets users install your website like an app, open it offline and get faster repeat visits. The manifest, service workers, caching strategies and honest limitations, explained practically.
Progressive Web Apps (PWAs) blur the line between websites and native apps. Users can install them to their home screen or desktop, open them in their own window, use them offline and get notifications, all from a normal website with no app store involved. For many products, a PWA is the fastest way to deliver an app-like experience.
Three ingredients:
{
"name": "Habit Tracker",
"short_name": "Habits",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#0f766e",
"icons": [
{ "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" },
{ "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png" },
{ "src": "/icons/maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
]
}
Link it from your HTML:
<link rel="manifest" href="/manifest.webmanifest">
display: standalone opens the installed app in its own window without browser UI. A maskable icon looks right inside the different icon shapes used by various platforms.
Register it from your app:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw.js')
}
The service worker can intercept network requests and decide how to answer them: from the network, from a cache, or a mix.
Different resources need different strategies:
Writing this by hand is error-prone. Libraries such as Workbox, or your framework's PWA plugin, provide these strategies with a few lines of configuration. (Caching concepts.)
Even if full offline support isn't realistic, cache a friendly offline page and show it when the network fails, instead of the browser's default error screen. It's a small touch that makes the app feel solid.
For apps people use on the move (trackers, notes, field tools), go further: store data locally in IndexedDB, update the UI instantly, and sync to the server when a connection returns. Treat the network as an enhancement, and handle conflicts when two devices change the same record. It's more work, but the user experience on flaky connections is dramatically better.
Service workers make updates a bit tricky: the old version keeps controlling open tabs until they close. Common approaches:
activate event.A buggy service worker can serve stale content for a long time, so test updates carefully and keep a way to unregister it.
Browsers offer installation when the basic requirements are met. On some platforms you can show your own "Install app" button by handling the browser's install prompt event; on others, users install through the share or browser menu, so a short instruction helps.
Web push notifications are supported across modern browsers, including for installed web apps on iOS in recent versions. Ask for permission only after the user does something that makes notifications clearly useful, never on first visit.
For many products (content, productivity, e-commerce, internal tools) those limits don't matter, and avoiding app-store review cycles is a real advantage.
A website that uses a manifest and a service worker, over HTTPS, so it can be installed like an app, work offline or on poor connections, and load faster on repeat visits.
Yes. iOS supports installing web apps to the home screen, service workers and, in recent versions, web push for installed apps, though some features still lag behind other platforms.
For many content, productivity and e-commerce apps, yes. Apps that need deep hardware or OS integration, or heavy background processing, may still need native code.
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →There are dozens of HTTP status codes, but about fifteen cover nearly everything. What each one means, when to return it, and the mix-ups (401 vs 403, 301 vs 302) that confuse everyone.
Read →A, AAAA, CNAME, MX, TXT and NS records in plain English, why DNS changes seem slow, and the troubleshooting commands that tell you what is really going on.
Read →