PushManager.registrations() is a deprecated, non-standard instance method that listed existing push endpoint registrations as an array of PushRegistration objects. Learn what it did, why MDN replaced it with getSubscription(), 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
array
04
Status
Deprecated
05
Replace
getSubscription
06
Spec
Non-standard
Fundamentals
Introduction
Before reusing or creating push endpoints, legacy Mozilla code needed to know what was already registered. Early push drafts exposed registrations() on PushManager to list existing endpoints with their version numbers.
MDN now marks it deprecated and non-standard. The standardized replacement is getSubscription(), which returns a single PushSubscription (or null) for the current service worker registration. Modern PWAs should never call registrations() in new code.
⚠️
Array vs single subscription
Legacy registrations() could return multiple endpoints. Modern getSubscription() returns one PushSubscription per pushManager instance—simpler and spec-aligned.
Concept
Understanding registrations()
A legacy instance method on PushManager that queried existing push endpoint registrations.
Parameters — none.
Returns — DOMRequest (not a Promise).
Success result — array of PushRegistration objects.
pushEndpoint — endpoint URL string on each object.
version — current version of the push endpoint.
Superseded by — getSubscription() (Baseline Widely available).
Available in Web Workers per MDN (where still supported).
Foundation
📝 Syntax
JavaScript
pushManager.registrations()
Return value
A DOMRequest object. On success, req.result is an array of PushRegistration objects with pushEndpoint and version.
MDN legacy pattern
JavaScript
// Legacy — do not use in new code (MDN sample used navigator.push)
const req = navigator.push.registrations();
req.onsuccess = () => {
req.result.forEach((registration) => {
console.log(
`Existing registration ${registration.pushEndpoint} ${registration.version}`
);
});
};
PushManager.registrations() is Deprecated and Non-standard on MDN. It is missing in modern browsers. Use getSubscription() instead. Logos use the shared browser-image-sprite.png sprite from this project.
✓ Deprecated · Non-standard
PushManager.registrations()
Legacy push endpoint listing — avoid in new code.
LegacyDeprecated API
Google ChromeRemoved — use getSubscription()
Not supported
Mozilla FirefoxLegacy only — use getSubscription()
Legacy only
Apple SafariNever supported — use getSubscription()
Not supported
Microsoft EdgeFollow Chromium — use getSubscription()
Not supported
OperaFollow Chromium
Not supported
Internet ExplorerNo Push API
Not supported
registrations()Limited
Bottom line: Feature-detect before calling. Prefer getSubscription() for existing subscription checks.
Wrap Up
Conclusion
pushManager.registrations() was an early way to list push endpoints as an array of PushRegistration objects via DOMRequest. MDN deprecates it in favor of getSubscription(), which returns a single PushSubscription or null. Learn it for legacy code; build new features with the modern Push API.
Feature-detect registrations in legacy maintenance
Sync full PushSubscription JSON to your server
❌ Don’t
Call registrations() in new production code
Assume DOMRequest APIs exist in modern browsers
Store only pushEndpoint without encryption keys
Loop an array when one subscription per SW suffices
Confuse registrations with permission checks
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about registrations()
Legacy push endpoint listing—and what to use instead.
5
Core concepts
⚠️01
Deprecated
avoid new use
Status
🔄02
DOMRequest
callbacks
Returns
📋03
Array
endpoints
Result
🚀04
Replace
getSubscription
Modern
🚫05
Non-standard
off spec
Spec
❓ Frequently Asked Questions
It asked the system about existing push endpoint registrations. On success, the DOMRequest result was an array of PushRegistration objects with pushEndpoint and version properties.
MDN marks it Deprecated and Non-standard. It is not Experimental, but it is no longer recommended and has been superseded by getSubscription(). Do not use it in new code.
A DOMRequest object (Mozilla legacy pattern)—not a Promise. On success, req.result is an array of objects with pushEndpoint (URL string) and version.
Use PushManager.getSubscription() after navigator.serviceWorker.ready. It returns a Promise<PushSubscription | null> for the current service worker registration.
No. MDN documents registrations() with no parameters. Call it on a PushManager instance—or in very old Mozilla samples, via navigator.push.registrations().
You may encounter it paired with register() in legacy Mozilla push tutorials. Understanding it helps you migrate safely to getSubscription() and subscribe().
Did you know?
MDN’s registrations() sample paired with register()—if the array was empty, it called register() for a new endpoint. Modern code uses getSubscription() then subscribe() instead.