
Research
Security News
Malicious npm Packages Use Telegram to Exfiltrate BullX Credentials
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
web-push-browser
Advanced tools
Minimal library for sending notifications via the browser Push API
This project is not affiliated or based upon the original web-push package or web-push-lib organization.
This package is aimed at being a lightweight replacement for web-push, as (at the time of writing) it relies on Node.js dependencies that are not available in the browser.
npm install web-push-browser
import { fromBase64Url } from 'web-push-browser';
//...
const registration = await navigator.serviceWorker.register('./service-worker.js', { type: 'module' });
try {
// Subscribe to push notifications
const sub = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: fromBase64Url(PUBLIC_VAPID_KEY),
});
// Store the subscription in your backend
// ...
} catch (err) {
console.error('Failed to subscribe to notifications', err);
if (await registration.pushManager.getSubscription()) {
// Cleanup if existing subscription exists
await sub.unsubscribe();
}
}
import { sendNotification, deserializeVapidKeys } from 'web-push-browser';
// You can use `deserializeVapidKeys` to convert your VAPID keys from strings into a KeyPair
const keyPair = await deserializeVapidKeys({
publicKey: PUBLIC_VAPID_KEY,
privateKey: VAPID_PRIVATE_KEY,
});
const sub = // Get the subscription from your backend
const { auth, p256dh } = sub.keys;
const res = await sendPushNotification(
keyPair,
{
endpoint: sub.endpoint,
keys: {
auth: auth,
p256dh: p256dh,
},
},
"support@website.com",
JSON.stringify("Insert JSON payload here"),
);
if (!res.ok) {
console.error('Failed to send push notification', res);
}
import { generateVapidKeys, serializeVapidKeys } from 'web-push-browser';
const keys = await generateVapidKeys();
const serializedKeys = await serializeVapidKeys(keys);
console.log(serializedKeys);
This package only supports the basic functionality. If you need more advanced features, such as proxies, custom headers, etc. you can access the internal functions to create your own requests.
[!NOTE]
aesgcm
is not completely implemented in this package. Please useaes128gcm
instead.
FAQs
Minimal library for sending notifications via the browser Push API
The npm package web-push-browser receives a total of 5 weekly downloads. As such, web-push-browser popularity was classified as not popular.
We found that web-push-browser demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.
Security News
AI-generated slop reports are making bug bounty triage harder, wasting maintainer time, and straining trust in vulnerability disclosure programs.