Alright, so hopefully by now, you’ve had a chance to integrate the Instabug SDK for iOS into your application and have received your first bug, crash, and feedback report. If you still haven’t, you can read here to learn how.
For this post, I want to explain some of the features available with the SDK and how you can really tweak and customize behavior to fit your application. User experience is a very crucial part of your app and here at Instabug, we believe that our SDK should be adaptive to allow for the customization of different elements.
In this post we’ll discuss the following options:
1. Invocation Methods
2. Prompt Options
3. End User Data (User Attributes and Identifying User)
4. UI (Colors, Locale, Content)
5. Welcome Messages
6. Network Requests
7. Custom Categories
Let’s dive in.
1. Invocation Methods
By default, Instabug is invoked when the device is shaken. The reason we chose the shake gesture to invoke the feedback process is that it is the behavior that a lot of frustrated users exhibit. We have all shaken our phones at one point due to something not working right. However, we know that sometimes the shake gesture is used in other applications.
You can also set the SDK to invoke the feedback process through one or multiple custom methods:
- Panning from the right edge of the screen (one-finger swipe from right to left)
- Two-finger swipe from right to left
- Tapping on a floating button above your app’s UI
- Taking a screenshot
To customize the invocation events, pass the values of the IBGBugReporting
enum when starting the SDK.
Swift
Instabug.start(withToken: "YOUR-TOKEN-HERE", invocationEvents: [.shake, .screenshot])
Objective-C
[Instabug startWithToken:@"YOUR-TOKEN-HERE" invocationEvents: IBGInvocationEventShake | IBGInvocationEventScreenshot]
Invocation Events
If you want to invoke the SDK manually or under certain conditions only, you can use the None
event to disable the out-of-the-box invocation methods.
If you are using the shake gesture, you can set the shaking threshold as described here.
If you are using the floating button, you can set its default position as explained here.
Swift
.none .shake .screenshot .twoFingersSwipeLeft .rightEdgePan .floatingButton
Objective-C
IBGInvocationEventNone IBGInvocationEventShake IBGInvocationEventScreenshot IBGInvocationEventTwoFingersSwipeLeft IBGInvocationEventRightEdgePan IBGInvocationEventFloatingButton
Changing the Invocation Method
To change the invocation method, call the following APIs at runtime.
Swift
BugReporting.setInvocationEvents([.shake, .screenshot])
Objective-C
[IBGBugReporting setInvocationEvents:IBGInvocationEventShake | IBGInvocationEventScreenshot];
Programmatic Invocation
If you want to invoke the Instabug SDK manually, use the invoke
method.
Swift
BugReporting.invoke()
Objective-C
[IBGBugReporting invoke];
For more ways to customize the Instabug for iOS invocation methods, see our documentation.
2. Prompt Options
When your users invoke the Instabug SDK with any of the above methods, a modal appears with your plan‘s enabled features by default. In most cases, the prompt options are:

For white labeling, contact us to learn about our fully customized enterprise plans.
You can control which options are displayed by enabling or disabling any of the features separately. When only a single option is enabled, the prompt options modal does not pop up after invocation and the flow goes immediately to the bug report, feedback, or in-app chat view. If all options are disabled, the bug report becomes the default view.
Swift
BugReporting.promptOptions = [.bug, .feedback] /* The three options are: .bug .feedback .chat */
Objective-C
IBGBugReporting.promptOptions = IBGPromptOptionBug | IBGPromptOptionFeedback; /* The three options are: IBGPromptOptionBug IBGPromptOptionFeedback IBGPromptOptionChat */
3. End-User Data
We collect some data to help you identify any user who submits a bug report or sends you feedback, and you can customize this data according to your needs.

The Instabug SDK bug report view.
User Email
By default, a valid email address is required to submit any report. You can also pre-fill the email field with a specific email address. We recommend calling this API as soon as your user logs into your app.
Swift
Instabug.identifyUser(withEmail: "qa@instabug.com", name: "QA Team")
Objective-C
[Instabug identifyUserWithEmail:@"qa@instabug.com" name:@"QA Team"];
You can also allow your users to send bug reports or feedback without entering an email address.
Swift
BugReporting.invocationOptions = [.emailFieldOptional | .commentFieldRequired]
Objective-C
IBGBugReporting.invocationOptions = IBGBugReportingInvocationOptionEmailFieldOptional | IBGBugReportingInvocationOptionCommentFieldRequired;
User Attributes
If all the information that we capture about your users and their devices isn’t enough and you’d like to add more information, we have a section in each report for that specific purpose.
To collect additional information about your users who submit bugs and feedback, you can assign custom attributes to your users. These attributes appear in your dashboard along with each report and you can use them to filter reports later for easy access and further analysis.
To add a new user attribute, call the following method at your initialization step, or perhaps after a user has logged in.
Swift
Instabug.setUserAttribute("True", withKey: "Logged in") Instabug.setUserAttribute("False", withKey: "Completed IAP")
Objective-C
[Instabug setUserAttribute:@"True" withKey:@"Logged in"]; [Instabug setUserAttribute:@"18" withKey:@"Age"];
For more ways to customize your users’ data, see our Instabug for iOS documentation.
4. UI
With Instabug for iOS, you can customize certain design elements to match your brand and minimize disrupting your users’ experience in your app.

Instabug for iOS light and dark themes.
Colors
The Instabug SDK has two color themes: light and dark. You can set which theme to use in your app.
Swift
Instabug.setColorTheme(.dark)
Objective-C
[Instabug setColorTheme:IBGColorThemeDark];
You can also set the accent color of the UI elements that indicate interactivity or a call to action to align with your brand’s colors.
Swift
Instabug.tintColor = .lightGray
Objective-C
Instabug.tintColor = UIColor.lightGrayColor;
Locale
By default, the SDK will automatically use the current locale of your user’s device. To override it, call the following API. For the full list of possible locales, see our Instabug iOS documentation.
Swift
Instabug.setLocale(.french)
Objective-C
[Instabug setLocale:IBGLocaleFrench];
Content
To customize any of the text content displayed in the SDK, you can override each individual string. For the full list of keys, see our Instabug iOS documentation.
Swift
Instabug.setValue("Your feedback is important to us!", forStringWithKey: kIBGLiveWelcomeMessageTitle)
Objective-C
[Instabug setValue:@"Your feedback is important to us!" forStringWithKey:kIBGLiveWelcomeMessageTitle];
5. Welcome Messages
By default, a welcome message is shown to your users within the first 10 seconds of their first session after you integrate the SDK in your app. The message includes instructions for how to invoke Instabug in order to report a bug or send feedback.
Beta Mode
For beta apps, a three-step onboarding modal is displayed, as shown below.
Live Mode
For production apps, a single welcome message is displayed depending on the invocation method that you set.
Out of the box, the welcome message is set by default to live mode. To change or disable the welcome mode, use the following method.
Swift
Instabug.welcomeMessageMode = .beta] // For beta testers Instabug.welcomeMessageMode = .live] // For live users Instabug.welcomeMessageMode = .disabled] // Disable welcome message
Objective-C
[Instabug setWelcomeMessageMode:IBGWelcomeMessageModeBeta] // For beta testers [Instabug setWelcomeMessageMode:IBGWelcomeMessageModeLive] // For live users [Instabug setWelcomeMessageMode:IBGWelcomeMessageModeDisabled] // Disable welcome message
Manual End User Onboarding
For full control, you can display the welcome message manually.
Swift
Instabug.showWelcomeMessage(withMode: .beta // For beta testers Instabug.showWelcomeMessage(withMode: .live] // For live users
Objective-C
[Instabug showWelcomeMessageWithMode:IBGWelcomeMessageModeBeta] // For beta testers [Instabug showWelcomeMessageWithMode:IBGWelcomeMessageModeLive] // For live users
6. Network Requests
Instabug automatically logs all network requests performed by your app and network responses. If you want to hide certain requests, like those that contain usernames and passwords, or specific data, like authentication tokens, you can use the following methods.
Omitting Network Requests From Logs
Swift
let path = "/products" let requestPredicate = NSPredicate(format: "URL.path MATCHES %@", path) let responsePredicate = NSPredicate(format: "statusCode >= %d AND statusCode <= %d", 200, 399) Instabug.setNetworkLoggingRequestFilterPredicate(requestPredicate, responseFilterPredicate: responsePredicate)
Objective-C
NSString *path = @"/products"; NSPredicate *requestPredicate = [NSPredicate predicateWithFormat:@"URL.path MATCHES %@", path]; NSPredicate *responsePredicate = [NSPredicate predicateWithFormat:@"statusCode >= %d AND statusCode <= %d", 200, 399]; [Instabug setNetworkLoggingRequestFilterPredicate:requestPredicate responseFilterPredicate:responsePredicate];
Obfuscating Network Requests in Logs
Swift
NetworkLogger.requestObfuscationHandler = { (request) -> URLRequest in var myRequest:NSMutableURLRequest = request.mutableCopy() let urlString = request.url?.absoluteString urlString = obfuscateAuthenticationTokenInString() let obfuscatedURL = URL(string: urlString) myRequest.url = obfuscatedURL return myRequest }
Objective-C
IBGNetworkLogger.requestObfuscationHandler = ^NSURLRequest * _Nonnull(NSURLRequest * _Nonnull request) { NSMutableURLRequest *myRequest = [request mutableCopy]; NSString *urlString = request.URL.absoluteString urlString = [self obfuscateAuthenticationTokenInString:urlString]; NSURL *obfuscatedURL = [NSURL URLWithString:urlString]; myRequest.url = obfuscatedURL; return myRequest; };
Obfuscating Network Responses in Logs
Swift
NetworkLogger.setResponseObfuscationHandler { (data, response, completion) in if let data = data { let modifiedData = self.modify(data: data) let modifiedResponse = self.modify(response: response) completion(modifiedData, modifiedResponse) } }
Objective-C
[IBGNetworkLogger setResponseObfuscationHandler:^(NSData * _Nullable responseData, NSURLResponse * _Nonnull response, NetworkObfuscationCompletionBlock _Nonnull returnBlock) { NSData *modifiedData = [self obfuscateData:responseData]; NSURLResponse *modifiedResponse = [self obfuscateResponse:response]; returnBlock(modifiedData, modifiedResponse); }];
To learn more about customizing logs in the Instabug SDK for iOS, see our documentation.
7. Custom Categories
To help you triage bug reports and feedback faster, you can enable custom categories to appear after the prompt options modal. This allows your testers or users to self-select the appropriate category of the bug they are reporting.
To customize these settings, simply navigate to your app settings in your Instabug dashboard—no code required.
For even more customizations, check out our documentation or contact us at support@instabug.com. We’re happy to help you adapt the Instabug SDK to fit your app and users’ behavior.
Learn More:
Instabug empowers mobile teams to accelerate their workflows and release with confidence through Real-Time Contextual Insights across the entire app lifecycle.
Learn more about Instabug’s Bug Reporting and In-App Feedback