Skip to main content

Mobile SDK overview

Beta: The mobile SDK is still in beta. To get access, chat with us at the bottom right of our web pages.

The Marker.io mobile SDK is the native equivalent of our browser widget. It puts a feedback layer inside your app, so a tester who finds a bug can capture the screen, draw on it, and send a report without switching to email or Slack.

Reports land as issues in the Marker.io project you connect them to, next to the feedback you already collect from the web.

Which platforms are supported

  • React Native: available in beta as @marker.io/react-native-sdk. Requires React Native 0.76 or higher, on either the New or the legacy architecture. Works in bare React Native and in managed Expo. Follow instructions here

  • Flutter, native Swift, native Kotlin: not available yet. Vote for your platform to tell us which one to build next.

If you are testing a website or web app in a mobile browser, you do not need the SDK at all. The regular widget already works there. See How to Report Issues on Mobile.


What your testers can do

Start a report

You choose which triggers are active, and you can combine them:

  • Floating button: a button that sits on top of your app. This is the default.

  • Shake: shake the device to open the capture flow.

  • Screenshot: take an OS screenshot and Marker.io picks it up. Works on all supported iOS versions, and on Android API 34 or higher.

  • From your own UI: call Marker.capture() from any button you want.

Annotate the screenshot

Reporters mark up the capture before they send it, using freehand drawing, arrows, text, and blur, with full undo and redo. Your original screenshot is never modified, so you always keep the untouched version.

Submit without the UI

Marker.submit() sends a report with no interface at all. Use it to file issues from automated test runs or from your own custom reporting screen.


What your developers get

Every report arrives with the context needed to reproduce the bug:

  • Reporter identity: email and full name.

  • Custom metadata: any keys you set, such as app version, environment, or user ID.

  • Console logs: the last 50 console.log, warn, and error entries.

  • Network requests: recent fetch calls with URL, method, status, duration, and headers.

  • Device metadata: device model, OS version, and other signals, based on your privacy setting.

  • Current screen: the screen the tester was on, shown as View name. Wire it to React Navigation or expo-router once and it stays current.


Controlling what gets collected

Mobile apps show payment details, personal data, and auth tokens. Four controls keep them out of your reports:

  • Private views: wrap a component in <MarkerPrivateView> and it is blacked out natively, before the screenshot is written to disk.

  • Privacy presets: choose strict, balanced (the default), or permissive to control which device signals are collected, such as locale, timezone, carrier, and ad ID.

  • Network redaction: exclude header keys, body keys, and domains. Auth tokens, cookies, passwords, and card numbers are scrubbed by default.

  • onBeforeSend: a hook that lets you change or drop a report before it leaves the device.


Get started

Ready to install? Follow Install the React Native mobile SDK for the full setup, including the iOS registration step and the Android permission flow.


Need Help?

If you have any questions, comments, or corrections, chat with us at the bottom right of our web pages.

Did this answer your question?