Production Performance Monitoring for Mobile App

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Production Performance Monitoring for Mobile App
Simple
ongoing support
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Production Performance Monitoring for Mobile Apps

You can't run Xcode Instruments in CI, and users won't send allocation profiles. Production performance monitoring is a separate task with tools that work on the device, don't interfere with users, and send aggregated metrics to the server.

What We Measure and With What Tools

Firebase Performance Monitoring — zero barrier to entry. The SDK automatically measures: cold start time, HTTP requests (latency, payload size, success rate), screen render time. Add custom traces for any code:

// iOS — custom trace for critical operation
let trace = Performance.startTrace(name: "catalog_load")
trace.start()

catalogService.load { [weak self] result in
    trace.stop() // metric goes to Firebase
    self?.handleResult(result)
}
// Android
val trace = Firebase.performance.newTrace("catalog_load")
trace.start()
catalogRepository.load { result ->
    trace.stop()
    handleResult(result)
}

Sentry Performance — if Sentry is already used for crashes, Performance Monitoring enables without extra SDK. Provides distributed tracing: see not only operation time on client, but breakdown by API calls it generates.

Datadog RUM — for teams with existing Datadog infrastructure. Automatically tracks Session Replay (records user interactions), Frame Rate, Network requests with full stack trace.

Metrics That Actually Impact Retention

FPS in scrolling — one of the key perceived performance indicators. UITableView jerks on fast scroll due to synchronous JPEG decoding on main thread — classic problem. Measure via CADisplayLink and send p5 (percentage of frames below 60fps) to analytics:

// Simple FPS monitor
class FPSMonitor {
    private var displayLink: CADisplayLink?
    private var lastTimestamp: CFTimeInterval = 0
    private var frameCount = 0

    func start() {
        displayLink = CADisplayLink(target: self, selector: #selector(tick))
        displayLink?.add(to: .main, forMode: .common)
    }

    @objc private func tick(_ link: CADisplayLink) {
        frameCount += 1
        if link.timestamp - lastTimestamp >= 1.0 {
            let fps = Double(frameCount) / (link.timestamp - lastTimestamp)
            MetricsCollector.record("screen_fps", value: fps, screen: currentScreen)
            frameCount = 0
            lastTimestamp = link.timestamp
        }
    }
}

On Android — FrameMetricsAggregator from androidx.core gives detailed breakdown by rendering phases.

Memory warnings — iOS sends didReceiveMemoryWarning before killing the app. Log this event with current screen and allocated memory via task_info:

NotificationCenter.default.addObserver(
    forName: UIApplication.didReceiveMemoryWarningNotification,
    object: nil, queue: .main
) { _ in
    Analytics.logEvent("memory_warning", parameters: [
        "current_screen": AppRouter.currentScreen,
        "memory_mb": memoryUsageMB()
    ])
}

Alerts and Thresholds

Set alerts in Firebase Performance or Datadog on:

  • Cold start time > 3s (p75) — Apple recommends < 400ms to first frame
  • HTTP error rate > 2%
  • Screen render time > 500ms (p95)
  • ANR rate (Android) > 0.1%
  • App not responding (iOS watchdog kills) — via Crashlytics crash rate

Main thing: don't set alerts on too-low thresholds — alert fatigue kills response to real problems.

Scope of Work

  • Firebase Performance / Sentry Performance / Datadog RUM integration
  • Custom traces on key operations (loading, navigation, business processes)
  • FPS monitoring and memory monitoring
  • Alert setup with Slack/Telegram notifications
  • Dashboard with key performance metrics

Timeframe

SDK integration + custom traces + alerts: 1–3 days. Cost calculated individually.