I was recently asked by a friend for some insight into the costs of having a multi-platform (Android and iOS) application developed.

I thought that this might be something that a number of people would be interested in. As such here is my answer in blog post form.

Windows Phone

I am always amused that no-one mentions Windows phone. Windows Phone does still exist, and has 2.6% of the market but no-one really cares about it.

Here at Double Negative we chose not to build apps for Windows Phone simply because it is not worth the time or money for such a small proportion of the market. Furthermore (in my opinion) that market share will only decrease.

Single codebase?

"Ideally we would use one code base to build and maintain an app for Android and iOS."

It is my personal opinion that single codebase solutions for application development are not worthwhile.

There are tools like Ionic and NativeScript which propose solutions for the "write once, run anywhere" paradigm. They do not however cut it.

Just take a look at their respective showcases (Ionic and NativeScript). Considering the fact that these projects are showcasing the best apps using their offerings, the fact that you don't see any 'big names' says something in and of itself.

One simply needs to look at the Facebook debacle - they previously (back in 2012) had HTML5 web apps 'embedded' on Android and iOS. There were so many problems with such a setup that they transitioned to native applications in the end.

The following quote from Quora summarises things fairly well:

"Most frameworks or technologies that attempt to provide cross-platform / cross-idiom functionality need to inject layers of indirection between the programmer and the hardware which typically reduce performance and limit the degree of integration / system-native behaviour that can be achieved."

If I was going to recommend any single codebase solution then it would be React Native. I say this as an avid fan of ReactJS and the team over at Facebook. If any company have the resources to invest in the development of a one stop framework, then it is Facebook. Furthermore they have a great development team and a reputation for producing solid products.

The API

One area where one can economise is the 'backend'.

Native application development allows you to fully take advantage of the user experience guidelines, and performance optimisations built into the respective operating systems.

The actual data storage and manipulation of data can be managed by a universal web based API (with which each application interacts).

Cost

The cost of application development is obviously a very important consideration. Obviously having to have two applications developed instead of one on the face of things will increase the costs involved. In reality however I expect that this is not the case.

Given the relative infancy of React Native (and other such solutions) there are not a large number of developers well versed in it. As such you might end up paying over the odds simply due to a small supply of appropriately knowledgable developers. On the other hand Java (Android) and Swift (iOS) developers are fairly easy to find (less so if you are looking for competent developers ;)).

In addition to this, being the cynic that I am, I suspect that over the long term you would find that maintenance costs would mount. The little intricacies of these one stop solutions would result in poor user experiences for your customers that would need to be resolved.

Articles such as this one imply that the direction to go is to hire an app development firm (like themselves) at vast expense. They allude to a number of downsides associated with freelancers (which I agree with) yet give no consideration to the fact that there are potentially significant issues associated with working with a 'shop' too.

My 'corporate' experience made it patently apparent that just because you are dealing with a company or a team does not necessarily mean that the underlying code is good. Many companies simply looking for an 'app presence' might fall into the trap of seeing a product that looks good without having the technological knowledge to appreciate that what is 'under the hood' is actually extremely poorly designed/built. Again, in such situations it is the maintenance costs that will get you.

There are very few people that are really good at every part of the app development puzzle. At the bare minimum you will end up working with an engineer (versed in the respective language of the targeted operating system), and a designer/UX person. If you are going the direction of working with freelancers you can either 'manage' the project yourself or hire someone to do that too. The freelance route essentially amounts to significantly reducing the cost but adding additional complexities/stress.

Figures wise an application that simply displays (and allows manipulation of) information is what I would deem relatively simple. The costs involved would simply be a consideration of the amount of hours involved, and the cost of the person/people you hire.

A competent freelancer could easily charge $100/hour, and even a simple application could take 250+ hours to build. To give a real cost appraisal one would need to produce a complete specification of the project requirements and simply seek out quotations.

Logically if it seems complicated, it probably is. As such payment integrations, video content, photo manipulation etc are going to take any engineer longer to implement (and test). It is easy to see how the costs could rack up.