Performance Traces

No crash. No error.
Still too slow.

Measure the moments your users wait for. From the first screen to a completed checkout, see how long real operations take and which paths need your attention.

iOS, tvOS & Android · PRO & ENTERPRISE · Hosted in Switzerland

A fast average is not the whole story

A healthy backend does not guarantee a responsive app. Time the work that matters, on the devices doing it.

Automatic App Start

Make the first impression count

Measure from process creation until the first screen is shown. Enable performance traces and launch timing is collected automatically, without adding your own stopwatch.

P50 · P90 · P95 · P99

Find the waits an average hides

Follow duration percentiles, a histogram and trace counts. See whether a change affects the typical operation or the slow tail, with release markers for context.

Your target. Your Appdex.

Define fast for each operation

A screen load and a video export should not share one budget. Set a target for each trace and track satisfying, tolerable and frustrating durations with Appdex.

For the request-level picture, explore network timing and error-rate alerts.

A slow checkout. But which checkout?

The operation name tells you what is slow. A little context helps you decide where to look next.

  • Add context you control. Attach up to 5 custom attributes, such as payment method, algorithm or experiment variant.
  • Isolate the slow path. Filter and compare attribute values alongside app versions, OS versions and device models.
  • Keep comparisons grounded. See each segment’s Appdex, median duration, device count and trace count, not just one overall number.

Compare performance across releases, then use rollout health for a separate, confidence-based view of crash stability.

checkoutBreak down by paymentMethod
Illustrative checkout performance by payment method
Attribute valueAppdexMedian
card18.2k traces0.93384 ms
wallet4.6k traces0.97296 ms
bank_transfer2.0k traces0.581.28 s
The same operation. A different wait.

Bank transfers stand out in this example. Investigate that path instead of treating every checkout as equally slow.

Illustrative data · not a performance benchmark

Name it. Time it. Understand it.

Enable performance traces in the SDK configuration, then add a start and a stop around your operation. App Start comes with it.

Swift · iOS & tvOS
let trace = AppeliumFeedback.startPerformanceTrace(
    name: "checkout"
)
trace?.setValue("card", forAttribute: "paymentMethod")

// Perform the checkout operation

trace?.stop()
Kotlin · Android
val trace = AppeliumFeedback.startPerformanceTrace(
    name = "checkout"
)
trace?.setValue(
    value = "card",
    attribute = "paymentMethod"
)

// Perform the checkout operation

trace?.stop()
Deliberate collection, useful context.

Performance traces are off by default. Choose non-sensitive attribute values, not names, emails or account identifiers. Data is hosted and processed in Zürich, Switzerland.

Enable traces and see the full API: iOS, tvOS and Android.

Frequently asked questions

What can I measure with performance traces?

Time a named operation in your app, such as checkout, registration, image processing or loading a screen. Start a trace before the work and stop it when the operation completes. Traces measure elapsed duration; they are not a CPU profiler or a distributed tracing waterfall.

What is collected automatically?

Once performance traces are enabled, App Start measures the time from process creation until the first screen is shown. iOS and tvOS skip background pre-warming; Android excludes excessively long startup measurements that can arise when a process was started earlier for background work. Custom operations need explicit instrumentation.

How do targets and Appdex work?

Set a target duration T for each named trace in the Dashboard. Durations up to T are satisfying, above T and up to 4T are tolerable, and above 4T are frustrating. Appdex gives full credit to satisfying traces and half credit to tolerable ones. Compare it with duration percentiles and trace counts; a target is not an automatic latency alert.

How do I enable traces, and which plans include them?

Performance traces are off by default and available on PRO and ENTERPRISE for iOS, tvOS and Android. Enable performanceTraces when starting AppeliumFeedback, then use startPerformanceTrace and stop for custom operations. Attach up to 5 custom attributes per trace, using non-sensitive categories rather than personal data. On iOS and tvOS, traces are disabled in the Simulator and while a debugger is attached to avoid unrepresentative timings.

Build an app that feels faster

Measure the operations that matter. Find the paths worth making faster.

You are in a good company - Join over 150 apps!

Over 150 apps in Switzerland choose to use Appelium.

homegate
twint
timeplaces

👨‍💻 Latest content from our Engineering blog:

XPCService

  • Strongly typed bidirectional communication channel between UIApplication and XCUIApplication with powerful APIs and super fast performance.


    More about XPCService

Screen Flow Pattern in UI tests

  • Robust and scaleable pattern for structuring UI tests. Highly reusable screen verification code with human readable test case code. All flows and interactions statically typed 🙌.


    More about the Screen Flow Pattern

SnapshotQuery™

  • Learn about SnapshotQuery - our latest addition to AppeliumTests which radically improves the performance of your XCUITests while making them more stable and reliable at the same time.


    More about SnapshotQuery

Early access and news

Be the fist one to know about all the exciting engineering posts and product announcements.