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:
| Configuration | Default value |
|---|---|
| Take screenshot on fatal error | true |
| Session replay for fatal errors | true |
| Session replay for unhandled errors | false |
| Session replay for handled errors | false |
| Error session replay duration | 300 seconds (5 minutes) |
| Fatal error sampling rate | 100% |
| Unhandled error sampling rate | 100% |
| Handled error sampling rate | 0% |
| ANR session replay duration | 300 seconds (5 minutes) |
| App hang threshold (iOS) | 2000 milliseconds (2 seconds) |
| App hang sampling rate (iOS) | 100% |
| App hang session replay (iOS) | true |
| App hang session replay duration (iOS) | 300 seconds (5 minutes) |
| Bug report session replay duration | 300 |
| Trace sampling rate | 100% |
| Journey sampling rate | 100% |
| Launch metrics sampling rate | 100% |
| Memory collection interval | 5 seconds |
| Memory background collection interval (Android) | 10 seconds |
| Memory session sampling rate | 0.01% |
| Disable HTTP event for URLs | (empty) |
| Track HTTP request body for URLs | (empty) |
| Track HTTP response body for URLs | (empty) |
| Blocked HTTP headers | Authorization, Cookie, Set-Cookie, Proxy-Authorization, WWW-Authenticate, X-Api-Key |
| Screenshot mask level | AllTextAndMedia |
| Automatic log collection | false |
| Minimum log severity | Warning |
| Log ignore patterns | (empty) |
Errors
Fatal, unhandled, and handled errors each get their own session replay switch and sampling rate. See error severity for what the three mean. ANRs have their own settings, below.
Screenshots
Every fatal error report includes a screenshot of the screen at the moment it happened. Turn this off if you'd rather not capture screenshots.
Errors thrown in Dart never include a screenshot, since an uncaught Flutter error can fire on every frame. In a Flutter app this setting only applies to native crashes.
Session replay
Choose which severities come with a replay of the events before the error. Only fatal errors do by default.
SDKs released before these switches existed always collect a replay for fatal and unhandled errors.
Session replay duration
One duration applies to every severity that collects a replay. By default it covers the 5 minutes before the error. A longer window shows more of what led up to the error and sends more data.
Sampling
Set a rate per severity to control how many of its errors are reported. All fatal and unhandled errors are reported by default. Handled errors aren't, since apps tend to produce a lot of them, so raise that rate when you want them.
An error dropped by sampling can still reach the dashboard if it falls inside a replay window collected for another error.
ANRs
ANRs are collected on Android only. The iOS equivalent is an app hang, with its own settings below.
Session replay duration
Every ANR arrives with a replay of the events in the minutes before it. By default it captures the 5 minutes before the ANR.
App hangs
App hangs are collected on iOS only. The Android equivalent is an ANR, with its own settings above.
Hang threshold
How long the main thread must stay blocked before it counts as a hang. The default is 2 seconds.
A lower threshold catches shorter hangs, at the cost of the SDK checking for hangs more often. The minimum value is 1 second and cannot be lower.
Sampling rate
Percentage of app hangs reported, from 0% to 100%. The default is 100%.
Session replay
Whether a session replay is recorded along with the app hang. On by default.
Session replay duration
Duration of session replay captured with app hang. 5 mins by default.
Bug reports
Session replay duration
Each bug report carries a replay 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%.
Memory
These settings control memory collection. Find them under Memory in the app's Adaptive Capture settings.
Collection interval
Choose how often the SDK collects memory while the app is in the foreground. The default is 5 seconds on Android and iOS. Set an interval from 1 to 3600 seconds.
Background collection interval
Applies only to Android.
Choose how often memory is collected while the app is in the background. The default is 10 seconds. Set an interval from 1 to 3600 seconds. iOS pauses memory collection in the background.
Session sampling rate
Choose the percentage of sessions whose memory readings are reported, from 0% to 100%. The default is 0.01% on Android and iOS. Sampling selects whole sessions. Foreground readings are still collected for session replays regardless of this setting. On Android, background readings are collected only for sampled sessions.
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 errors 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
Hides all text, buttons, and input fields.

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

Mask sensitive input fields
Hides sensitive input fields like password, email, and phone 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