Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsUse Puppeteer’s browser-level browser.uninstallPWA() method to remove a Progressive Web App installed in that browser. Launch Puppeteer with pipe: true—the PWA API is not available over a WebSocket connection—and pass the manifest ID for the installed app.
Requirements before uninstalling
- Use Puppeteer 25.4.0 or later, which introduced the browser-level PWA install, launch and uninstall methods. The consulted documentation identifies version 25.12.0; check the Puppeteer changelog for later releases.
- Launch with
pipe: true. Puppeteer documents the PWA API family as available only over a pipe connection, not WebSocket. - Have the manifest ID for the PWA. If your script installed it, save the ID returned by
browser.installPWA().
See Puppeteer’s Browser API reference for the exact UninstallPWAOptions shape in your installed version.
As an Amazon Associate I earn from qualifying purchases.
Uninstall an installed PWA
This example assumes the PWA is already installed in the browser profile Puppeteer launches and that you know its manifest ID. Replace the example value with the ID returned by the install workflow or the value appropriate to your installed Puppeteer version.
Free tools Windows power users keep installed
One-click scans. No signup required.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ pipe: true });
try {
const manifestId = 'YOUR_MANIFEST_ID';
await browser.uninstallPWA({ manifestId });
} finally {
await browser.close();
}
})();
The documented relationship is that the manifest ID returned by installPWA() can be passed to uninstallPWA(). Check the API reference for the supported options in your exact release; the snippet illustrates the documented call sequence, not a test result.
#1 Best Overall
Install and remove within one script
If the same automation owns the app lifecycle, retain the install result and pass its manifest ID to uninstall:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ pipe: true });
try {
const installed = await browser.installPWA({ url: 'https://example.com' });
await browser.uninstallPWA({ manifestId: installed.manifestId });
} finally {
await browser.close();
}
})();
Consult the Browser API reference for the exact install options and returned type for your release. Keep the returned manifest ID rather than trying to infer it from the page URL.
Rank #2
Why pipe transport and the manifest ID matter
The PWA install/state/launch/uninstall methods are browser-level Puppeteer APIs documented for a pipe connection. A normal WebSocket-based remote debugging connection does not expose this API family, so changing only the uninstall call will not address a transport mismatch.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallThe uninstall call targets the installed app by manifest ID. Puppeteer documents that the ID returned from installation can be supplied to uninstall, which makes saving that value the clearest approach when one script performs both operations.
What does not uninstall the PWA
page.setBypassServiceWorker(true)changes how page requests interact with the service worker. It is not the browser-level PWA uninstall operation.- Closing a browser context closes its pages and isolates cookies and local storage, but Puppeteer’s context guidance does not say that closing a context uninstalls a PWA.
browser.uninstallExtension(id)is for Chrome extensions, not installed web apps.
Close the browser cleanly
After the uninstall call, use await browser.close() to gracefully close a browser launched by the script. browser.disconnect() detaches Puppeteer while leaving the browser process running, so it is not a substitute when the script should stop the browser. See the browser management guide.
Troubleshooting
The PWA method is missing or unavailable
Confirm that the installed Puppeteer version includes the browser-level PWA methods (introduced in 25.4.0) and that the browser was launched with pipe: true. The API is not documented for a WebSocket connection.
Rank #4
Uninstall cannot identify the app
Check that you are passing the manifest ID associated with the installed PWA, not its page URL or an extension ID. If installation and removal happen in the same script, preserve the ID returned by installPWA() and pass it to uninstallPWA().
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →The app still appears after closing a context
Context closure is for closing pages and isolating site data; it is not documented as PWA removal. Call browser.uninstallPWA() over the required pipe connection instead.
Best Value
- Used Book in Good Condition
The browser process remains running
Use browser.close() for a browser launched by the script. browser.disconnect() intentionally leaves the process running.
Or skip the browser setup
If your goal is to capture a page rather than manage an installed PWA, ScreenshotNeo returns a screenshot or PDF with one GET request. Its API does not uninstall PWAs; it is an alternative for page capture, with cookie/consent banners, newsletter popups and chat widgets removed before the shot. Bot checks, blank pages and failed loads are never billed, and an MCP server lets AI agents take screenshots.
See the ScreenshotNeo API documentation. Example cURL request:
Recommended Free Tools
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
It includes 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000. Sign up for the free plan.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




