Pulse iOS SDK is a simplified, production-ready SDK for instrumenting iOS applications with OpenTelemetry. Built on top of OpenTelemetry-Swift, Pulse provides a unified API with sensible defaults for easy integration.
Note: This repository is a fork of OpenTelemetry-Swift. We maintain this fork to build custom features like PulseKit while staying in sync with upstream OpenTelemetry improvements.
PulseKit is the recommended way to use Pulse iOS SDK. It provides a simple, unified API with automatic instrumentation and production-ready defaults.
Add Pulse iOS SDK to your Package.swift:
dependencies: [
.package(url: "https://github.com/dream-horizon-org/pulse-ios-sdk.git", from: "1.0.0")
]Then add PulseKit to your target:
.target(
name: "YourApp",
dependencies: [
.product(name: "PulseKit", package: "pulse-ios-sdk")
]
)import PulseKit
// Initialize PulseKit in your AppDelegate or App struct
PulseKit.shared.initialize(endpointBaseUrl: "https://your-backend.com/otlp", projectId: "your-project-id")That's it! PulseKit automatically instruments your network requests, tracks sessions, and sends telemetry data to your backend.
For more details, see the PulseKit README.
If you need direct access to OpenTelemetry APIs, you can use the underlying OpenTelemetry-Swift components:
dependencies: [
.package(url: "https://github.com/dream-horizon-org/pulse-ios-sdk.git", from: "1.0.0")
]
.target(
name: "YourApp",
dependencies: [
.product(name: "OpenTelemetrySdk", package: "pulse-ios-sdk")
]
)Note: This package includes the full OpenTelemetry-Swift implementation. All OpenTelemetry APIs are available if you need lower-level control.
- PulseKit Documentation - Complete guide to using PulseKit
- OpenTelemetry Swift Documentation - Official OpenTelemetry documentation
- OpenTelemetry Specification - OpenTelemetry specification reference
This package provides all OpenTelemetry-Swift features plus PulseKit:
- PulseKit: Simplified API wrapper with one-line initialization, automatic instrumentation, and DSL configuration
- Available Instrumentations:
URLSessionInstrumentation- Automatic network request tracingSessions- Session tracking and lifecycle managementSignPostIntegration- System performance metrics via SignPostNetworkStatus- Network connectivity monitoringMetricKitInstrumentation- System metrics collectionSDKResourceExtension- Resource attribute enrichment
- OpenTelemetry APIs: Full access to OpenTelemetry-Swift APIs including Tracing (stable), Logs (beta), Metrics, and all exporters (OTLP HTTP/GRPC, Jaeger, Zipkin, Datadog, Prometheus, Stdout)
- Future: Direct OpenTelemetry initializer for advanced instrumentation configuration
Note: PulseKit uses OTLP HTTP exporter which is production-ready. All OpenTelemetry features are available for direct use if needed.
- PulseIOSExample - Complete iOS app example showing PulseKit integration with all instrumentation available.
For more information about OpenTelemetry-Swift, visit:
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the Apache 2.0 License, same as OpenTelemetry-Swift.