Skip to main content

Configuration

notifications.init() (and NotificationKit.init()) take a single NotificationConfig object. Only provider and config are required; everything else has sensible defaults.

import { notifications } from 'notification-kit';

await notifications.init({
provider: 'firebase', // 'firebase' | 'onesignal' (required)
config: { /* provider config */ }, // required — see provider pages
inApp: { /* in-app defaults */ },
debug: false,
autoInit: true,
serviceWorkerPath: '/firebase-messaging-sw.js',
storage: { /* StorageConfig */ },
analytics: { /* AnalyticsConfig */ },
features: { /* FeatureFlags */ },
});

Fields

FieldTypeNotes
provider'firebase' | 'onesignal'Required. Which push provider to initialize.
configProviderConfigRequired. The provider's config — see Firebase / OneSignal.
inAppInAppConfigDefaults for in-app toasts (position, duration, theme).
stylesStyleConfigStyling overrides for in-app notifications.
debugbooleanEnables verbose logging.
serviceWorkerPathstringPath to the push service worker (web).
autoInitbooleanWhether the provider initializes immediately.
storageStorageConfigHow preferences/state are persisted.
analyticsAnalyticsConfigAnalytics hook configuration.
environmentEnvironmentConfigEnvironment-specific overrides.
featuresFeatureFlagsToggle individual features.
localizationLocalizationConfigLocale strings.
securitySecurityConfigSecurity-related options.
backupBackupConfigBackup-related options.

Provider config shapes

Firebase

FirebaseConfig is a union — pass either a raw config or an existing Firebase app:

// Raw config
{ apiKey, authDomain, projectId, storageBucket, messagingSenderId, appId, measurementId?, vapidKey? }

// Existing app instance
{ app: firebaseApp, vapidKey? }

OneSignal

OneSignalConfig is also a union — pass appId (+ options) or an existing instance:

// By app id
{ appId, restApiKey?, safariWebId?, autoPrompt?, autoResubscribe?, notifyButton?, welcomeNotification?, ... }

// Existing instance
{ instance: oneSignalInstance }

Convenience initializers

The quickStart helper wraps init() for the common cases:

import { quickStart } from 'notification-kit';

await quickStart.initFirebase({ apiKey, authDomain, projectId, storageBucket, messagingSenderId, appId, vapidKey });
await quickStart.initOneSignal({ appId, safariWebId });

// with an already-created SDK instance
await quickStart.initFirebaseWithApp(firebaseApp, vapidKey);
await quickStart.initOneSignalWithInstance(oneSignalInstance);

Idempotent init

init() is a no-op if the kit is already initialized. Call destroy() first if you need to re-initialize with a different provider (for example when switching environments in a test harness).

await notifications.init({ provider: 'firebase', config });
await NotificationKit.getInstance().destroy();
await notifications.init({ provider: 'onesignal', config: oneSignalConfig });

See the full type definitions on the Config & types reference.