Native vs. Cross-Platform Mobile App Development
By: Ethan Campbell
Developer Effort Requirements
The chart below demonstrates the effort required by developers to implement the following features/functionality in each platform based on ease of implementation and developer support.
Developer Experience Quality
This chart depicts the developer experience by category with green representing a high degree of quality, that’s well-documented and fast.
Hybrid development frameworks target only a specific set of platforms. Xamarin is able to target iOS, Android, Windows, macOS, and Linux with other smaller platforms also supported and more on the way. React Native and NativeScript are limited to only iOS and Android.
Native IDEs and tools will always offer the best, fastest, and most thorough support of debugging and profiling apps. Most of the hybrid frameworks support deploying to physical devices, debugging/logging errors, live coding updates, and profiling. It should be noted that the performance and simplicity of doing so is not as straightforward when developing in native.
The community is larger for native platforms because they are the originals! Customizations through third-party tools, questions posted in forums, and updates to the platforms themselves are more abundant natively. While large communities do surround each open source, cross-platform framework, the reality is that they will not match the support that native gets.
All frameworks support testing through unit or automated UI tests. It should be noted that native development will require you to write the unit tests twice for each platform. For automated UI tests, there are testing frameworks that target one platform or framework (native iOS only, native Android only, Xamarin only, React Native only, etc.) and other frameworks that allow you to perform those tests in a cross-platform way no matter how it was developed.
Native platforms support third-party customizations through Cocoapods and Maven. Xamarin does not include support for these. React Native and NativeScript offer support for native libraries, however with a varying amount of increased difficulty over native.
Reuse of Logic
Logic written in one native platform cannot be reused on another without introducing some server-side backend to host business logic. Logic written in C# and Xamarin can be reused across projects and can even be packaged up into a Nuget. React Native allows reuse of logic when it is written in React. Likewise, NativeScript allows reuse of logic when written in Angular.
All frameworks can take advantage of native styling and theming concepts and understanding native styling at its core is a good starting point. Xamarin leverages XAML styling definitions (locally or globally). Most of the basic styling concepts are honored; however more fine-tuned styling requires custom effects/renderers to be implemented natively. NativeScript leverages CSS styling. There is no new terminology to learn as a large portion of CSS properties web developers already know can be used. CSS files can be split into common and platform specific files to provide another level of customization.
UX/UI Design Considerations
Cost savings by leveraging shared code are only realized when designs are simple enough to not require platform-specific accommodations to be made for UI designs and functionality. In situations where a rich, beautiful design is required with smooth animations, scrolling, and/or transitions, it may be more economical to leverage the deep repository of native libraries offered by the much larger native open source community. That said, a simple design can be quickly constructed with out of the box Xamarin, React Native, or NativeScript tools.
Development Effort by Platform
This chart visually displays the increase in development effort with many platforms as the design complexity of your app increases.
Which Platform Do We Choose?
Platform Interest via Google Trends
Build Your Next Mobile App with Aptera
Could a custom mobile app transform the way you do business? Learn how Aptera’s partner-focused approach to development leads to successful applications for enterprise-level companies.
About Ethan Campbell
Ethan is a Sr Software Engineer for Aptera Software, specializing in mobile technologies. He has been developing enterprise solutions since 2000. As an avid mobile development enthusiast, he loves to study new mobile technologies, languages and industry trends.