Hiring an app agency vs. an app freelancer

What is the more cost effective option; an app development agency, or a freelance app developer? While there’s plenty of pros and cons to assign to either, it is our belief that ultimately, when presented with the entirety of an app’s lifecycle, hiring an app development agency is the better choice.

Why? Because apps are never truly finished products – they exist in a medium that necessitates constant and continuous improvement. When your product exists in a space that sees users demanding the best features, the fastest loading times, and the most up-to-date UI, you need to ensure your app’s code is accessible, modifiable, and organized.

Below, you’ll find the pros of cons of hiring an app development agency versus a freelance app developer, via a comparison of both options throughout each step in the development process:

Finding an agency vs. finding a freelancer

Whether you’re searching for a freelancer or a development agency, you’ll want to begin online – however, do your best to stay away from Google or other search engines.

For freelance app developers, sites like UpWork or Clutch or The Manifest. All of these sites function very similarly; you can search for developers based on certain criteria, and find contact information (whether through the aggregate site or their own) in order to begin the vetting process.

While it’s (usually) easier to find a freelance developer, you’ll find development agencies are (again, usually) more responsive.

Hiring an agency vs. hiring a freelancer

The difference in vetting a freelance app developer versus an app development agency marks where the process starts to noticeably deviate depending on which route you take. You’ll find freelancers’ CVs and portfolios to be very skillset driven – this is because freelance developers tend to specialize in developing one type of app.

App development agencies, on the other hand, will usually focus on presenting potential clients with examples of past projects and experience – this is because agencies employ a team of developers who each specialize in different aspects of app development – this diversity of knowledge allows agencies to work on a wider array of apps.

Agencies rely on steady clients, and therefore tend to take NDAs (and business partnerships in general) more seriously than freelancers – freelancers are, however, more likely to adjust to client demands.

Agency capability vs. freelancer capability

The complexity, scale, and scope of your app will largely determine if freelance development is even a viable option. As previously mentioned, freelancers tend to specialize in developing one type of app: such as eCommerce, productivity, or event apps, for example. Not only does this specialization narrow freelancers’ capabilities to the development of a single type of app, it often means freelancers are only capable of deploying in one environment, and developing for one platform.

Development agencies, however, will make use of the multiple skill sets available to them. These full-stack agencies can create any app, large or small, for any system, and for either platform: Android, or iOS (because Android and iOS utilize different code bases, it is exceedingly rare to find a freelancer capable of developing both Android and iOS apps).

Even when coding for a single platform, programming an app requires two different skillsets – frontend and backend development. For this reason, app agencies will employ programmers for both; frontend developers build out the UI and connect the functionality of the app’s features to the UI. Backend developers program the app’s logic architecture, set-up and implement servers, and connect APIs to their respective endpoints.

Agencies also utilize other tangential skillsets in order to improve the quality of the product that is developed; UI/UX designers create the visual design and flow of the app, providing a roadmap for the frontend developers – QA engineers create test environments in order to throughly analyze the robustness of an app before its initial launch, and project managers ensure every task is completed on time and in order, therefore maintaining a consistent and efficient development schedule.

When you hire a freelance developer, you are relegating all of these tasks onto either the freelancer, yourself, or your company. As an example – while a freelance developer might be efficient at developing the systems necessary for the entire feature set of an eCommerce app, they might not be the best UI/UX designer.

A freelance developer, in this situation, would most likely make use of an app design template (meaning your app will look cookie-cutter) – or run the risk of designing the app themselves – or, if their client was willing to pay for it, bring on a supplemental freelance designer.

Agency app management vs. freelance app management

Due to the nature of their work, freelancers tend to move from client to client very quickly – small projects have quick turn around times. Your app’s lifecycle is neither short or hands-off, however. All apps require updates for aesthetic purposes, improved security, and new feature implementation. Continual analysis of your app’s status via analytics and crash reporting is a necessary task as well – and with every update released by Google Play or the App Store, your app will need to follow suit. Even updates for changes as simple as new screen resolutions require time spent in development.

Agencies have this app lifecycle management structure built in to both their build teams and business model – freelancers generally don’t.

The cost of an agency vs. the cost of a freelancer

For all of the reasons stated above, the lower hourly rate freelancers are known for doesn’t equate to more cost effective development. For a freelancer to successfully develop the entirety of an app, they must have a mastery of a wide array of skills – and when they are lacking in an area of development, must spend time learning said skill, adding to the overall time your app spends in development, and bloating your budget.

Agencies specialize in producing complex apps efficiently; freelancers specialize in client acquisition, not app lifecycle management.

How much does it cost to update an app?

“An app is never finished.”

This quote is un-attributable because most every app developer has said it – it’s a constant in the world of programming – software isn’t complete until it’s dead. From websites to operating systems, updates are an inescapable necessity.

In fact, it’s safe to assume you’ll spend one-fifth of your total development cost every year updating your app – so if your app cost $50,000 to develop, you can expect to spend about $10,000 a year on updates.

That might sound like a lot of money – and it is. If you want your app to be a top performer in terms of user retention, conversions, and revenue, however, you’ll need to be prepared to absorb the costs associated with updating your app. Based on this graph from SensorTower, you can see the industry average back in 2014 was to update an app well over once a month:

This is a correlation that has only grown in recent years – the most successful apps today release an update one to four times every month.

Why do apps update so frequently? There are a few different answers:

Updates are a form of marketing

Updates are among your strongest marketing tools – right up there with push notifications and proximity marketing. Updates are so powerful because they convey a few messages simultaneously:

  1. Serve as a reminder that your app exists
  2. Inform your users about value added to the app
  3. Provide a free CTA with immediate value for the user

Updates will also create a notification tag on their settings icon – both Android and iOS operating systems are designed to make users aware of their available updates, so users are sure to be made aware of the added value you are giving them.

Finding the right voice and message through push notifications can be incredibly difficult, but updates can be plain and straightforward – they inherently come with free value for the customer.

Design and device trends

Keeping up with UI trends is a constant task of not only keeping your sights on what your competitors are doing, but also what the top twenty apps on the App Store or Google Play are doing as well.

This is because the competition in your category might not be staying up to date with their design choices as well – it’s always best to seek out the top performers and study what they’re doing. Keep a close eye on design aspects like:

  • Where buttons are located on the screen
  • Use of negative space
  • Transitions
  • How information is displayed

Design trends are always changing, and users are more likely to abandon an app than they are to stick by its side – if there’s an app out there that does what you do, but looks better, you’ll begin to lose users to it.

For more about keeping up with design trends, check out:

The same goes for device trends – mainly concerning higher screen resolutions. For every new screen size that hits the market, you’ll need to update your app in order to fit on those new devices. Keeping up with these trends is important to the health of your app – early adopters of new device models are usually power users, so if you aren’t catering to their needs, your app’s metrics will begin to drop substantially.


Unfortunately, there will always be someone who is trying to exploit vulnerabilities in your app’s code – especially if your app deals with sensitive user data like payments or personal information. Luckily, updates can help mitigate these risks.

There is no way to build an un-crackable app. No matter what, someone out there will find a way to exploit a previously-unnoticed vulnerability if given enough time. An oft-sought out type of app for hackers to exploit are those that work in eCommerce – so if your app exists in this domain, make sure you are updating your security regularly.

Users take security very seriously. Take, for example, the fallout from Facebook’s Cambridge Analytica scandal: One in ten American users completely deleted their Facebook profile, and a staggering 26% deleted the mobile app from their smartphone.

When payment information is stolen, the response is even stronger. For this reason especially, eCommerce apps must be vigilant when it comes to the security of their users.

Bug Fixing

While the goal of any app is to launch without any bugs, they do sometimes happen. There’s many reasons for this – some bugs appear through situations that would be nearly impossible to test for, such as scalability issues, or new devices coming to market that don’t properly mesh with the code that makes your app run.

It’s a virtual guarantee that eventually, your app will run into a bug – what happens next is up to you. Users are fickle, and will abandon your app if they continue to run into bugs. In order to keep your users, you’ll need to fix the bug as quickly as possible.

New Features

Along with new device and design trends come new features – two big ones right now being location services and real-time updating. A good example is the order tracker popularized by Dominos Pizza. Dominos’ customers became familiar with their order tracker, and then began to expect it on other online ordering platforms.

Now, online food delivery platforms all make use of this order tracker – if they didn’t utilize it, users would abandon their app in favor of one that does. New features mean added value – always plan to add more value.

Show your users you care

What looks better – a website with a regularly updated blog and content, or an obviously three-year-old website that’s still touting an award from 2016? When shown the latter, you’ll probably begin to question if the company is still in operation.

Users want to know the app they are investing their time into is there for the long haul – by updating your app regularly, you implicitly show them that your app is here to stay. It also shows that your app is worth looking at and using – if you care enough to update it, there must surely be value that makes the update worth it.

Updates are a powerful user retention tool – despite their cost, app updates are necessary to your app’s longevity, and publishers stand to loose more by not updating their app than by spending capital in order to do so.

How much does it cost to build an app like UberEats?

How much does it cost to make an app like UberEats? Just like every app, the cost of development comes down to three deciding factors: feature set, time, and hourly rate. If this sounds similar to our last blog, How much does it cost to build an app like Uber?, it’s because this formula is a constant across all apps.

As we also went over in our blog about the cost of developing an app like Uber, the most expensive part of any app is actually post-development. This is due to app marketplace standards dictating the need for developers to provide continuous maintenance and update to an app’s code, infrastructure, and UI.

User retention is key to an app’s success – especially for an app with a business model like UberEats. Let’s look into the feature set that provides the platform for an app like UberEats.

First off, we need to segment the app into four different apps, those being an individual app for the customers, the restaurants, the delivery drivers, and the administrators. It is common practice for apps that require different feature sets to interact with a particular user to have different screen show depending on what the type of user is currently engaging with it – effectively creating individual apps.

To continue using the example from our previous blog, Uber; once a user selects that they are a rider, they are brought to the rider app – the same is true for drivers – once “driver” is selected, they are brought to the driver app. Both of these apps work in tandem with each other, but offer completely different feature sets, and thus show different screens.

As previously stated, an app like UberEats would be split into four different apps:

UberEats’ feature set

Customer app

Register / Log-in

Apps like UberEats make use of a login feature – this means users can save their delivery address, payment, and other info their account, therefore speeding up the process and bringing more value to the user.

Search Menu

For the user side of an app like UberEats, it is absolutely necessary to include a search function. In order for this search function to work, it must be able to search through the individual data points of your backend servers that house your restaurant data – proper logic and organization of your backend system is critical to decrease the time it takes the app to search through these data points.


A family simple feature, the cart allows users to keep track of what they have already added to their order.

Payment Integration

Payment services give users the ability to pay their driver directly though the app using a credit or debit card, as well as promotional codes – this feature is usually achieved through payment service APIs like Stripe or PayPal.

Order Tracking

Order tracking is a quality-of-life feature users have come to expect in the past few years – in order for this feature to be successfully implemented, a few different features must be used: GPS, and real-time updating.

Rating and Reviews

Users are able to leave ratings and reviews for restaurants that are aggregated in a database that can be remotely accessed by other users – this requires a connection to your backend servers.


The UI is the layer of the app the users interact with; for UberEats’ customers, this would be to order food and put in the necessary delivery and payment info.

Delivery app

Register / Log-in

Delivery drivers use their account to keep track of payments and orders – accounts are also necessary when payments are involved; deliver drivers have their account info and payment info tied digitally together in the app.

Order Management

In order for delivery drivers to keep track of where an order needs to go, they need some way to manage the orders they currently have – in order for an app like UberEats to be able to tell a driver where a specific order must go, it needs to be able to access the backend servers remotely – it also needs access to GPS and mapping, as well as location services and navigation.

Updating of order status

The delivery side of the app must constantly provide the customer with real-time updates as to the driver’s current location – to do this, it must connect to the backend servers and provide location data taken from the app’s GPS, mapping, location services, and navigation features.

Restaurant app

Register / Log-in

Restaurants need to be able to create an account for the app as well – this is so they can update menus and other information as it changes.

Order Management

Restaurants need a way to manage their orders as well – this is put in place so the restaurant doesn’t need to contact the customer with a question; the order management system provides all the details they need to make the order – a feature like this would require sharing data over a remote server between the customer app, the restaurant app, and the delivery app.

Updating the order status

Just like the delivery portion of the app, users have come to expect to be informed as to the current status of their order while it is being prepared – just like the delivery app, this would require real-time updating over a remote server.

Admin app

Admin Log-in

This would function the same as any other log-in feature, but it would provide access to the administration portion of the app.

Restaurant management

This feature would give the administrator access to the data tables that create the organization structure that houses restaurant data – after a restaurant joins the app, the administrator would add their profile here.

Payment management

This feature, which can be achieved through API integration, is necessary to the processing of payments.

The cost of developing this four-in-one food ordering app would range anywhere between $100,000 to $250,000, and sometimes even more. Scale plays a large role in determining the development cost of your app.

Also keep in mind that an app like UberEats that requires the participation of individual businesses has to budget for the acquisition of those businesses. It is easiest to start with smaller, local businesses and move up as your platform gains traction in the market.

UberEats’ tech stack

In the same vein as our previous blog about Uber, UberEats exists mostly on the backend – while the simple UI exudes simplicity, the backend systems required to handle so much real-time updating and data sharing would be both extensive and costly.

Storing and transferring data, whether it happens through physical servers or via the Cloud (which is still stored on physical servers somewhere anyway), is expensive, and requires significant infrastructure and time spent optimizing the organization of data.

In order to create and maintain a stable backend, you must invest significant time and resources – both infrastructure and human.

UberEats’ maintenance and updating costs

The costs of maintaining and updating an app comes down to the total collective salary of your entire development team.

This cost is necessary to an app like UberEats, however – only the best apps stay on top. In fact, the average mobile user in the US will spend 90% of their time engaging with their personal top five apps.

UberEats knows what keeps their app in users’ personal top five apps is the experience it provides – and this is why they spend so much money maintaining and updating their app. If their servers are unresponsive, or provide outdated data, users will move on to a different app without these issues. If their app doesn’t keep up design trends and new device screen resolutions, users will, again, abandon their app in favor of one that does.

An app is never finished

This is why the cost of developing one never has a set number – the longer your app is around, the more money you will spend on it – but these should be measured against the lifetime profit of your app.

While the coding and design of your app’s feature set are one-time investments, keeping your backend running and your frontend up-to-snuff will constitute continual, regular costs, as they are necessary to maintaining and increasing your app’s user retention.

How much does it cost to make an app like Uber?

How much does it cost to make an app like Uber? The cost of app development (no matter if you’re building a game, fitness, or social app) comes down to three distinct factors: feature set, scale, and hourly rate.

Every app’s feature set is a combination of different features that provide a cohesive user experience; while the code that makes these features work is technically the same whether one user is engaging with the app, or 100 users are, the scale of an app has significant costs on your backend and server maintenance costs – not to mention API calls and other data transfer costs.

While your app’s feature set will make up the majority of your initial development costs, scalability and maintenance will easily overshadow these investment costs over the course of your app’s lifecycle.

For an app like Uber, which boasts 80 million users spread across 77 countries, scalability is literally a huge issue – so much so that Uber employs 2000 engineers – a full third of their total employees.

This isn’t to say all of an app’s reoccurring costs come from backend management – the app marketplace demands continuous improvements to an app’s UX and UI – meaning designers are needed to improve upon existing features and ideate new ones, and engineers are needed to code these updates.

In short, development for an app like Uber is never done. For as long as that app is available on the App Store or Google Play, there will be reoccurring costs. With these costs, however, come profits; the more time and effort is put into improving your app’s UX (design and feature set), the higher these profits will usually be.

Uber’s feature set

Uber makes use of the following features to provide a working app:


Geolocation is used to provide both riders and drivers with real-time locations of each other.


GPS/Navigation is used to provide drivers with optimal routes.

Push Notifications

Push notifications are used to provide riders with updates about their ride, or other info when the user isn’t engaging with app directly.

In-app Messaging

In-app messages are used to provide riders with updates about their ride when the user is currently engaged with the app.


Payment services give users the ability to pay their driver directly though the app using a credit or debit card, as well as promotional codes.


Most apps utilize some sort of log-in feature via email or social media account.


Not to be confused with in-app messaging, this feature gives drivers and riders the ability to directly message each other.

Price estimate calculator

By using data from the GPS/Navigation feature, the app provides riders with a pre-estimate of how much their ride will cost – this is influenced distance, time of day, and location.

Ratings and reviews

Users are able to leave ratings and reviews for drivers that are aggregated in a database that can be remotely accessed by other users.


The UI is the layer of the app the riders and drivers interact with – for Uber riders, this is mainly used for booking rides and paying drivers, and for Uber drivers, it is mainly used to accept riders and follow routes.

If we were to add up the costs of developing these features, and not include the costs associated with maintaining those features, the initial costs would total anywhere between $100,000 – $300,000 depending on the hourly rate of the development team in question.

This might seem like a heavy upfront investment, but consider the potential for revenue available to you – Uber’s revenue was $11.27 billion in 2018.

Uber’s tech stack

Virtually every app (other than an extremely simple app) utilizes both a front and back end – and Uber is no exception. Much like an iceberg, Uber’s front end, while making up the layer users see, is dwarfed by its hidden-from-view back end.

While all of Uber’s backend functionality can be achieved through API integration, a backend is still required to provide the logic for the API calls. For an app at the scale of Uber, however, heavy reliance on third-party APIs can bring about exponential additional costs; GPS and mapping APIs, for instance, base their pricing on the number of API calls made – which when paired with the real-time updating that Uber utilizes, creates a significant operating cost.

Third party API integration, while expensive, can still come out as the cheaper option when compared to building your own custom system – many backend systems rely on physical infrastructure to run. Continuing with the previous example, third party GPS and mapping APIs are plentiful for a reason – significant physical infrastructure is necessary to the operation of mapping systems – everything from servers to satellites.

In order for Uber to function on a daily basis, its core functionalities – geolocation, mapping, GPS, and payments – require a significant amount of data to transfer through the app’s servers. All of its features, other than its UI layer, require some sort of data transfer in order to function.

Due to this heavy reliance on servers, backend maintenance is paramount to Uber’s success.

Uber’s maintenance and updating costs

The costs of maintaining and updating an app comes down to the total collective salary of your software and hardware engineers, as well as your UI designers. It might seem unthinkable to employ 2000 engineers like Uber does – but there’s a very good reason for an app with the scale of Uber to do so.

As loading times increase, user retention plummets. The same goes for any hiccup in the UX of an app – if there’s an app that provides even a slightly better experience in one step of the entire process, users will gravitate towards it in favor of the slightly-less-optimized one.

While many of Uber’s engineers are undoubtably updating and maintaining the frontend of Uber, there are plenty also continuously working to improve and optimize the backend architecture of the app.

Even if a week’s worth of work for an entire development team results in the increase of data transfer speeds by one hundredth of a second, the impact is significant when millions of transfer requests are made every hour. Those hundredths of a second add up when multiplied by a million over and over again – and users will notice their load times decrease, bringing them more value.

If the salary of every engineer on your team is $100K, and you were to maintain an app like Uber, your yearly operational costs would be at least $200 million (this number is based purely on salary, and doesn’t include the operational costs associated with employing 2000 engineers).

These costs are necessary to an app like Uber, however – only the best apps stay on top. In fact, the average mobile user in the US will spend 90% of their time engaging with their personal top five apps.

Uber knows what keeps their app in users’ personal top five apps is the experience it provides – and this is why they spend so much money maintaining and updating their app. If their servers are unresponsive, or provide outdated data, users will move on to a different app without these issues. If their app doesn’t keep up design trends and new device screen resolutions, users will, again, abandon their app in favor of one that does.

Operational costs are forever

Just like diamonds (and plastic), the task of updating and maintaining your app is forever present – and so to will the associated costs continue on.

While the coding and design of your app’s feature set are one-time investments, keeping your backend running and your frontend up-to-snuff will constitute continual, regular costs, as they are necessary to maintaining and increasing your app’s user retention.