Who cares what tech they use?
20 December 2018
Does it matter what technology your agency uses to create your cross platform mobile app?
Google released version 1.0 of Flutter this month (December 2018). Flutter is a new way of producing mobile applications for Android and iOS without having to write everything twice.
There are actually a lot of technologies to produce cross platform mobile apps, including…
- React Native https://facebook.github.io/react-native/
- Flutter https://flutter.io/
- Xamarin https://visualstudio.microsoft.com/xamarin/
- Cordova https://cordova.apache.org/
- … or writing apps twice
If you are looking to get an app built by an agency should the choice of underlying technology matter to you? You’ll obviously care if your app runs on iOS, Android or both, but should you care what technology is used to get it there?
Even though you might expect your agency to take care of that for you I think you should consider this question carefully. What technology is chosen could affect the maintability of your app in the years to come. It’s a decision that will affect your company. So be prepared to grill your agency on what they propose.
What questions should you ask?
What experience does the agency have?
Your agency will likely have a preference of cross platform technology based on the skill set of their team and their experience building apps. This is important to take into account as an agency that’s embedded a technology into their processes and used it in detail before will have encountered the nuances of that technology and may well be more productive, perhaps reducing the development timeline for your app. They can be realistic with you about what’s going to be difficult.
So ask your agency to describe the technology they are proposing and how have they adapted it into their development processes. Ask them what they love about it and what drives them nuts.
How widely used is the technology? Is there a community behind it?
Moving away from mobile for a moment, many websites are built with Umbraco or Wordpress. They are widely used, with strong communities behind them. Over time this has resulted in a set of plugins, practices and community support that agencies can use to bring your website to market faster and hopefully reduce your costs. At Glow we specialise in Umbraco, but I love both tools in part because of their communities.
Moving back to mobile, the cross platform technology we listed above is backed by Google (Flutter), Facebook (React Native), Microsoft (Xamarin) and Adobe (Cordova). So they all have big names behind them, but perhaps the immaturity of some of the platforms may mean there are fewer plugins, practices and support available. If those things are available does your agency know about them?
Perhaps the best questions to ask here is to get your agency to list which communities they are aware of and specifically what plugins and practices they’ve learnt about from the community. How do their teams keep on top of the technology? How do they monitor if your app is crashing in the wild? How do they do push notifications?
What technology is best suited to my app?
This is obviously one of the most important decisions. If your agency is proposing a particular technology, how does the technology compare with other choices for your app. There will be a number of dimensions to consider here. For example if your app is going to involve 100s of screens and your agency is proposing to use cutting edge tech in your app, then arguably that’s a business decision that you should be involved with.
So ask your agency how cutting edge the technology is, how mature is it?
Over the last few years Xamarin Native has been a natural fit for our skill set due to our familiarity with C#, this has led us to develop an effective production vehicle working with Visual Studio, Azure DevOps and App Center (previously Hockey App). We’ve been able to develop our own reusable components. Although its still an abstraction from say programming directly with Swift, Xamarin Native hasn’t held us back from some of the real nuances of the underlying platforms e.g. working with Android Dose Mode in different versions of Android, developing our own custom geofencing and positioning sytems.
However, Xamarin Native is not perfect, Visual Studio crashes anyone? Also build times on larger projects are nowhere near as good as Hot Reloading of React Native and the proportion of shared code between iOS and Android versions of your app might be lower too.
There are other major benefits to developing with React Native. If your agency is proposing this then I implore you to read a set of articles from AirBnb about their experiences between 2016 and 2018. AirBnb described it as revolutionary, however they also list a number of disadvantages, such as platform immaturity, the lack of type safety (which can make large products with large teams very difficult to work with), the pain of upgrading from one version of React Native to another and how they worked around performance problems.
I’m very excited about Flutter reaching version 1.0. Flutter introduces a new programming language called Dart, if your agency is familiar with C# or Java and are already in the mobile space they will likely pick up the syntax quickly. Flutter has pre-made widgets, this may speed up the development of your app. Flutter is backed by Google and they use it in some of their own apps, I guess that’s a big plus but I’m interested to see how well it will play with Apple iOS.
One of the cons of React Native (according to AirBnb) was the immaturity of the platforms, in their words …
“While React Native works well in most situations, there are instances in which its immaturity shows through and makes something that would be trivial in native very difficult.”
Given that Flutter is only just on version 1.0, I do wonder if agencies will run into similar problems.
What does this mean for you?
Although what tech your agency uses to develop your app will be driven by project requirements, many agencies specialise, so in part you’re going to be led by what they can do. But question their approach and why its suitable for your app. Find out the pros and cons of the proposed tech and make sure you’ve got an agency that can walk you through this.
At Glow for mobile projects we’ve obviously built up a skill set with Xamarin Native, we’re familiar with the design guidelines of iOS and Android and we’re confident helping clients get their apps accepted in the app stores. We've produced some of our own health related products with Xamarin Native and its served us well. We’re also been prototyping with Flutter, not just the technology but carefully thinking about how it fits into our development processes and combining it with the mobile development knowledge we’ve built up.
If you’re working within an agency and reading this then I’m interested to know what you’ll be working with in 2019 and if you would welcome your clients asking you about your technology choices and preferences.