One of the main things pointed out during this year’s Flutter Engage was the ability to build your app to one of six platforms: iOS, Android, Mac, Windows, Linux and web. That’s awesome news! But…
I massively agree with this article, just because you can write once, and deploy to many – doesn’t mean you should.
I approach this from a Xamarin / Xamarin Forms perspective, I haven’t dabbled in Flutter as it doesn’t solve a problem for me, but the same rings true. An app written using Xamarin Frameworks (C# / .Net) can be run and deployed on the Mac (Arm and Intel), Windows, Linux, iOS (Including Watches and Apple TV’s), Android, the Web, Tizen and probably a few more I’m forgetting – it absolutley doesn’t mean you should.
Platform users have different expectations, be it UI, layout, actions and responses (eg swipe to delete from a list in iOS vs press and hold in Android), different platforms have different input mechanisms (touch vs mouse), output standards (Watch screen vs 65″ TV Panel) all change how you the developer need to consider the app, the presentation, the user experience – it’s just not possible for one code base to achieve all of the above, without work from you.
For example, with Xamarin I can make a decision to use Xamarin Native (specific iOS and Android projects, seperate code and UI bases but maybe some shared underlying central code – eg data layers, low level stuff) or Xamarin Forms (Single code base, single UI base). The latter allows me to override, or do platform specific customisations, but at what point do all those exceptions become less efficient than developing seperately. Good development decisions need to be made, and that comes from experience and working with your client.
Still, the premise runs true, just because you can write once, and deploy to many – doesn’t mean you should.
Andy Flisher is a Mobile App Developer based in the North East of England with over 20 years software development experience. He is available for hire and specialises in cross platform mobile app development, web applications, desktop software, bespoke cloud architecture solutions and providing outsourced project management services.