JXNGRX.
Back to Projects
jxpush
In-progressTypeScriptNode.jsExpo+1 more

jxpush

Unified TypeScript SDK for Expo Push API and Firebase Cloud Messaging with bulk sending, metrics, and production-safe retries.

Timeline

Ongoing

Role

Creator & Maintainer

Team

Solo

Status
In-progress

Technology Stack

TypeScript
Node.js
Expo
Firebase Cloud Messaging

Key Challenges

  • Abstracting Expo and FCM behind one provider-agnostic API
  • High-throughput bulk delivery with reliable error handling
  • Developer experience with fluent builders and full TypeScript coverage

Key Learnings

  • Push notification provider differences and token lifecycle
  • Batching strategies for mobile notification throughput
  • Designing chainable APIs for complex payload construction

Overview

jxpush is a unified push notification library for Expo and Firebase Cloud Messaging (FCM). It gives mobile and backend teams one TypeScript API to build, send, and track notifications—without rewriting logic when switching providers.

What It Is

jxpush ships as an npm package (npm install jxpush) with a documentation site at jxpush.jxngrx.com. The PushClient initializes against Expo or FCM, exposes a fluent message builder, and supports single sends, bulk batches, structured logging, and automatic retries for failed deliveries.

Who It's For

  • React Native / Expo developers who want FCM flexibility without leaving the Expo workflow
  • Backend engineers standardizing notification code across iOS, Android, and web clients
  • Teams migrating providers who need a stable interface instead of vendor-specific SDK sprawl

How It Works

  1. Initialize — Choose ProviderType.EXPO or FCM and configure credentials once.
  2. Compose — Build payloads with priorities, custom data, and notification bodies via a chainable API.
  3. Send — Dispatch single tokens or bulk batches optimized for throughput.
  4. Observe — Use built-in metrics and logging to track delivery, drops, and retries.

Key Features

  • Expo + FCM: Switch providers without changing application send logic.
  • Fluent Builder: Readable, chainable API for complex notification payloads.
  • Bulk Sending: Batch thousands of notifications efficiently in one request flow.
  • Metrics & Logging: Transparent delivery status for received, failed, and dropped messages.
  • TypeScript Ready: First-class types with autocomplete across the full client surface.
  • Production Safe: Robust error handling with automatic retry for transient failures.

Why I Built This

Push notifications are deceptively simple until you support multiple providers, bulk campaigns, and production observability. I built jxpush to give myself—and other developers—a small, type-safe layer that handles the boring reliability work so product code stays clean.

Technical Architecture

Core library

The SDK wraps Expo Push API and FCM with a shared PushClient, provider adapters, and normalized result types. Logging levels and retry policies are configurable at initialization.

Documentation site

The landing page includes install commands, API examples, and feature highlights so developers can evaluate and adopt the library quickly.