I recently had a frustrating issue with my bank’s iOS app — I couldn’t complete a transaction because it kept crashing. I called the bank to ask for help and they told me it was a known issue on both their iOS and Android apps. They also told me they put a fix in place for the Android app but the the team was looking into a fix for iOS. That, of course, wasn’t helpful to me in that moment.
But it did reinforce a problem we see often as app developers: Companies overlook app maintenance.Frequently, executives make the decision to invest in independently developed apps for iOS and Android. But they fail to consider the resources it will take to effectively manage those separate releases over time — bug fixes, OS updates and new feature releases require parallel development paths.
Which brings me to one of the best side benefits of Xamarin: By using one code base and development platform, enterprise development teams can much more efficiently manage and maintain a multi-platform app over its lifecycle.
As premier Xamarin developers, we use Xamarin and Xamarin.Forms to save a lot of development time on projects for our clients, such as GUESS (we created three multi-platform branded apps for GUESS, or six total applications). By creating a single code base in C#, we saved an estimated 25% of upfront development time for a first release. And time is money. Simply stated: Faster release cycles save our clients money.
But the time savings doesn’t stop there.
Squashing bugs is simpler with Xamarin
If you have independently developed iOS and Android apps, think about what happens when a bug is reported (yep, bugs happen even with the best developers and app testing process). If the bug affects both your Android and iOS releases, it’s not one bug but two. That means two different QA efforts to reproduce it, and (at least) two developers to find the issue in two code bases. Two different fixes are made, and then two new builds are compiled, tested again, and regression tested for the full set of functionality. Then the apps are published.
If your application was built in Xamarin, you can address it in the code once, then push new releases to each native platform. Of course, even when you use Xamarin, there are some platform specific tasks to be completed with each release. So, you may not save half your time, but we estimate a basic bug fix in Xamarin takes about 75% of the time it takes to fix independent bugs in iOS and Android.
Over the course of an app’s lifecycle, that can add up to a lot of savings. If your team spends the equivalent of a calendar month on app maintenance, that’s more than a full week of time saved — a week of valuable time that could be spent on developing new features instead.
Speaking of new features…
So, bug fixes across platforms can be simplified with Xamarin. But what about new features? First, consider where new feature ideas come from. They often come from analyzing performance via a profiler tool and UX centric analytics tools. If this analysis can be done across a multi-platform app for Android and iOS — rather than independently — it can be a big time-saver.
Profiling your apps in Xamarin
At DRE, we use Xamarin Profiler to profile Xamarin apps and check for code that needs improvement from a performance standpoint. You can also make use of Android Studio or Xcode Instruments to analyze your app performance — but the beauty of Xamarin Profiler is you can look at performance across apps.
A single view of the user experience
After your app’s first release, your team will likely be spending a lot of time in analytics to understand the user experience — and how the app UX is tracking to the original business goals. For example, if it’s an ecommerce app, you’ll be scrutinizing each step of the purchase process and identifying where users may drop out/abandon their carts.
Like using a profiler, it’s more efficient to do this analysis across platforms, so you can see UX trends on iOS and Android apps. With Xamarin, you can implement code for multiple analytics tools (e.g. Mixpanel, Google Analytics or AppsFlyer) just once, in the shared abstraction layer — rather than adding it natively to each app. Depending on the analytics tool, you may still have to write few lines of code in each platform to abstract code to your shared layer. But the overall development effort is still reduced. And the marketing/product team will have the ability to analyze the UX across platforms in a single view.
Speaking the same language — all the way to the back end
While working with cross-platform Xamarin applications, we tend to focus on the amount of code shared between Android and iOS — and in some cases the Universal Windows Platform (UWP).
But most mobile apps pull data from some kind of back end. In the enterprise, there’s a pretty good chance that back end uses Microsoft Azure. If you didn’t know, Xamarin the company was acquired by Microsoft in 2016. In fairly short order, Xamarin has been folded into Visual Studio and is also a piece of the new Microsoft Visual Studio App Center. All of the tools in App Center integrate nicely with Microsoft’s Azure.
So, Microsoft has a complete suite of app development tools, a legacy enterprise framework in .NET, and a host of cloud services via Azure — and all of it is built around the C# programming language.
As our EVP of engineering Paulo Michels wrote about recently, all of these Microsoft pieces make using Xamarin an efficient way to develop AND manage mobile apps — especially if you have a lot of Microsoft developers on your app development team.
Think 1 app is tough to maintain? Try app maintenance for 10!
Xamarin is a great way to increase mobile app development efficiency — potentially saving costs and time. But not all pieces of code and features can be easily shared between across platforms. Push notifications is one example of a feature where Android and iOS differ. You need to create custom code in the native platforms — however, you can still abstract code and apply common logic in the shared layer. In other words, it’s possible to manage cross-platform push notifications via Xamarin once that native code is dropped into place.
There are other examples of features that need to be handled in the native OS — but as Android and iOS mature, they are becoming more similar over time. And Xamarin, under Microsoft’s watch, is continuously adding new ways to tap into features across platforms.
We’re in the midst of a complex project (stay tuned for more on this soon!) that involves five cross-platform applications — 10 total releases on iOS and Android. The iOS and Android versions of each share a common codebase — and the five different apps will also share common C# code and features. Once these apps are released, it would have been incredibly complex and time-consuming to manage app maintenance for these independently.
But thanks to Xamarin, maintaining and enhancing these apps over their lifecyles will be much easier.