BERRY9 IT Services, home

Penetration Testing Flutter and React Native Apps

Many Indian product teams build one mobile app in Flutter or React Native and ship it on both stores. The OWASP mobile risks are the same as for native apps, but the tools and the places to look differ, because the framework changes where the code lives and how the app talks to the network.

Mobile apps · By Thimmagurudu Bathini · Published · 3 min read

What Is Different

Flutter and React Native compared for testing
Compared onFlutterReact Native
Where the app logic isDart code compiled ahead of time into a native library inside the app packageA JavaScript bundle, or Hermes bytecode, shipped inside the package
How easy it is to readHarder: there is no Java or Swift to decompile, and tools work on the compiled libraryEasier: an unprotected JavaScript bundle is plain text, and Hermes bytecode has decompilers
Network trafficThe app does not follow the device's proxy setting by default, so interception needs other routingFollows system networking, so a proxy works unless the app pins certificates
Typical storage mistakeValues in shared preferences or local filesTokens and personal data in unencrypted AsyncStorage

Testing a React Native App

The tester unpacks the package and finds the JavaScript bundle (for example index.android.bundle). If it is not obfuscated, it can be read like source. Searching it often turns up what the team thought was hidden:

$ unzip -q app.apk -d app && grep -oE "(api[_-]?key|secret|Bearer )[^\"']{0,40}" app/assets/index.android.bundle
apiKey: "sk_live_…"        # a secret key shipped to every phone

Anything in the bundle is public. Secret keys, internal URLs, feature flags that unlock paid features and hard-coded admin checks all show up here. Testers also check AsyncStorage for tokens, any over-the-air update mechanism (can the update be tampered with, is it signed?), deep links and the native modules the app adds.

Testing a Flutter App

The app logic is in a compiled library. Testers use frameworks that understand Dart's runtime to recover class and method names and to hook functions with Frida. Network interception is the first obstacle. Because the app ignores the device proxy, the tester redirects its traffic at the network level, or uses a patched build, and handles the certificate checks the app does itself. Once traffic is visible, the API tests are the same as for any other app: see intercepting mobile API traffic.

What Both Frameworks Share

  • The server is the security boundary. Whatever the app checks, the attacker can skip.
  • Local storage, backups, logs and screenshots.
  • Deep links, intents and exported components.
  • Third-party SDKs for analytics, payments and push messages, and what data they receive.
  • Root and jailbreak checks, which are speed bumps. See the OWASP Mobile Top 10 guide.

How to Check Your Own App

  • Unpack the release build and search it for keys, tokens and internal host names.
  • List what the app writes to disk and what is kept in AsyncStorage or shared preferences.
  • Try to intercept the app's traffic as a user would. If you cannot, find out whether that is by design (pinning) or an accident.
  • Ask which decisions the app makes on its own that the server should make.

What a Fix Looks Like

  • Keep secrets off the device. Use short-lived tokens issued after sign-in, and keep long-lived keys on your server.
  • Store tokens in the platform's secure storage (Keychain, Android Keystore), through a maintained library, and not in AsyncStorage or plain preferences.
  • Enable obfuscation for release builds (Flutter's --obfuscate with --split-debug-info, and Hermes bytecode with a minifier for React Native) as a delay, not a defense.
  • Sign and verify over-the-air updates.
  • Check every sensitive action on the server.

These tests are part of our mobile application Penetration Testing.

To plan a test for your own systems, request a scoping call, or download the pre-test checklist and scoping questionnaire.

Sources

Links checked on 5 November 2026.

Next Step

To have an engineer test your own app and its back end, see mobile application Penetration Testing. To get your scope ready first, use the pre-test checklist and scoping questionnaire.

Written by Thimmagurudu Bathini, BERRY9 IT SERVICES PRIVATE LIMITED, Hyderabad. Questions about your own systems? Request a scoping call or call +91 86868 92922.

Plan Your Next Security Test

Tell us what needs Penetration Testing and when you need it done, and we will propose a scope and timeline. We respond within 24 hours. If you would rather talk first, call or write to us.