How to Effectively Manage Your Client-Partner Relationships
Clients Project StrategyClients leave when they feel that their needs aren’t being met. The strength of your client-partner relationship relies on a deep understanding of your client’s...
There are three versions of the React Native story. One says that React Native is a silver bullet that allows you to ship two apps for the price of one. Another would have you believe that React Native is the same, disappointing cross-platform novelty we’ve seen before with familiar shortcomings. The third story is the truth, and it’s somewhere in the middle. When React Native’s strengths are aligned with a project, it’s a very attractive option. The following are some questions that you can consider to determine if React Native is a good fit for your organization or project.
The biggest selling point for React Native is that you can use one codebase to ship apps on multiple platforms, so it makes sense that React Native is helpful for any organization building iOS and Android apps simultaneously. 100% code reuse between platforms isn’t common, but it is quite feasible to reuse the majority of code in an app. When reuse isn’t an option, it’s a straightforward process to write platform-specific code. So while you don’t get two apps for the price of one, you do ship features faster across platforms compared to developing two separate apps. This has positive cost implications, and it can be even more valuable for MVP apps built to answer market questions as quickly as possible.
That’s not to say that React Native is only a good choice when building two apps at the same time, though. Focusing on developing either an iOS or Android app before building its counterpart can reduce development time on the second app thanks to reusing React Native code.
React Native creates truly native experiences because it allows JavaScript code to interact with native components via a mechanism known as the bridge. This is a key distinction from hybrid-app solutions built on Cordova like PhoneGap or Ionic that create the same webviews on any device that runs the app. In React Native, a button in an iOS app is the same button component that a native iOS app will use. As powerful as the bridge is, it introduces some performance limitations on React Native apps that rely heavily on animation or other computations. (That doesn’t mean React Native is a lost cause in these situations, though.) If the vision for your app doesn’t rely on extensive animations or unusually high CPU demands, building a fast, engaging native experience with React Native is an attainable goal.
Despite those concerns, there are good reasons to be optimistic about the direction React Native is going. One of the great things about working with a thriving and popular open source technology like React Native is that the limitations facing it are constantly shrinking. Facebook is working on architecture changes that will improve bridge performance, and third-party contributors are solving problems by building solutions that benefit the whole community.
Another design consideration for cross-platform apps is, how closely does the app need to adhere to platform expectations? It is certainly possible to use React Native to create a floating action button for Android users to enjoy, for example, but that requires an Android-specific solution that can’t be reused for iOS. Creating a similar feature for iOS users would require separate iOS code and design. User experience is important no matter what kind of app you’re building, so we generally recommend using platform-specific conventions. Still, it is important to keep in mind that each feature unique to a platform will also require unique code, and using React Native makes the most sense when the least amount of unique code is required.
If you have dedicated iOS, Android and web teams supporting existing apps, then React Native might not close many gaps for you. For everyone else, though, React Native probably fits into your organization. Training an iOS or Android team to build React Native apps allows them to leverage their existing platform knowledge, and they’ll have an easier time picking up the platform they’re less familiar with compared to a developer without a mobile development background. For web teams, many are already comfortable building React apps and are positioned to easily make the jump to React Native development. Even web teams that don’t use React will probably learn React Native faster than they could learn Android or iOS platform tools. And if you don’t have a dev team at all, it will be easier to find JavaScript developers than anything else.
An important caveat to keep in mind is that while the majority of a codebase can be written in JavaScript and shared between Android and iOS apps, there will probably be edge-case issues that require native code and tools to solve. Fortunately, React Native makes it easy to drop into native environments. When it becomes necessary to do so, though, a native developer’s experience is invaluable.
Regardless of the team adopting React Native, developers generally find significant benefits in the framework due to tooling conveniences like hot reloading and a powerful debugger, a wealth of open-source libraries that solve problems for them and an active community striving together to build exceptional mobile apps. These elements contribute to making more effective developers who produce code quicker.
React Native has strengths and weaknesses like any other technology; using it in the appropriate situation will let its strengths shine while minimizing the impact of its weaknesses. If React Native is appealing to you because you believe it will cut your development budget in half, or that your React developers building web apps are already prepared to create flawless iOS apps, your expectations might be setting you up for disappointment. However, if you plan to build an app for Android and iOS with a new or existing team that is excited to explore new technologies, React Native could reduce development time as well as some costs.
If you have an app you’re excited about building, get in touch with us to see if React Native could be the right tool for the job.
If you’d like to know more about what adopting React Native could mean for your organization, take a look at some of these firsthand accounts from companies that decided to use React Native, for better or worse.
Clients leave when they feel that their needs aren’t being met. The strength of your client-partner relationship relies on a deep understanding of your client’s...
Responding to change is a key tenant of Agile Software Development. Predicting change is difficult, but software can be developed in a manner that...
A lot of this confusion surfaces around the scope of machine learning. While there is a lot of hype around deep learning, it is...