Intro: The creation of the new iOS app for Debitoor was a team effort that involved months of hard work. In this article, Debitoor's CTO, Allan Ebdrup, provides a detailed account of what approach was used, which tools were preferred, and how the Debitoor team went about developing the best mobile invoicing app on the market.
The world's best app for mobile invoicing. That was the ambition that caused us at Debitoor, an online invoice solution provider, to halt the development of our current iPhone and Android apps that have been created for over 4 years in Xamarin. Even though the apps had high ratings in the App store and Play store, a fresh start was needed.
A fundamental change we wanted for the development of the new mobile app was to approach it as offline-first. Offline-first means that when, for example, a carpenter is working in a basement where there is no mobile coverage and no wifi, they can still look up customers, create an invoice and more. Data collected by Debitoor revealed that many people whose work takes them away from a desk, experience not having an internet connection on their phone from time to time.
An added benefit of making a mobile app offline-first is that the app becomes very responsive. Navigating and clicking within the app is noticably faster. This is because the app usually doesn't need to load the data from the web-server over an internet connection, instead the data is already present in the memory of the phone. Fetching data from the phone memory is essentially instantaneous, making the app extremely fast.
Debitoor chose to use the new open source technology 'react-native', developed by Facebook, for the brand new mobile app. Combined with the framework 'redux', react-native provides a much cleaner and more easily-maintainable code base, allowing the development a bigger set of features in the mobile app in a shorter amount of time.
With careful engineering, meaningfully larger and more complex applications can be built while still preserving a clean and easily-maintainable code. We knew this from first-hand experience through using react-native’s sister - called just 'react' - with redux for building Debitoor web applications for a number of years with great success. What we didn’t know was the true maturity level of the react-native technology. Difficulties are almost a certainty when adopting bleeding-edge technologies, so we didn’t quite know what to expect.
Any concerns about react-native’s maturity as a technology were completely unfounded, as we rapidly realised in the eight months it took us to develop the new mobile app. There were very few hoops to jump through to make it work. When we did encounter problems, we took the chance to contribute back to Open Source projects by submitting fixes to react-native, or by open-sourcing modules or plugins for react-native. Our entire technology stack at Debitoor is based on Open Source software. We always try to contribute back to the Open Source communities that have given us so much in our daily work.
The new mobile app has been developed with the direct feedback of Debitoor users. In the first few months, we went though the initial phase of prototyping individual parts of the app and testing the prototypes on end users.
When building an MVP - Minimal Viable Product, we built the smallest product possible but one that would make sense for our customers, and we build it to be best in the world at what it does: invoicing. In the second phase of development, we invited existing Debitoor customers to beta-test the new app, beginning with 100 beta-testers and ramping up to 500 beta-testers over the course of several months. We gathered and pored over feedback from the beta-testers, making changes and updates where necessary.
With our fully-automated test and deployment pipeline and by using Continuous Integration and Deployment, we deployed updated and improved versions ad hoc, but approximately every second week. At the end of this process we arrived at a carefully-crafted mobile app that we truly believe is the world’s best invoicing mobile app. With the technological foundation on which we now stand, we are poised to conquer the other areas of functionality needed by our users in leaps and bounds through a formula that can easily be re-applied.
Allan Ebdrup, CTO