Swift Application Monitoring: Libraries for iOS and macOS

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

Monitoring Swift Applications (iOS/macOS): Key Libraries and Tools



Modern development for iOS and macOS requires not only writing functional code but also constant monitoring of performance, stability, and application behavior in real-world conditions. Monitoring Swift applications includes collecting metrics, analyzing errors, tracking crashes, profiling memory and CPU, as well as logging. In this article, we will review the main libraries and tools for monitoring Swift projects that will help you maintain high application quality.



1. Firebase Crashlytics — Leader Among Crash Tracking Tools



Firebase Crashlytics is a powerful and free tool for collecting information about application crashes. It automatically collects call stacks, logs, and user data, allowing you to quickly find and fix critical errors.



Integration via Swift Package Manager:

// In Xcode: File → Add Packages → search for "firebase-ios-sdk"// Add the module: FirebaseCrashlytics


Example setup in AppDelegate:

import FirebaseCoreimport FirebaseCrashlytics

@mainclass AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { FirebaseApp.configure() // Automatic crash collection is enabled by default return true }}


Adding custom logs:

Crashlytics.crashlytics().log("User pressed the 'Buy' button")Crashlytics.crashlytics().setUserID("user_12345")


2. MetricsKit — Built-in Metrics Collection from Apple



Starting with iOS 13 and macOS 10.15, Apple introduced MetricsKit — a framework for collecting anonymous performance metrics. Data is automatically sent to App Store Connect and is available to the developer in the "Analytics" section.



Main features:

  • Collecting application launch time (Cold Start, Warm Start)
  • Tracking memory and CPU usage
  • Energy consumption metrics
  • Crash and hang statistics


Example of enabling custom metrics:

import MetricKit

class MetricsManager: NSObject, MXMetricManagerSubscriber { override init() { super.init() MXMetricManager.shared.add(self) } func didReceive(_ payloads: [MXMetricPayload]) { for payload in payloads { if let cpuMetrics = payload.cpuMetrics { print("CPU: \\(cpuMetrics.cumulativeCPUTime)") } } }}


3. SwiftMetrics (IBM) — Monitoring Server-Side Swift Applications



If your application uses server-side Swift (e.g., Vapor or Kitura), SwiftMetrics from IBM is an excellent choice for monitoring performance, HTTP requests, and system resources.



Installation via Package.swift:

// swift-tools-version:5.7dependencies: [    .package(url: "https://github.com/RuntimeTools/SwiftMetrics.git", from: "2.0.0")]


Example initialization:

import SwiftMetricsimport SwiftMetricsKitura

let sm = try SwiftMetrics()let monitoring = SwiftMetricsKitura(swiftMetricsInstance: sm)sm.monitor() // start monitoring


Metrics are available via REST API or Prometheus.



4. Xcode Instruments — Profiling at the IDE Level



Xcode Instruments is not a library but a built-in tool for deep profiling. It allows you to analyze:

  • Memory leaks (Leaks)
  • CPU usage (Time Profiler)
  • Network requests (Network)
  • Core Data operations (Core Data)
  • Animation and rendering (Core Animation)


Launch

Recommendations