Integrating Instabug for Bug Tracking in Mobile Apps
Tester finds a bug, takes a screenshot in Telegram, describes in text—developer can't reproduce because no logs, device info, network requests at bug moment. Instabug solves this chain: shake-to-report or built-in button, auto-attached logs, screenshot with annotations, device data and session.
What Instabug Automatically Collects
On report submission: system logs (console output), reproduction steps (session replay—last N user actions), network requests with headers and response bodies, device info (model, OS, app version), memory and CPU at report moment. Tester only describes what's wrong.
Integration
iOS (Swift):
// AppDelegate.swift
import Instabug
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Instabug.start(withToken: "YOUR_APP_TOKEN", invocationEvents: [.shake, .screenshot])
Instabug.welcomeMessageMode = .disabled // remove onboarding for testers
NetworkLogger.enabled = true
return true
}
Android (Kotlin):
// Application class
override fun onCreate() {
super.onCreate()
Instabug.Builder(this, "YOUR_APP_TOKEN")
.setInvocationEvents(InstabugInvocationEvent.SHAKE, InstabugInvocationEvent.SCREENSHOT_GESTURE)
.build()
NetworkLogger.setEnabled(true)
}
For network request intercept on Android—OkHttp interceptor:
val client = OkHttpClient.Builder()
.addInterceptor(InstabugOkhttpInterceptor())
.build()
Workflow Integration
Instabug integrates with Jira, GitHub Issues, Linear, Slack. Report automatically creates ticket with attached logs. Important—set up report template for your workflow: priority, component, reproduction steps as required field.
For Debug/Release differentiation: in release build, Instabug usually init only for beta testers (via TestFlight/Firebase App Distribution groups)—not all production users, to avoid dashboard overload and unnecessary data collection.
Sensitive data obfuscation. Instabug logs network requests fully. If API passes passwords or tokens in body—configure blacklist:
NetworkLogger.addIgnoredURL(URL(string: "https://api.example.com/auth")!)
Or mask specific fields via custom response sanitizer.
Timeline Estimates
Basic integration—1 day. Jira/Linear integration setup, custom invocation events, sensitive field obfuscation, Debug/Beta/Release mode differentiation—additional half day.







