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

@robono/react-native

v0.6.0

Published

Headless Robono SDK for React Native applications.

Downloads

2,564

Readme

@robono/react-native

Headless React Native SDK for Robono Bridge. It keeps your existing authentication and screens, synchronizes after push, uses limited polling as recovery, and pauses polling in the background.

License

Licensed for authorized Robono integrations. Redistribution as a standalone SDK, bypassing Robono, and competing bridge services are prohibited. See the included LICENSE and license FAQ.

It is pure JavaScript/TypeScript, works in Expo Go, and does not require CocoaPods or a native rebuild by itself. Your push provider may still require its normal native configuration. The package is ESM-only, as expected by current React Native and Expo tooling.

Install

npm install @robono/react-native

The package includes TypeScript declarations and SBOM.spdx.json.

Start

import { AppState } from "react-native";
import { createRobonoReactNative } from "@robono/react-native";

const bridge = createRobonoReactNative({
  externalUserId: signedInUser.id,
  appState: AppState,
  http: {
    baseUrl: "https://your-app.example",
    getAccessToken: () => yourAuth.getAccessToken(),
    language: signedInUser.language,
  },
});

const unsubscribe = bridge.client.subscribe(
  updateYourExistingChatState,
);

try {
  await bridge.start();
} catch (error) {
  // Initial authentication and configuration failures reject.
  showBridgeUnavailable(error);
}

Use a BCP 47 value such as es. Localized, user-safe failures are available as error.userMessage?.localized_message, and returned records may include status_message.localized_message. After sign-in and whenever this participant changes language, call bridge.client.preferences.updateLanguage(language). The preference belongs to this connected app and signed-in participant; a guardian with a different language has a separate preference. This preference localizes Robono-generated user notices; it does not translate chat content or developer diagnostics.

Delayed events use stable code and parameters. Call bridge.client.userMessages.localize({ code, parameters, language }) separately for each viewer when child and guardian languages differ. Push contains IDs only: synchronize first, then use fetched localized status wording. Language fallback is full locale, recognized script, base language, then English.

The subscribed state uses one connection and message shape for every endpoint returned by the directory. Use the unified connections.connect/list/update/disconnect and messages.send/list/mark methods without branching on endpoint type in your UI.

When a user ends a friendship, call connections.disconnect(...). For a disconnected connection, preserve history and remove sending, reply, and quote controls. Follow the connection lifecycle for changes initiated by either endpoint.

Forward the notification from your existing notification handler. The SDK accepts both the Expo notification shape and a provider-neutral data object:

await bridge.receivePushNotification(notification);

Push data should include event and the available event, request, connection, and message IDs. Never include a Robono API key, webhook secret, or message content.

Push initiates immediate synchronization. Recovery polling runs about once a minute with jitter, backs off after failures, and pauses in the background. Call bridge.dispose() and unsubscribe() when the owning app lifecycle ends. Subscribed state is temporary synchronization state, not your permanent database.

Your backend must mount the authenticated and authorized /robono/* route supplied by @robono/server.

This is an early-access 0.x package. Patch releases are compatible fixes; a minor release before 1.0 may contain a documented breaking change. Each minor line receives critical security and Bridge compatibility fixes for at least 12 months after its successor is published. Read the packaged CHANGELOG.md before upgrading and report SDK problems at robono.com/contact?topic=sdk.

Full documentation is at robono.com/docs.