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

@vartio/react-native

v0.1.0

Published

Vartio application intelligence SDK for React Native — traces, logs, crashes, and app-lifecycle telemetry over OpenTelemetry

Readme

@vartio/react-native

OpenTelemetry-based application intelligence for React Native. Traces, logs, crashes, and app-lifecycle telemetry, wrapped into a small API so a React Native app gets RED metrics, operation hotspots, and crash-free release health without hand-rolling @opentelemetry/js wiring.

Install

npm install @vartio/react-native
npm install @opentelemetry/api @opentelemetry/api-logs

react-native is a peer dependency (whatever version your app is already on). react-native-device-info is optional — install it to unlock startMemoryMonitoring() and the device.model.identifier attribute; the SDK no-ops with a warning if it's missing.

Quick start

import { Vartio } from "@vartio/react-native";

Vartio.start({
  endpoint: "https://your-otlp-backend/otlp/{monitorID}", // bare URL, no /v1/traces suffix
  token: "<ingest_token>",
  serviceName: "myapp-rn",
  serviceVersion: appVersion,
  environment: __DEV__ ? "development" : "production",
});

Vartio.installGlobalErrorHandler();
global.fetch = Vartio.wrapFetch((url) => url.replace(/\/products\/\d+/, "/products/:id"));
const navigationRef = useNavigationContainerRef();
const tracking = Vartio.trackNavigationContainer(navigationRef);

<NavigationContainer ref={navigationRef} {...tracking}>

What lights up

| SDK call | Surface | | --- | --- | | Vartio.start(options) | Service appears in Intelligence; session.start begins release-health accounting. | | Vartio.withSpan(name, fn, attributes?, classify?) | RED metrics, operation hotspots. | | Vartio.log(severity, body, attributes?) | Logs, error-log alerting. | | Vartio.recordCrash(info) / Vartio.installGlobalErrorHandler() | Crash list, crash-free release health. | | Vartio.recordScreenLoad(name, fn) | Operation hotspots, per-screen. | | Vartio.recordNavigation(from, to) / Vartio.trackNavigationContainer(ref) | Operation hotspots, navigation flow. | | Vartio.startMemoryMonitoring(intervalMs?) | Memory chart, per version/model/OS cohort. | | Vartio.wrapFetch(urlTemplate?) | RED metrics, operation hotspots, for outbound HTTP calls. | | Vartio.getTracer() / Vartio.getLogger() | Escape hatch for anything the wrapped API doesn't cover (e.g. backdated app.launch/app.tti spans). |

The full contract behind these calls — what each attribute means, and what silently breaks if it's skipped — is in docs/CONVENTIONS.md.

Works with any OTLP backend

This SDK is a thin, opinionated layer over the standard @opentelemetry/js packages. Vartio.start() takes a bare OTLP endpoint URL and a bearer token — point it at any backend that speaks OTLP/HTTP for traces, logs, and metrics, and the spans, logs, and attributes described in docs/CONVENTIONS.md will ingest and mean the same thing there as anywhere else. Nothing about the wire format is Vartio-specific.

Built for Vartio. The naming conventions this SDK enforces — session.id on every log, the reduced metrics resource for memory, the event.name = "device.crash" shape — exist because Vartio's mobile monitor type reads them to compute crash-free rate, per-cohort memory charts, and operation hotspots automatically, with no manual dashboard construction. Vartio is EU-hosted app intelligence: infrastructure and application telemetry, and data, stay in the EU. If you're already sending server or Kubernetes telemetry to Vartio, this SDK gets a mobile client onto the same Intelligence page.

Security note: wrapFetch strips query strings by default

Query strings routinely carry secrets — presigned-URL signatures, API keys, session tokens. Vartio.wrapFetch()'s default span label is origin + pathname only, with the query string and fragment stripped, specifically so those secrets never ship into span names or backend storage. Passing a urlTemplate callback gives you the full raw URL, query string included — at that point you own the decision of what's safe to put in a label.

Crash symbolication

installGlobalErrorHandler() catches JS-level fatal exceptions, but the stack it reports is the raw Hermes stack — not automatically readable. Upload a Metro source map per build (--sourcemap-output, gzipped, tagged with the same app.build.uuid your build sets) from CI right after each release build to get symbolicated crashes. See "What actually gets symbolicated" in docs/CONVENTIONS.md.

Maturity

0.x — the API may still change between minor versions. Pin an exact version if that matters to you.

Development

npm install
npm run typecheck
npm test
npm run build

See CONTRIBUTING.md.

License

Apache-2.0