Best in class observability brought to React Native.
- OpenTelemetry is a collection of APIs, SDKs, and tools developed by OpenTelemetry to instrument, generate, collect, and export telemetry data. See What is OpenTelemetry for more information.
- react-native-open-telemetry is a library that allows you to easily use OpenTelemetry's JS and Native bindings inside your React Native app.
- Telemetry without lock-in. Send to any OTLP compliant backend including vendors
- Tracing API
- Metrics API
- Web, Android (experimental) support with iOS coming soon
- Automatic fetch instrumentation
Platform | Support |
---|---|
web | ☑️ Stable |
android | ☑️ Stable JS with experimental Native 🏗️ |
ios | ☑️ Stable JS with planned Native 👀 |
npm install react-native-open-telemetry
See OpenTelemetry's JS documentation on Traces and Metrics for more information on available APIs.
import { openTelemetrySDK } from 'react-native-open-telemetry';
// Start the SDK
const sdk = openTelemetrySDK({
debug: true,
url: "https://my-collector.com:4317",
name: "my-app",
version: "1.0.0-alpha",
environment: "development",
});
// Use available APIs
const meter = sdk.metrics.getMeter("my-js-meter", "1.0");
const promoCounter = meter.createCounter("my-promo-counter", {
description: "A counter metric for my promo section"
});
function App() {
function onPress() {
promoCounter.add(1);
}
return <Button title="Press me" onPress={onPress} />
}
Important
This section is considered highly experimental.
There's currently no support for bidirectional JS/Native communication and the native
feature flag only marks an API that will become available.
Android
See OpenTelemetry's Android documentation on Traces and Metrics for more information on available APIs.
import com.opentelemetry.OpenTelemetry
class MainApplication : Application(), ReactApplication {
override fun onCreate() {
super.onCreate()
// Start the SDK
OpenTelemetry.init(this) {
debug = true
url = "https://my-collector.com:4317"
name = "my-app"
version = "1.0.0"
environment = "production"
}
// ..
// Use available APIs
val sdk = OpenTelemetry.get()
val meter = sdk.getMeter("native-scope-name")
val counter = meter.counterBuilder("native-counter").build()
counter.add(14)
}
}
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT
Made with create-react-native-library