Why You Should Not Re-Implement Native Features in React Native
React Native is great, because it provide superior DX while being able to provide native experience in apps. But what exactly is native?
A native application can probably be defined as following,
- It should feel at home on a device, using familiar UI, patterns and performance
- It should be able to take advantage of full functionality in the OS
Let’s focus on the first point, because we know we can take advantage of of full OS functionality in React Native.
There seems to be a misconception that when you write native Java/Obj-C/Swift code, it makes the app native. Probably in a developer’s mind it does. But the language doesn’t matter to the user. If the same feature is implemented in JS and the user can’t tell the difference, does it really matter? Nope.
Recently Martin Konicek has been advocating about why you shouldn’t re-implement existing OS patterns in JavaScript, because it’s extremely difficult to match the native gestures and animation curves when you re-implement it in JavaScript. Let’s drop “JavaScript” from Martin Konicek’s statement, and it still holds true. In short, you should avoid re-implementing existing OS patterns like gestures and animations, language doesn’t matter.
When we’re working on implementing a feature, and the animations are something we came up with, and we need to implement it in scratch, should we build it in JavaScript? Definitely, because it helps keep the implementations consistent across platforms, and React Native has a great API for animations. Performance of the animations is not a concern, because React Native can already run animations on UI thread which gives you the same performance as you would get when you write it in Java/Obj-C.
Basically, avoid re-implementing native transitions and gestures, use the existing components/libraries provided by the OS. What’s important is the experience, not the language. If you must re-implement it, and you can do it in JavaScript, go for it.
Learn more about
React Native
Here's everything we published recently on this topic.
We can help you move
it forward!
At Callstack, we work with companies big and small, pushing React Native everyday.
React Native Performance Optimization
Improve React Native apps speed and efficiency through targeted performance enhancements.
Code Sharing
Implement effective code-sharing strategies across all platforms to accelerate shipping and reduce code duplication.
Mobile App Development
Launch on both Android and iOS with single codebase, keeping high-performance and platform-specific UX.
React Native Development
Hire expert React Native engineers to build, scale, or improve your app — from day one to production.
