PushManager.unregister() is a deprecated, non-standard instance method that removed a push endpoint by URL via DOMRequest. Learn what it did, why MDN replaced it with PushSubscription.unsubscribe(), how to feature-detect it, and modern migration patterns—with five examples and try-it labs.
01
Kind
Instance method
02
Returns
DOMRequest
03
Param
pushEndpoint
04
Status
Deprecated
05
Replace
unsubscribe()
06
Spec
Non-standard
Fundamentals
Introduction
When users disable push or your app no longer needs an endpoint, legacy Mozilla code called unregister() on PushManager with the endpoint URL to delete it from the push service.
MDN now marks it deprecated and non-standard. The standardized replacement is PushSubscription.unsubscribe() on the subscription object from getSubscription() or subscribe(). Modern PWAs should never call unregister() in new code.
⚠️
Pair with register()
MDN documented unregister() as cleanup for register(). The modern pair is subscribe() and subscription.unsubscribe().
Concept
Understanding unregister()
A legacy instance method on PushManager that unregistered and deleted a specific push endpoint.
Parameters — pushEndpoint (endpoint URL string).
Returns — DOMRequest (not a Promise).
Success result — PushRegistration with pushEndpoint; version is undefined.
Errors — handle via req.onerror.
Superseded by — PushSubscription.unsubscribe().
Available in Web Workers per MDN (where still supported).
Foundation
📝 Syntax
JavaScript
pushManager.unregister(pushEndpoint)
Return value
A DOMRequest object. On success, req.result describes the unregistered endpoint.
MDN legacy pattern
JavaScript
// Legacy — do not use in new code (MDN sample used navigator.push)
const req = navigator.push.unregister(pushEndpoint);
req.onsuccess = () => {
const endpoint = req.result;
console.log(`Unregistered endpoint: ${endpoint}`);
};
req.onerror = (e) => {
console.error(`Error unregistering the endpoint: ${e.error}`);
};
PushManager.unregister() is Deprecated and Non-standard on MDN. It is missing in modern browsers. Use PushSubscription.unsubscribe() instead. Logos use the shared browser-image-sprite.png sprite from this project.
✓ Deprecated · Non-standard
PushManager.unregister()
Legacy push endpoint removal — avoid in new code.
LegacyDeprecated API
Google ChromeRemoved — use subscription.unsubscribe()
Not supported
Mozilla FirefoxLegacy only — use subscription.unsubscribe()
Legacy only
Apple SafariNever supported — use subscription.unsubscribe()
Not supported
Microsoft EdgeFollow Chromium — use subscription.unsubscribe()
Not supported
OperaFollow Chromium
Not supported
Internet ExplorerNo Push API
Not supported
unregister()Limited
Bottom line: Feature-detect before calling. Prefer subscription.unsubscribe() for removing push subscriptions.
Wrap Up
Conclusion
pushManager.unregister() was an early way to delete a push endpoint by URL via DOMRequest. MDN deprecates it in favor of PushSubscription.unsubscribe(). Learn it for legacy code; build new features with the modern unsubscribe API.
Delete subscription on your server after unsubscribe
Update UI when unsubscribe succeeds
❌ Don’t
Call unregister() in new production code
Pass stale endpoint URLs without checking subscription
Assume DOMRequest APIs exist in modern browsers
Skip server cleanup after client unsubscribe
Confuse unregister with revoking notification permission
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about unregister()
Legacy push endpoint removal—and what to use instead.
5
Core concepts
⚠️01
Deprecated
avoid new use
Status
🔄02
DOMRequest
callbacks
Returns
🔗03
endpoint
URL param
Input
🚀04
Replace
unsubscribe
Modern
🚫05
Non-standard
off spec
Spec
❓ Frequently Asked Questions
It asked the system to unregister and delete a specified push endpoint. On success, the DOMRequest result was a PushRegistration object for the removed endpoint. MDN superseded it with PushSubscription.unsubscribe().
MDN marks it Deprecated and Non-standard. It is not Experimental, but it is no longer recommended and has been superseded by subscription.unsubscribe(). Do not use it in new code.
A pushEndpoint string—the URL of the endpoint to unregister. MDN's sample used navigator.push.unregister(pushEndpoint).
Call PushSubscription.unsubscribe() on the subscription object returned by getSubscription() or subscribe(). It returns a Promise<boolean> indicating whether the subscription was removed.
A DOMRequest object (Mozilla legacy pattern)—not a Promise. Handle success with req.onsuccess and errors with req.onerror.
You may encounter it paired with register() in legacy Mozilla push tutorials. Understanding it helps you migrate safely to PushSubscription.unsubscribe() and notify your server.
Did you know?
MDN paired unregister() with register()—when you no longer needed an endpoint URL, you passed it to unregister(). Modern code calls subscription.unsubscribe() on the PushSubscription object instead.