Web developers can work in a browser, while mobile development calls for testing on iOS and Android simulators or real devices. Milica cautions that simulators may miss hardware issues, so she recommends testing on real devices throughout development. React Native styles use JavaScript objects and camel case; Flexbox remains available, with column as the default direction. She also recommends styled-components for CSS syntax, dynamic styling, and theming.
React developers in a wild world of native apps
Speaker
Milica Aleksic, a software engineer at Badin Soft in Niš, Serbia, explains how React developers can adapt to native app development at React Native EU 2021, presented by Callstack.
Native apps use screens and navigation patterns such as tabs and stacks, rather than browser pages and URL history. Milica describes a stack as a deck: a new screen goes on top, and going back removes it. She also explains that apps move between foreground, background, and inactive states, and points to React Native’s AppState API for tracking those changes.
React Native provides the Platform module for small platform-specific changes and .ios or .android file extensions for separate components. Mobile apps also need to handle permissions for features such as the camera, since users may grant or deny access. Because mobile connections can be slow, unreliable, or absent, Milica recommends clear offline feedback and mentions NetInfo for checking connectivity and network type.
React Native Web can bring a mobile app to the browser, though Milica says the port may need substantial UI changes. Teams can also share platform-independent logic and components between web and mobile. She describes Yarn Workspaces and Lerna as options for organizing shared packages in a monorepo, and recommends Jest with React Native Testing Library or Test Renderer for tests.
Chrome Developer Tools can debug JavaScript, while Flipper offers a desktop interface for inspecting React Native, iOS, and Android apps. Its plugins can show logs, crash reports, network requests, performance, cached images, and native layouts. Deployment follows app store processes: Apple validation can take a few days, and TestFlight supports beta testing. Milica also describes CodePush through App Center as a way to deliver some updates without waiting for a new build.
Takeaways
- Test on physical iOS and Android devices throughout development; simulators may miss hardware issues.
- Design navigation around native screens and stacks, and handle app foreground and background transitions.
- Build for denied permissions and unreliable connectivity, with clear offline feedback.
- Use a monorepo to share suitable logic and packages across web and mobile, while expecting UI adjustments.
- Choose debugging and release tools that fit native workflows, including Flipper, TestFlight, and CodePush.
Mentioned in this talk
CallstackBadin SoftReact NavigationSearch inside this talk
What was claimed 15
- feature
Callstack: React and React Native development expertise“React and React Native development experts”
YouTube Unverified1 source· Talk
- works atMilica Aleksic works at Badin Soft
“I'm working at a company called Badin Soft”
YouTube Unverified1 source· Talk
- featureReact Native: Supports building applications for iOS and Android from a single codebase
“You get a single codebase for two applications, both iOS and Android.”
YouTube Unverified1 source· Talk
- usesReact Native uses Yoga
“Under the hood, Flexbox is implemented with Yoga.”
YouTube Unverified1 source· Talk
- usesReact Native uses AppState
“You can use AppState from React Native”
YouTube Unverified1 source· Talk
- usesMilica Aleksic uses NetInfo
“We use the NetInfo package in our application”
YouTube Unverified1 source· Talk
- featureNetInfo: Provides information about active network connections and device connectivity status
“It provides information about users’ active network connections and the connectivity status of their mobile devices.”
YouTube Unverified1 source· Talk
- usesMilica Aleksic uses Lerna
“We used it when we wanted to have multiple packages and share code between web and mobile applications.”
YouTube Unverified1 source· Talk





