Theodo apps

From Multiplatform to Multidevices: BAM opens up beyond React Native

Mobile is evolving, so is BAM.

Our customers are increasingly confronted with the need to develop apps that are compatible with all devices and the complete journeys designed for their users.

In addition to our historical expertise in ReactNative, in 2021 we therefore launched a Native Tribe (@ThomasPucci) and a Flutter Tribe (@GuillaumeDM).


A look back at our thoughts and the observations that led us in this direction.

03_app installe?e en 30 min_1

ReactNative: a historic and cutting-edge positioning at BAM

In 2014, Baptiste and I made an observation: the mobile world needed a company that was expert in multiplatform. Various businesses, often frustrated by the double cost of mobile development, were constantly looking for a solution to code their applications all at once. At that time, no solution was satisfactory and they required a high level of mastery to achieve correct results. We therefore launched BAM with this vision: to acquire expertise and create working methods that make multiplatform a viable solution for our customers.

After several months of intensive technical monitoring, an in-depth analysis of each technology available on the market and the changes that have occurred along the way, we have chosen our preferred technology: ReactNative. In 2015, we were among the first to believe in it, invest in it and make projects out of it.

The rise of multiplatform and the evolution of mobile technologies

Today, the mobile landscape has changed a lot compared to 2015 and proves to us that our bet was winning.

On the one hand, multiplatform has proven its worth: on Android ReactNative, ReactNative, Flutter or Cordova have been integrated into more than 100k applications, totaling almost 50 billion downloads (source: AppBrain).

On the other hand, the multiplatform vision of mobile has nevertheless been nuanced by a broader vision. The majority of products today need to run in a mobile and desktop web environment. The others, on connected devices such as a car, a watch or a SmartTV for example.

A company that wants to succeed in its digital strategy by 2025 can therefore no longer afford to make isolated technological choices, but must take into account all the modes of interaction with its users and choose solutions that allow it to get ahead of its competitors. At BAM we have several potential areas of development:

  • ensure an uncompromising user experience
  • reduced time to market and agility in change
  • cost control to facilitate project management

So what technical strategy should be adopted in this context? Three ways are available to us:

1. follow the philosophy that the UI should be managed by each platform and focus on reusing the business layer with Kotlin Multiplatform

2. Start with a new dedicated solution, completely redesigned for the world of multidevice: Flutter

3. increase the interoperability of ReactNative, a framework that has already proven itself in multiplatform

BAM-TECH-28

1. Kotlin Multiplatform (Mobile)

On the native side, the introduction of Swift and Kotlin changed a lot of things. Both languages have taken their respective platforms by storm: Swift is already adopted by 90% of native iOS developers (stream ) and Kotlin being used by 38% of new Android applications (stream ). The evolution of the two respective ecosystems makes coding natively easier and more efficient, with code that is less expensive to maintain in the long term.

At BAM we mainly aim at Kotlin Multiplatform Mobile. Sharing as much code as possible is crucial to successfully deliver products quickly and win the race against our competitors. The possibility of writing business logic in Kotlin and sharing it with iOS allows you to take advantage of this acceleration by remaining faithful to the UI toolkits of each platform.

This choice also has interesting tradeoffs:

  • We reduce the dependence on 3rd-party frameworks and therefore the risks of maintenance over time
  • by staying close to the native, there are no limits in the implementation compared to what is proposed by the platform, especially in terms of user experience.
  • but: compared to other solutions, we reduce the reuse of the code, so we accept a higher cost and a more complex project management
  • Today, KMM remains a choice especially for mobile applications, as Kotlin/JS is not yet ready to be deployed in production (alpha).

2. Flutter

In terms of multi-platform solutions, Flutter has grown a lot of maturity and has conquered a significant part of the market (3.7% in new apps, according to AppBrain, 7.5% intention of use according to Batch.com) by providing a serious alternative to ReactNative.

On the one hand, its architecture is different from ReactNative. Flutter relies on Skia for graphics rendering. This makes it possible to aim for high graphics performance and the possibility of creating innovative interfaces by going beyond the smartphone.

On the other hand, the language used - Dart - is attracting more and more mobile developers thanks to its double compilation which allows it to combine execution performance (AoT) and development efficiency (JiT).

These choices do not come without compensation, as the maintenance of the framework is complex and Dart is currently a niche ecosystem.

The tradeoffs in this solution are finally:

  • freedom to create innovative and efficient interfaces
  • high code reuse across all supported platforms
  • but: a risk on long-term maintenance, dependent on Google's investment
  • very young ecosystem and limited talent pool

Despite the risks, Flutter is attracting more and more players, especially those looking for an innovative interface or who aim at platforms beyond mobile (e.g. Toyota). But in our opinion, the ultimate argument comes from Google with the advances on the Fuchsia system. This would mean that a project developed in Flutter could soon be deployed on any Google device. That would be a huge opportunity.

3. ReactNative

The fact that BAM is opening up to new technologies does not mean that we are going to leave ReactNative aside. It continues to evolve and succeeds in maintaining a strong position in the market. The robustness of the ecosystem and the maturity of the platform nevertheless make it an excellent choice today for:

  • quickly start a product and quickly iterate on it
  • maintain a core business product with a small team that writes React code on the mobile side and on the web side.

ReactNative shows many of the typical advantages of a mature framework. On the one hand, ReactNative's “Lean Core” approach has built a solid foundation for future evolutions and a rich ecosystem. On the other hand, the community has already dealt with some very advanced questions: how to optimize performance, accessibility, etc.

The choice of ReactNative therefore presents the following opportunities in our opinion:

  • an excellent time-to-market with a solution that solves a lot of problems out-of-the-box
  • ease of maintaining a mobile and web solution with the same codebase
  • But: some graphical limitations
  • no robust solutions going beyond web and mobile at the moment

 

What are the new challenges for BAM?

Technological competition is part of a context where the ecosystem continues to evolve towards a multitude of supports and devices: connected TVs, touch interfaces in cars, smart speakers, etc.

On the one hand, Google is moving forward on Fuchsia, by putting the first version on a Google Nest Hub and by creating conditions for Flutter to impose itself even more on this platform.

On the other hand, it is impossible to miss the various Apple announcements: the continuous development of Apple TV, the advances in their electric car...

All this surrounded by numerous other players who are all releasing their smart devices, their integrations and their own applications.

To succeed, it is necessary to choose a technology that makes it possible to limit as much as possible the quantity of code to be written and maintained by controlling the tradeoffs that come with it.

This need brings a lot of complexity to manage in the field of multidevice and creates a need to master even more targeted and therefore more specialized tools.

It is for all these reasons that we decided to develop new expertise in native development and Flutter. And we are convinced that this approach will allow us to continue to always offer the best solution to our customers.

Développeur mobile ?

Rejoins nos équipes