Trends in mobile application development
What are the current trends in mobile development? We talked with Sebastian Dwornik in Spiria’s Toronto office. He is the digital solutions and technology specialist, with a strong focus on the mobile apps space in particular. He has a hand in all kinds of projects, weighing in on needs analysis, technical decisions, architectural choices, sales estimates, etc.
Hi Sebastian. What are today’s mobile technologies of choice?
When it comes to developing native mobile apps, the predominant languages are Apple’s Swift, on iOS, and Google’s Kotlin, on Android. They are the most popular, the best suited, and the most flexible. They top the list because their creators, Apple and Google, support them actively. If you’re developing a mobile application, odds are that you’ll be exposed to these languages in one way or another.
The inconvenient challenge though is that to build your mobile app for both platforms, you’ll need to develop two separate applications, in their respective language. This is where cross-platform development tools enter the scene, such as React Native and Flutter, which enable you to use a common code base.
How has React Native become so popular?
React Native has been around longer, enjoys a strong community, and benefits from Facebook’s technological and financial support. Or should I say, from Meta… And thanks to its formidable engineering capabilities, Meta, along with the open-source community, does a really good job of maintaining its momentum.
The platform’s success is also linked to Web development, where it takes advantage of the large pool of JavaScript developers by facilitating the migration of their skills to mobile platforms. Nowadays, if you are familiar with React on the web, you can more easily adapt to the mobile space, which unlocks the iOS and Android market to you. The influx of web developers only increases the tool’s popularity.
And what about Flutter?
The Flutter SDK is Google’s answer to React Native, and beyond. It doesn’t use JavaScript but instead developed its own modern OOP language named Dart, which the Flutter SDK integrates with. It’s a well designed, elegant, and very capable cross-platform option. Unlike React Native though which relies on integrating with the native UI components provided by iOS and Android, Flutter instead took the path of a more ambitious gesture by recreating and mimicking every custom pixel experience through an optimized graphics engine, named Skia. This then enables Flutter developers to build user interfaces and apps for any screen on mobile, desktop, and even web. The trifecta prize for any cross-platform tool.
We haven’t even talked about Xamarin and Ionic.
Microsoft is behind Xamarin. They bought it in 2016 to build mobile dev tools into Visual Studio. I have to admit that if you’re a C# developer, it works well enough. However, they had some issues involving Xamarin.Forms for UI elements. But the main reason to use Xamarin is to retain developers familiar with C# and .NET.
Ionic is an open-source framework that allows the use of web technologies of all kinds, such as HTML, CSS and JavaScript. It embeds a web application inside a mobile or desktop application. As with React Native, it is accessible to web developers, an advantage that gave it a foothold in the market. Slack, for example, is an Ionic application that works very well. Ionic is a good choice for a wide variety of applications, but keep in mind that it’s energy and memory intensive, and you’ll be hard-pressed to offer users an experience that feels native.
Are React Native or Flutter worth it?
Definitely. But if you want users to have a completely fluid, elegant, efficient experience that uses all the gestures afforded by mobile applications and touch screens, you can’t get around native development using Swift and Kotlin. If you opt for React Native, for example, you’re running a risk with the seamlessness of the experience. There’s always a price to pay for taking a shortcut when trying to go cross-platform. You have to carefully weigh the pros and cons when choosing the technology. The user experience is paramount, and ultimately a bad design or an unsuited platform can work against it and hurt the app’s chances of adoption.
Choosing the right technology is risky business!
For sure. I’ve seen instances where cross-platform strategies failed because the user feedback was so bad that the company decided to rebuild both apps from scratch in pure native. Dealing with frustrated customers or losing them entirely turned out to be more expensive than rebuilding the apps.
When it comes down to it, building a solid mobile application is quite a challenge, isn’t it?
Absolutely. As with any software product development, it’s a challenge to design and build the features correctly. It becomes even more so with all of mobile technology’s constraints. The way people use their devices, and their experiences on them, are so different from desktops or the web.
And then you have the development strategy that changes depending on the kind of application. Are we just going for a minimum viable product (MVP), with fewer and simpler features? In that case, cross-platform approaches are viable. Your application can be developed quicker and launched for a small group of users, and you’ll be in business faster.
Sounds like cross-platform tools really serve a great purpose.
Indeed. I’m seeing a growing client demand for cross-platform options. They are making this informed choice because of time-to-market deliverables and certain price points. When we present mobile development to clients who are undecided, we show them all the options: pure native with Swift or Kotlin, cross-platform with React Native or Flutter, along with the pros and cons for each solution, to help educate them on the ideal strategy for their venture.
Besides the faster time-to-market, the cost factor plays a role.
The reality is that many start-ups who contact us have a limited budget, and few are securely financed. This is one key element that dictates their technological decisions.
And yet there are some cases when you just can’t avoid native development.
Absolutely, and it often comes down to the complexity of the product. We had a need once to build an application that had an advanced interface to replace paper forms. We went with native, because there were so many unique complexities to deal with and didn’t want to risk getting delayed by the abstractions of cross-platform tools. In such a case, native development helps to best control that level of risk with complex interfaces. If you make intensive use of hardware such as GPS, cameras, LIDAR, and GPU, native development will be the way to go.
Native applications have a bright future, but the gains made by cross-platform tools can’t be denied.
Let’s talk price tag. Can you give us a sense of what an investment in native development might cost?
You can get away with $50,000 for a simple application, but as soon as you introduce layers of complexity with user interfaces, APIs and scaling for wider adoption, then you can easily jump up to $100 or 150K. And that’s per platform!
I get that it can scare people off and cross-platform tools can help mitigate some of those development costs, but it’s not a 50% savings. There’s usually 70% to 85% of the code that’s truly common. The rest becomes specific to each operating system.
To sum up, what’s most important to the success of a mobile application?
Utility and user experience. People download apps that provide a purpose in their life. And they keep the ones that are a joy to use.
Anyone can give you a mobile application, but not everyone can deliver a mobile experience.