PushManager.register() is a deprecated, non-standard instance method that requested a new push notification endpoint URL via a DOMRequest. Learn what it did, why MDN replaced it with subscribe(), how to feature-detect it, and modern migration patterns—with five examples and try-it labs.
01
Kind
Instance method
02
Returns
DOMRequest
03
Result
endpoint URL
04
Status
Deprecated
05
Replace
subscribe()
06
Spec
Non-standard
Fundamentals
Introduction
To send web push messages, your app needs an endpoint the push server can target. Early Mozilla push drafts exposed register() on PushManager to obtain that endpoint as a plain URL string.
MDN now marks it deprecated and non-standard. The standardized replacement is subscribe(), which returns a full PushSubscription object with endpoint URL and encryption keys. Modern PWAs should never call register() in new code.
⚠️
DOMRequest, not Promise
Legacy register() returned a Mozilla DOMRequest with onsuccess and onerror handlers—unlike modern subscribe(), which returns a Promise.
Concept
Understanding register()
A legacy instance method on PushManager that asked the system to create a new push endpoint.
Parameters — none.
Returns — DOMRequest (not a Promise).
Success result — endpoint URL string.
Errors — handle via req.onerror.
Cleanup — MDN pairs with unregister() when done.
Superseded by — subscribe() (Baseline Widely available).
Available in Web Workers per MDN (where still supported).
Foundation
📝 Syntax
JavaScript
pushManager.register()
Return value
A DOMRequest object. On success, req.result is the endpoint URL string.
MDN legacy pattern
JavaScript
// Legacy — do not use in new code (MDN sample used navigator.push)
const req = navigator.push.register();
req.onsuccess = () => {
const endpoint = req.result;
console.log(`New endpoint: ${endpoint}`);
};
req.onerror = (e) => {
console.error(`Error getting a new endpoint: ${e.error}`);
};
PushManager.register() is Deprecated and Non-standard on MDN. It is missing in modern browsers. Use subscribe() instead. Logos use the shared browser-image-sprite.png sprite from this project.
✓ Deprecated · Non-standard
PushManager.register()
Legacy push endpoint registration — avoid in new code.
LegacyDeprecated API
Google ChromeRemoved — use subscribe()
Not supported
Mozilla FirefoxLegacy only — use subscribe()
Legacy only
Apple SafariNever supported — use subscribe()
Not supported
Microsoft EdgeFollow Chromium — use subscribe()
Not supported
OperaFollow Chromium
Not supported
Internet ExplorerNo Push API
Not supported
register()Limited
Bottom line: Feature-detect before calling. Prefer subscribe() for new push subscription setup.
Wrap Up
Conclusion
pushManager.register() was an early way to obtain a push endpoint URL via DOMRequest. MDN deprecates it in favor of subscribe(), which returns a full PushSubscription with keys. Learn it for legacy code; build new features with the modern Push API.
Legacy push endpoint registration—and what to use instead.
5
Core concepts
⚠️01
Deprecated
avoid new use
Status
🔄02
DOMRequest
callbacks
Returns
🔗03
URL only
endpoint
Result
🚀04
Replace
subscribe()
Modern
🚫05
Non-standard
off spec
Spec
❓ Frequently Asked Questions
It asked the system to request a new push notification endpoint. On success, the DOMRequest result was a string URL. MDN superseded it with subscribe(), which returns a full PushSubscription object.
MDN marks it Deprecated and Non-standard. It is not Experimental, but it is no longer recommended and has been superseded by subscribe(). Do not use it in new code.
A DOMRequest object (Mozilla legacy pattern)—not a Promise. Handle success with req.onsuccess and errors with req.onerror. The result is an endpoint URL string.
Use PushManager.subscribe() after navigator.serviceWorker.ready. subscribe() returns a Promise<PushSubscription> with endpoint and encryption keys for your push server.
No. MDN documents register() with no parameters. Call it on a PushManager instance—or in very old Mozilla samples, via navigator.push.register().
You may encounter it in legacy Firefox OS or old Mozilla push tutorials. Understanding it helps you migrate safely to subscribe() and getSubscription().
Did you know?
MDN’s register() sample used navigator.push.register()—a very old Mozilla entry point. Modern code uses registration.pushManager.subscribe() instead.