Restrepo groups mobile app bugs into app-specific, platform-specific, and architecture-related issues. Examples include broken buttons and network problems, differences between iOS and Android behavior, and incorrect data flow that affects unrelated features.
What went wrong?! Deep dive into debugging RN applications
Speaker
Monica Restrepo, a software engineer at Equinox Media, compares React Native debugging tools at React Native EU 2021.
Flipper is a separate desktop app that supports React Native, iOS, and Android debugging. Its plugins can inspect layouts and accessibility properties, shared preferences, network requests, device logs, and crashes. Restrepo says its network tools are clear and capable, while noting that its iPhone version lacked breakpoints and its JavaScript debugger could not connect to Reanimated's JavaScript context.
React Native Debugger covers features such as layout inspection, logs, and network requests, and its Sources tab lets developers set breakpoints, inspect scope, and follow call stacks. Restrepo found it useful for Apollo and GraphQL caching, but says network inspection is less intuitive than Flipper's and debug mode can slow an app. Charles can help when deeper network analysis is needed.
Reactotron requires a desktop app and project setup, and supports more than React Native, including macOS, Windows, and Linux apps. It can inspect requests and state, dispatch actions through its GUI, track global errors and asynchronous storage, and run quick performance benchmarks. Restrepo notes it has fewer features than Flipper and does not support breakpoints.
Restrepo says all three tools can handle many of the same debugging tasks, but she plans to keep at least two available. She may switch from React Native Debugger when it slows the app or use Flipper when its interface suits the task better. Flipper and Reactotron both require setup in the app.
Takeaways
- Classify a bug as app-specific, platform-specific, or architecture-related to narrow the investigation.
- Use Flipper's layout and accessibility inspection to investigate UI and styling issues.
- Use breakpoints and call stacks in React Native Debugger to trace data and component property flows.
- For deeper network analysis, consider Charles when the debugger's built-in network view is insufficient.
- Keep more than one debugger available so you can switch when performance or workflow needs change.
Mentioned in this talk
Search inside this talk
What was claimed 10
- feature
Callstack: React and React Native development experts“brought to you by CodeStack, React and React Native development experts”
YouTube Verified3 sources· Talk
- role atMonica Restrepo is software engineer at Equinox Media
“I am a software engineer currently helping build one of the most innovative mobile applications”
YouTube Verified2 sources· Talk
- usesReanimated uses JSI
“There are already a lot of modules, like React Native Reanimated”
1:40inWhen will the re-architecture (TurboModules, Fabric) rollout be available to the community?YouTube Verified3 sources· Talk
- featureFlipper: Debugging platform for iOS, Android, and React Native apps
“Flipper is a platform for debugging iOS, Android, and React Native apps”
YouTube Unverified1 source· Talk
- featureFlipper: Plugins include layout inspection, shared preferences, and network request inspection
“The Layout plugin allows us to inspect our application's layout”
YouTube Unverified1 source· Talk
- featureFlipper: IPhone version lacks the ability to set breakpoints
“one of the things the iPhone version of Flipper is lacking right now is the ability to set breakpoints”
YouTube Unverified1 source· Talk
- featureReact Native Debugger: Supports breakpoints, call stack inspection, and event listener inspection
“set breakpoints at pretty much any place within your file, check the scope our code is running within, and view the call stack”
YouTube Unverified1 source· Talk
- integrates withReact Native Debugger integrates with Apollo Client extension for Chrome
“you can mix and match with the Apollo Client extension for Chrome”
YouTube Unverified1 source· Talk
- featureReact Native Debugger: Supports memory profiling and performance analysis
“gives you the opportunity to do some memory profiling and analyze performance issues”
YouTube Unverified1 source· Talk
- featureReactotron: GUI action dispatching, performance benchmarks, state subscriptions, logs, and global error tracking
“dispatch actions using the GUI to see how the app responds to them”
YouTube Unverified1 source· Talk





