You are probably reading this first sentence through the light of a smartphone where there is a multitude of mobile applications. This object, which by its mobile applications, has proven its importance in maintaining social ties and well before that, has revolutionized our daily lives. Mobile applications have not only revolutionized by their uses, they have also done so by the technologies that govern them. 2021 confirms a trend, a change, a new direction. Jetpack compose, SwiftUI, XCode Cloud, Flutter, reactNative, but also the PWA and webassembly, compose the technical bricks of this change. All this does not speak to you? No need to panic! Let’s debrief.
The beginnings of mobile development
The early days of mobile development were challenging. The first technical foundations were found in programming languages for desktop applications. The complexity of the first applications made them difficult to design, and targeting all platforms required a huge budget. Reducing costs and complexity to see innovation emerge, that’s how I would define the early years of mobile.
Two trends emerged from this period: native and hybrid.
The concept of hybrid solutions is simple: write the code once, run it everywhere. There are mainly two main techniques: solutions based on web technologies, relying on a browser (web-view) and those that transform a common code into editor-specific code (iOS /Android). The hybrid approach often required what I call, black magic, as it resulted in a wall of difficulties for non-mobile developers.
Publishers on the other hand were making their native solutions richer and sexier day by day.
At the same time, we were witnessing the birth of a third trend with JavaScript/HTML5 that mimicked the world of mobile apps to offer PWAs and web-apps, all accompanied by simple and complete documentation. Push notifications, local storage and connectionless operation make the border between web and app more and more blurred.
The mobile has long inspired the web. Now it’s the other way around.
In 2013, Facebook presented a new way to make web-apps with a declarative approach (It should look like this), based on reusable visual components: ReactJs.
In 2014, came out the first version of the reactive manifesto drawing the bases of an event-driven code and quickly adopted by the big web.
ECMAScript 7 (specification of JavaScript) introduces in 2017 a simpler approach to manage the asynchronous: Async and away.
These three events alone define the direction taken for 2022 by Google and Apple for the creation of native mobile applications:
- Jetpack composes and swiftUI embraces ReactJS’ declarative and composable approach
- Apple introduces this year in Swift, async, which we find, in principle, in Android coroutines
- The reactive approach finds its place with Combine and LiveData
Native is getting simpler and publishers are introducing enablers every year. Take for example Apple’s announcement of its continuous integration solution in the cloud: XCode Cloud, which removes a thorn from the side of many developer leads. But this simplification process is not only happening on the native side.
The web currently offers almost limitless capabilities
Look at the arrival of recent video games on mobile browsers. PWAs have the potential to replace traditional store apps. WebAssembly, those small binary programs that run in the browser, breaking the last technical barriers.
However, PWAs face a few drawbacks. The experience remains limited on mobile. Apple is slowing down the industry in the name, according to their words, of privacy protection. Add to that the reflex of a large majority to go through the application stores first. It is difficult to reference a PWA on the stores. PWAs are waiting for their moment of glory. In the meantime, they are hidden in hybrid apps, at least on mobile.
What about the hybrid experience?
Indeed, the hybrid experience has improved considerably. Google’s Flutter solution, for example, allows you to write an application that works on desktop, web and mobile while ensuring good performance. Flutter is gaining popularity, but it forces you to stay within the Material design rules. Most solutions suffer from this unification of the user experience.
In my opinion this experience is very important. Each OS has its own specificities that only a team familiar with the platform can offer. Less global approaches, focusing only on specific aspects, is the best of both worlds.
And in this area ReactNative (little brother of ReactJs) has a great future ahead of it. It allows you to design a complex application, but especially to complement native code. Mutualized views between all platforms while keeping the luxury of offering a seamless integration to the system; this is the trend I believe in for tomorrow.
Was it better before or now?
It is simpler today to build an application than it was yesterday. This gives more time to take into account new market constraints, to work on performance or system integration, but above all to focus on new uses. Tomorrow’s uses will be very rich. Augmented reality, artificial intelligence, even a mix of the two. Yes, the uses of tomorrow are promising, and they are being built today.
If you have to remember one thing from all this: don’t ask yourself which technology to choose, but what experience and quality of service you want to offer, the technology will follow.
David Spaeth – Mobile Team Leader JEMS
Find out more about mobile applications & JEMS!