Mobile Development:
Android/iOS, Flutter and more

Whether you seek to offer a mobile version of your software or want to bring a completely new app on the market, we can help you to meet the high expectations your users have on all platforms.

Whether you seek to offer a mobile version of your software or want to bring a completely new app on the market, the standards for well-rounded apps that offer great user experience are high. The same goes for the expectations that users have of the apps, regardless whether they are adherents of Android or iOS. Managing these expectations is not an easy task and the ways to reach a satisfactory solution are numerous. Choosing one of these depends a great deal on the requirements of your project, but we would like to outline two of the major ways that we can go about developing the right app for your users and point to their respective advantages.

Cross-platform vs. native development

Apps are usually developed with one of two distinct approaches: natively or with a cross-platform framework such as Flutter or React Native. Native development consists of working with the SDKs of Android and iOS and coding in Java / Kotlin and Swift respectively. This requires the apps to be developed independently for each platform without there being a common codebase upon which they are built. Working with cross-platform frameworks on the other hand allows developers to implement features in one language (such as Dart in the case of Flutter) which is then compiled into native ARM code for the respective platforms. However, does a cross-platform approach really accelerate the development processes? In which respects does it have the upper hand?

RideAmigos_CaseStudy_Listing
Mobile Development
RideAmigos — Creating Native iOS & Android Apps for Rapid Market Entry

What are the big cross-platform contenders?

The community behind cross-platform mobile development has grown and many new options have emerged which outperform the simple outdated HTML approach. Two of the big contenders of this kind of development are Flutter and React Native

Each framework has its unique architecture to build apps, so they each have their pros and cons. While native apps offer superior user experience and performance, cross-platform frameworks are designed to save costs and speed up development. Let’s take a closer look at them.

What is Flutter?

Flutter is Google’s open-source development kit to create 2D cross-platform apps. It’s based on the programming language Dart, also developed by Google. The application is compiled ahead-of-time into native ARM code which results in a better performance. Flutter is not supposed to be a wrapper on top of iOS/Android but draws the UI from scratch using a C++ Library called Skia (https://skia.org). The Flutter team promotes it as an efficient tool for prototyping because of its hot-reload functionality. Developers who are familiar with OOP concepts can quickly adapt to Dart/Flutter without much mobile experience.

What is React Native?

React Native is based on Facebook’s React JavaScript Library targeting mobile platforms. The framework was released in 2015 and allows developers to write native mobile applications using JavaScript. Many companies, among them Airbnb and Facebook, are using or have used it in production. The React Native bridge invokes native rendering APIs for iOS & Android, so it uses the platforms’ real UI components. Similar to Flutter, it also provides a hot-reload feature.

Comparison

1. UI & UX

There are different ways one can go about designing your app: either by following the guidelines of each platform and thus keeping the user in a known environment or going for a unique custom design to represent the brand and letting your product stand out. The latter can be a more or less viable approach depending on the purpose of the app and your company brand.

When it comes to implementing designs, there are different concepts used in the different approaches. Native IDEs offer diverse possibilities to create the UI, either by means of a visual editor, markup language or code. Flutter on the other hand is based on widgets which are created in code. The UI is then created by combining and stacking them. As for React Native, JSX (a mixture of JavaScript and XML markup) in combination with stylesheets are used to create UI.

2. Performance

Among the most important factors is certainly performance. Native development has the advantage here because it is the option that is most optimized for the respective platforms (if developed accordingly). But how do the cross-platform approaches fare? Flutter is compiled into native ARM code, which prevents any major performance issues. Likewise, the Skia framework used to render the UI is also fast and has no drawbacks in comparison with the native one. In React Native, real JS code is passed through and converted during runtime, which leads to some inevitable overhead and an impact on the performance. It’s been shown to have greater demands on the CPU compared to Flutter and native, and both cross-platform approaches require a bit more memory.

3. Productivity & Maintenance

Perhaps one of the most relevant aspects from a financial point of view is the main selling point of cross-platform development, which is that it is supposed to require less resources. However, writing code once and automatically supporting both Android and iOS does not entirely correspond to reality. Developers still have to write a certain amount of platform-specific code or treat the platforms differently. Therefore, while some time can be saved, it also does not cut it in half and having an experienced native mobile team will be more effective than switching to Flutter or React Native. However, if the goal is to have web developers make the switch to mobile development, Flutter and especially React Native can be a very sensible choice given that it builds on skills they already have.

As regards maintenance, the main drawback of cross-platform is a delayed reaction to platform updates. Developers may have to wait until they can start adapting apps to support new OS versions or they might need to wait for updates to the SDK when there happen to be bugs or issues.

4. Native features

While the setup of the team is one of the crucial factors when choosing a development approach, another element that informs the decision process is the fact that features specific to iOS or Android or that behave differently need to be dealt with separately. Other hardware-dependent features like Bluetooth interfaces, however, can be implemented indiscriminately with frameworks like Flutter, which can then prove a much more convenient choice even in teams that would have the resources for native development.

Conclusion

There is a valid case to be made for cross-platform development. It is fully possible to achieve the same look & feel as with native development, which makes it a viable option for independent developers who seek to support multiple platforms and helps web developers to more easily set foot into mobile development.

However, for development teams that have enough resources in terms of mobile developers, native development will remain a safer option, due to the fact that there are no dependencies on other companies and frameworks.

Want to work with us?

Great digital products and services require detailed research and development. Let’s talk about your needs.

Background_3_overlay50