Cache Storage Viewer - Online Inspect PWA Cache
Explore the contents of the Cache Storage API for your domain. See cached requests and their sizes. Debug offline apps.
UD5 Toolkit
install event fires — ideal for caching assets), Installed / Waiting (SW is installed but waiting for existing SW to release control), Activating (the activate event fires — ideal for cleaning old caches), Activated (SW controls the page and can intercept fetch requests), and Redundant (SW is being replaced or has failed). Understanding this flow is critical for proper SW debugging.
install event, the Service Worker typically pre-caches critical assets (HTML, CSS, JS, images) using the Cache API. This is the best time to cache resources needed for offline functionality. The install phase should be as fast as possible — if it fails, the SW won't proceed to the activation stage. Use event.waitUntil() to extend the install phase until caching is complete.
activate event is the perfect place to clean up old caches from previous SW versions, migrate indexedDB schemas, and claim uncontrolled clients. Use event.waitUntil() to keep the SW in the activating state until cleanup is complete. This ensures that outdated cached resources don't interfere with the new SW version.
self.skipWaiting() inside the SW script.
self.skipWaiting() forces the Service Worker to skip the Waiting phase and immediately proceed to Activating as soon as installation completes — even if there are active tabs using an older SW. It's commonly used with clients.claim() to ensure the new SW takes control immediately. Use with caution: it can cause version conflicts if not handled carefully.
clients.claim() tells the newly activated Service Worker to immediately take control of all already-open pages within its scope. Without it, the new SW only controls pages that are loaded after activation. Combine with self.skipWaiting() for seamless updates where the new SW instantly controls all clients.
registration.update(). If a new SW is found, it goes through install → waiting → activate (when old SW releases control). The update check happens at most once every 24 hours by default.
Application → Service Workers to see all registered SWs, their states, and logs. Check the Console for SW errors. Use chrome://serviceworker-internals/ for detailed inspection. Firefox: Use about:debugging#/runtime/this-firefox. Always enable "Update on reload" during development, and use navigator.serviceWorker.getRegistrations() in the console to inspect SWs programmatically.
/app/sw.js can only control pages under /app/. To control the entire origin, serve the SW from the root (/sw.js). The scope can be restricted further using the scope option in navigator.serviceWorker.register(), but it cannot be broader than the SW's location.
registration.unregister() is called, (4) the SW script returns a 404 or network error on update check, or (5) the SW throws an unhandled exception. Once redundant, the SW is permanently dead and a new registration is needed.
Explore the contents of the Cache Storage API for your domain. See cached requests and their sizes. Debug offline apps.
Set up multiple @layers and use revert‑layer to fall back. See the computed style and cascade resolution live.
See how a PWA can extend content into the title bar area on desktop. Customize the window controls overlay.
Simulate a PWA receiving shared text, links, and images. Test the Web Share Target API without a server.
Learn how to register your PWA to handle custom URL protocols. See the manifest entry and test.
Configure how your PWA launches: focus existing or create new. Test with the launch_handler manifest field.
Register a periodic background sync and see the status. Schedule content updates for your PWA. API demo.
See your current push subscription details. Trigger push and notificationclick events manually to debug.
Check if the browser has captured the beforeinstallprompt event. Understand why your PWA is (or isn't) installable.
Check if your site has a service worker registered and if it can load offline. Quick PWA readiness assessment.
Highlight elements with aria‑describedby and see the linked description text. Verify a11y annotations.
Select any element on the test page and monitor its size changes with ResizeObserver. See log of all entries.
Load an image and see the exact events fired (load, error, abort). Monitor progress. Dev helper.
Fill in a form and see the FormData object as JSON. Perfect for debugging multipart form submissions. Client-side.
Paste your manifest.json and instantly validate it against the W3C spec. Catch errors and warnings. Client‑side.
See the current AudioContext state (suspended, running). Resume it with a button. Understand autoplay policies.
Adjust root, margin, and threshold. See a live log of intersection events as you scroll. Debug lazy loading.
Inject dynamic messages into ARIA live regions and monitor how they trigger screen reader announcements. Debug a11y.
Start recording and watch for Long Tasks that block the main thread. See task duration and attribution. Improve Interaction to Next Paint.
Check if your page triggers the beforeinstallprompt event. Simulate the install flow. Debug PWA installability.
Paste a `Set‑Cookie` header and see all attributes parsed: domain, path, Max‑Age, SameSite, Secure, HttpOnly. Debug cookies easily.
Upload a 512x512 logo and get resized icons for every PWA requirement. Download a zip and the corresponding manifest.json snippet.
Register a periodic background sync to fetch fresh data even when the tab is closed. Understand the API and limits.
Touch the screen and see the exact coordinates, radius, and force of each touch point. Indispensable for mobile web devs.
Paste a list of JavaScript values and see them pretty‑printed as if in the browser console. Great for debugging.
Enter a JSON pointer expression (/foo/bar) to extract a value from your pasted JSON. Debug nested objects quickly.
Press any key and see the full KeyboardEvent object: key, code, keyCode, modifier status. Dev tool.
Fill in your PWA details to generate a valid manifest.json file. Include icons, theme color, display mode.
Paste HTML/CSS snippets or enter properties to test how z‑index and stacking contexts interact. Real‑time example.
Enter a regular expression and see a visual railroad diagram explaining the pattern. Learn and debug regex.