Configure the BugSnag watchOS SDK to receive server-managed configuration updates without requiring an app update.
Remote SDK Configuration allows the BugSnag iOS SDK to receive configuration updates from the BugSnag server without requiring an app update or redeployment. This helps your team dynamically manage error event delivery—for example, by discarding specific error events directly from the BugSnag dashboard.
After remote configuration is enabled, the SDK fetches updates automatically and applies them in the background. No additional code changes are required for new remote rules to take effect.
Supported platforms: iOS, macOS, tvOS, and watchOS.
When Remote SDK Configuration is enabled, the SDK:
If the remote configuration cannot be downloaded or validated, the SDK falls back to its default behavior and delivers all error events as usual. Error delivery is never blocked by missing or expired remote configuration.
Remote SDK Configuration is enabled by default when you use the standard BugsnagEndpointConfiguration initializer.
BugsnagConfiguration *config = [[BugsnagConfiguration alloc] initWithApiKey:@"YOUR_API_KEY"];
// Remote configuration is enabled by default — no additional setup needed
[Bugsnag startWithConfiguration:config];
let config = BugsnagConfiguration("YOUR_API_KEY")
// Remote configuration is enabled by default — no additional setup needed
Bugsnag.start(with: config)
If you use custom endpoints, include the configuration parameter:
BugsnagConfiguration *config = [[BugsnagConfiguration alloc] initWithApiKey:@"YOUR_API_KEY"];
config.endpoints = [[BugsnagEndpointConfiguration alloc]
initWithNotify:@"https://notify.example.com"
sessions:@"https://sessions.example.com"
configuration:@"https://config.bugsnag.com/error-config"];
[Bugsnag startWithConfiguration:config];
let config = BugsnagConfiguration("YOUR_API_KEY")
config.endpoints = BugsnagEndpointConfiguration(
notify: "https://notify.example.com",
sessions: "https://sessions.example.com",
configuration: "https://config.bugsnag.com/error-config"
)
Bugsnag.start(with: config)
To opt out of remote configuration entirely, set the configuration endpoint to nil:
BugsnagConfiguration *config = [[BugsnagConfiguration alloc] initWithApiKey:@"YOUR_API_KEY"];
config.endpoints = [[BugsnagEndpointConfiguration alloc]
initWithNotify:@"https://notify.bugsnag.com"
sessions:@"https://sessions.bugsnag.com"
configuration:nil];
[Bugsnag startWithConfiguration:config];
let config = BugsnagConfiguration("YOUR_API_KEY")
config.endpoints = BugsnagEndpointConfiguration(
notify: "https://notify.bugsnag.com",
sessions: "https://sessions.bugsnag.com",
configuration: nil
)
Bugsnag.start(with: config)
Setting configuration to nil will also delete any previously cached remote configuration from the device.
| Behavior | Description |
|---|---|
| Fetch on startup | The SDK retrieves remote configuration each time the app starts. |
| Periodic refresh | Configuration is refreshed approximately every 24 hours of active app time, with a ±2 hour random jitter. |
| Caching | Downloaded configuration is cached locally and persists across app launches. |
| Version scoped | Remote configuration applies only to the app version it was downloaded for. A new app release uses default behavior until new configuration is fetched. |
| Validation retry | If configuration is downloaded but fails validation, the SDK retries once before returning to the default refresh cycle. |
| ETag support | The SDK uses HTTP ETag headers to avoid re-downloading unchanged configuration. |
| Non-blocking | If remote configuration is unavailable or expired, SDK will not discard at the source all events will be sent to BugSnag server. |
Remote SDK Configuration supports dashboard-managed discard rules that prevent matching error events from being delivered to BugSnag. These rules can discard events by error class, app version, specific error, or handled-event status, and are applied after any OnSendError callbacks have run.
Supported discard rule types:
| Rule type | Effect |
|---|---|
| Discard by error class | Provide a list of newline separated error classes that will be discarded. We won’t process these errors, and you won’t receive notifications about them. Adding or removing error classes will not apply retroactively. |
| Discard by app version | Provide a list of newline separated app versions that will be discarded. We won’t process these errors, and you won’t receive notifications about them. Adding or removing app versions will not apply retroactively. |
| Discard specific errors | Discard specific errors via the additional actions (…) menu in the dashboard. Future occurrences of these errors won’t be stored or count towards your event limit. |
| Discard handled events | Discard handled events for a specified period of time. |
Discard rules apply only to the error delivery pipeline. Session tracking and breadcrumb recording are not affected.
For more information about managing errors in the dashboard, see Error status and actions and Event usage.
Remote SDK Configuration is not available for on-premise and self-hosted deployments. This feature requires connectivity to BugSnag’s managed configuration service.
Remote SDK Configuration is available from bugsnag-cocoa v6.37.0 onwards.
No. Remote configuration is fetched on a background thread and never blocks app startup or error delivery.
The SDK uses its locally cached configuration if available and valid. If no cached configuration exists, all errors are delivered normally.
It depends on the rule. The “Discard handled events” rule only discards handled errors — crashes (unhandled errors) are always delivered. Other rules like “Discard by error class” or “Discard by app version” can affect both handled and unhandled errors based on their conditions.
No. Remote configuration is scoped to the specific app version. When a new version is released, the SDK starts fresh and fetches the latest configuration for that version.