npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@notifymvp/react-native-sdk

v1.1.2

Published

Official React Native SDK for NotifyMVP — push notification platform

Readme

@notifymvp/react-native-sdk

Official React Native SDK for NotifyMVP.

npm: https://www.npmjs.com/package/@notifymvp/react-native-sdk

New integration? Start with SETUP.md.

npm install @notifymvp/react-native-sdk

Installation

npm install @notifymvp/react-native-sdk \
  @react-native-firebase/app \
  @react-native-firebase/messaging \
  @notifee/react-native \
  react-native-device-info \
  react-native-encrypted-storage

# iOS only
cd ios && pod install

Setup

Android — android/build.gradle

buildscript {
  dependencies {
    classpath 'com.google.gms:google-services:4.4.0'
  }
}

Android — android/app/build.gradle

apply plugin: 'com.google.gms.google-services'

Download google-services.json from Firebase Console → place in android/app/.

iOS — ios/AppDelegate.swift

import Firebase

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
  func application(_ application: UIApplication,
    didFinishLaunchingWithOptions ...) -> Bool {
    FirebaseApp.configure()
    return true
  }
}

Download GoogleService-Info.plist → place in ios/<AppName>/.

Rich Push (imageUrl + actions)

Requires @notifee/react-native (v7.8+). The server sends data-only rich payloads (notifymvp_rich=1) with imageUrl, iconUrl, and optional data.actions.

Background / killed (Android): register the SDK handler at the top of your entry file:

import messaging from '@react-native-firebase/messaging';
import { notifyMvpFirebaseBackgroundHandler } from '@notifymvp/react-native-sdk';

messaging().setBackgroundMessageHandler(notifyMvpFirebaseBackgroundHandler);

Foreground: NotifyMVP.onForegroundMessage(...) displays rich notifications by default (displayRich: false to disable).

Channel id: notifymvp_heads_up_channel (created on NotifyMVP.initialize()).


baseUrl

baseUrl is your NotifyMVP Cloudflare Worker URL (no trailing slash).

After you deploy my-app/ with Wrangler:

  • https://notifymvp.<your-account>.workers.dev
  • or https://notify.yourdomain.com

Usage

index.js / app entry

import messaging from '@react-native-firebase/messaging';
import {
  NotifyMVP,
  notifyMvpFirebaseBackgroundHandler,
} from '@notifymvp/react-native-sdk';

messaging().setBackgroundMessageHandler(notifyMvpFirebaseBackgroundHandler);

// Initialize SDK once at app start
await NotifyMVP.initialize({
  appId: 'app_xxxxxxxx',                    // Dashboard → Projects → App ID
  apiKey: 'your_api_key',                   // Dashboard → Projects → API Key
  baseUrl: 'https://your-worker.workers.dev', // your Cloudflare Worker URL
  debugLogging: __DEV__,
});

Foreground notifications (inside component)

useEffect(() => {
  const unsubscribe = NotifyMVP.onForegroundMessage((title, body, data) => {
    console.log('Foreground:', title, body);
    // Show local notification or update UI
  });
  return unsubscribe;
}, []);

Manual re-register / external user id

const result = await NotifyMVP.register();
if (result.isSuccess) {
  console.log('Re-registered!');
}

await NotifyMVP.setExternalUserId('user_12345');

API

| Method | Description | |--------|-------------| | NotifyMVP.initialize(config) | Init SDK, request permission, register device | | NotifyMVP.register() | Manually register / re-register | | NotifyMVP.setExternalUserId(id) | Link / clear external user id, then re-register | | NotifyMVP.onForegroundMessage(handler) | Listen for foreground messages | | NotifyMVP.onNotificationOpened(handler) | Tap while app in background — use url to route | | NotifyMVP.getInitialNotification() | Cold start from notification tap (url in payload) | | NotifyMVP.fcmToken | Current FCM token | | NotifyMVP.externalUserId | Last linked user id | | NotifyMVP.isInitialized | Boolean — SDK ready? |

Deep link / Launch URL (OneSignal-style)

In the dashboard, set Launch URL / Deep link when sending. It arrives as data.url.

NotifyMVP.onNotificationOpened(({ title, body, url, data }) => {
  if (url) {
    // Linking.openURL(url)  or  navigation.navigate(url)
  }
});

const initial = await NotifyMVP.getInitialNotification();
if (initial?.url) {
  // navigate using initial.url
}