Measure logo

Adaptive Capture

Tune what Measure collects from the dashboard. Adjust sampling, masking, and log collection without releasing a new app version.

Adaptive Capture lets you tune what Measure collects straight from the dashboard, without releasing a new app version. Adjust sampling rates, screenshot masking, log collection, and more from the "Apps" tab.

The SDK fetches this configuration and caches it locally, so a change takes two app launches to take effect. The first launch fetches and caches the new settings, and the next one applies them.

Defaults

Every app starts with these defaults:

ConfigurationDefault value
Take screenshot on crashtrue
Crash session timeline duration300 seconds (5 minutes)
Take screenshot on ANRtrue
ANR session timeline duration300 seconds (5 minutes)
Bug report session timeline duration300
Trace sampling rate100%
Journey sampling rate100%
Launch metrics sampling rate100%
Disable HTTP event for URLs(empty)
Track HTTP request body for URLs(empty)
Track HTTP response body for URLs(empty)
Blocked HTTP headersAuthorization, Cookie, Set-Cookie, Proxy-Authorization, WWW-Authenticate, X-Api-Key
Screenshot mask levelAllTextAndMedia
Automatic log collectionfalse
Minimum log severityWarning
Log ignore patterns(empty)

Errors

These settings apply to crashes and ANRs, the fatal errors.

Screenshots

Each crash and ANR report includes a screenshot of the screen at the moment it happened. Turn this off if screenshots aren't something you want to capture.

Session timeline duration

Every crash and ANR arrives with a timeline of the events in the minutes before it. Adjust how far back that window reaches to trade off detail against data volume. By default it captures the 5 minutes before the error.

Bug reports

Session timeline duration

Each bug report carries a timeline of what the user did before submitting it. Set how far back it reaches to capture more or less of the session. By default it goes back 5 minutes.

Trace sampling

Measure reports every trace by default. Set the sampling rate anywhere from 100% down to 0.001% to control how much trace data you collect.

Launch metrics sampling

Launch metrics cover cold, warm, and hot launches, shown on the Overview page in the dashboard. Set a sampling rate to control how many sessions collect them. Every session collects launch metrics by default, and you can lower the rate to 0.001%.

Journey sampling

Journey events power the Journey view in the dashboard. They cover screen view events on all platforms, activity and fragment lifecycle events on Android, and view controller lifecycle events on iOS. Set a sampling rate to control how many sessions collect them. Every session collects journey events by default, and you can lower the rate to 0.001%.

HTTP events

HTTP events record the network requests your app makes. Tune what gets collected with the options below.

Sampling

Required minimum SDK versions: Android 0.16.1 and iOS 0.9.2

Set a sampling rate to control how often HTTP events are collected. All of them are collected by default, and you can lower the rate to 0.001%.

Collect or ignore specific URLs

Turn HTTP event collection on or off for specific URLs. Match a URL exactly, or use * as a wildcard.

Examples:

  • Disable a specific endpoint: https://example.com/api/v1/users
  • Disable a domain and all its endpoints: https://example.com/*
  • Disable a specific path across all domains: */api/v1/orders
  • Disable a specific URL path: https://example.com/api/*/payments

Request body collection

Request bodies and headers aren't collected by default. List the URLs you want them collected for, matching exactly or with * wildcards. Enable this only for URLs you trust to be free of sensitive data and small in payload size.

Response body collection

Response bodies and headers aren't collected by default either. List the URLs you want them collected for, using exact matches or * wildcards. As with request bodies, reserve this for URLs without sensitive data and with small payloads.

Blocked headers

Headers are only collected for URLs where you've enabled request or response body collection. Even then, you can block specific headers by name. Matching is case-insensitive.

These headers are never collected, whether or not you list them:

  • Authorization
  • Cookie
  • Set-Cookie
  • Proxy-Authorization
  • WWW-Authenticate
  • X-Api-Key

Screenshot mask level

Mask screenshots collected with crashes and ANRs to keep sensitive information from leaking. Pick how much to hide.

The mask level configuration does not apply to SwiftUI screens. Because of the way SwiftUI renders its views, all SwiftUI content is masked by default regardless of the mask level setting. Control masking for individual SwiftUI views with the .msrMask() and .msrUnmask() modifiers.

Choose from these levels:

Mask all text and media

Hides all text, buttons, input fields, images, and video.

Mask All Text And Media

Mask all text

Hides all text, buttons, and input fields.

Mask All Text

Mask text except clickable

Hides all text and input fields, but leaves clickable views like buttons visible.

Mask Text Except Clickable

Mask sensitive input fields

Hides sensitive input fields like password, email, and phone fields.

Mask Sensitive Input Fields

Logs

The Logs settings control how the SDK collects logs.

Automatic log collection

Applies only to Android and React Native.

Collect logs written to the platform's standard log streams automatically. Logs you track manually with the log API are always collected, whatever this is set to. Off by default.

Minimum log level

Set the lowest severity worth collecting. Anything below it is dropped at the source, for both automatic logs and logs tracked with the Measure.log API. The levels, from lowest to highest, are debug, info, warning, error, and fatal. By default Measure keeps warning and above, dropping debug and info.

Ignore patterns

List regular expressions to match against the log body. Any log whose body matches a pattern is discarded at the source.

Think this page can be better?

Open an issue