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% |
| Take screenshot on ANR | true |
| ANR session replay duration | 300 seconds (5 minutes) |
| Bug report session replay duration | 300 |
| Trace sampling rate | 100% |
| Journey sampling rate | 100% |
| Launch metrics sampling rate | 100% |
| 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.
Screenshots
Each ANR report includes a screenshot of the screen at the moment it happened. Turn this off if you'd rather not capture screenshots.
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.
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%.
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 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
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