iOS App Development Checklist: 27 Items to Consider before Starting Your Next Project

Since its launch back in 2008, the Apple App Store has seen a total of 130 billion iOS app downloads. The numbers become even more impressive if we take into account that 30 billion app downloads took place within the last year alone.

Yet not all downloaded apps get the chance to be regularly used. In fact, Localytics research finds that 24 percent of iOS users uninstall an app after just one use (data as of May 2016). With the average user retention of only 36 percent, your mobile product needs to provide a truly exceptional experience and performance to avoid getting lost among those thousands of apps flooding the market every day.

Being known for their focus on security and intuitive UX, Apple devices are widely used in business and enterprise. In order to reap all the benefits of your next project, here are 27 business-critical best practices to consider when building iOS application.

Proving the business case for application development

1. Identify your target audience

When building an application, it’s important to understand who will use your product. If you have a functioning business, you already know your target audience. If your core business is a retail company building an m-commerce solution, then you should keep in mind the people who will use your app to purchase your products. An app might appeal to a particular part of your customer base, but not all of them. If you have an EHR-type of product for physicians to access and analyze medical data, an app you might want to build should be facing patients first in order to collect the required data.

You can either utilize the existing user base to analyze the trends and single out the user groups most likely to benefit from using a mobile app, or use tools like Statista and Google Adwords/Trends to gain valuable data about your industry and audience. You may also take a look at the competitors, the users they are targeting, and understand how their products are performing using tools like App Annie and App Data. A number of survey services, similar to SurveyMonkey or Survata, come in handy when you need to hear the voice of your potential audience. ProductHunt and LaunchSky can help you pitch your idea to potential users and see who your early adopters might be.

2. Research your user profile

After you identify who might be using your app, it’s time to get to know them better. Having a good understanding of your target users’ demographics and geography will help you build a relevant, appealing, and, most importantly, useful application. The geography and demographics of your target audience define the platform you need to build your app for.

While the global mobile market is dominated by two main platforms, Apple’s iOS and Android by Google, the adoption of each one of them varies greatly from country to country.

Mobile OS Adoption Trends Worldwide
Mobile OS Adoption Trends Countrywise
Therefore, if you decide to target the US audience with your app, the iOS platform would be your best choice. However, if your product will be aimed at the middle-class workers in China, you should probably go with Android. Similarly, research finds that iOS devices are preferred by younger mobile users (aged 16-24 and 25-34) in the UK.

3. Weigh the costs and benefits

App development can be a costly enterprise. If you are planning to make the future app your core business, you should evaluate the possible benefits carefully to make sure it will be worth the effort. The Red Hat survey finds that 74 percent of organizations using KPIs to measure mobile success report a positive return on investment from implementing mobile solutions. Moreover, according to VMware 2015 State of Business Mobility Report, an average ROI of adopting business mobility equals 150 percent. Along with the significant returns, the companies tend to see increased benefits in “the ability to more rapidly bring new revenue streams online, cost of lost business opportunity and user access to mission-critical apps.”

4. Choose the engineering team

The role of the mobile solution in your business usually defines the approach to engaging tech talent. For a product that will require long-term involvement, continuous maintenance and regular upgrades, you should consider hiring an in-house engineering team or engaging a remote dedicated development center. The latter will ensure the fastest time to market and smart resource allocation, while keeping your on-site team focused on your core business. For a less important project, such as an internal business tool to automate one or several day-to-day business processes, it is possible to completely delegate the mobile development effort to an off-site engineering team. At the same time, this will allow you to significantly reduce the cost of development.

5. Decide on the development approach

Even if you already decided to target iOS as you primary platform, there is always a dilemma of native vs cross-platform mobile development. While platforms like Xamarin allow to speed up development through extensive code sharing, they often prove inefficient when building customer-facing applications with heavy custom or platform-specific UI. Being able to share only logic, you still need to build UI from scratch. So even if you build only an iOS application, it typically makes no sense to compromise performance and UX, as you won’t benefit significantly from cross-platform development.

Setup and Tech fundamentals

6. Follow Human Interface Guidelines

While UX and UI come before code, they do not end with the finalized app mockups. UI implementation and app performance are as important for the overall mobile experience as pixel-perfect designs. Being known for its strict requirements and policies, iOS has its own formal conventions for UI and UX. Therefore, prior to writing a single line of code, make sure every member of your team understands and follows the basic guidelines provided by Apple.

7. Objective-C vs Swift

Powerful yet simple, Swift programming language has caused controversy even among its most die-hard fans. First introduced by Apple in 2014, the language has recently received a major update, Swift 3. Offering a number of neat features, its adoption is increasing among engineers. Yet most of the iOS developer community agree that for a complex project, you should probably go with the tried and true Objective-C or at least mix it with Swift, taking the best out of each language. Actually, the research shows that only 11 percent of App Store’s Top 100 applications use at least some Swift, while the rest still relies primarily on Objective-C.

8. Use Xcode

A must have for an iOS developer, Xcode is an IDE provided by Apple. While there are several alternatives, such as AppCode by JetBrains, no other environment provides the native level of integration and tooling to build iOS applications.

9. Agree on iOS version support

As new versions of iOS are released every year, the older platforms become obsolete fast. Therefore, with the combined adoption rate of over 94 percent, the two latest versions, namely iOS 9 and iOS 10, are currently dominating the market. Backwards compatibility with the earlier versions is nice to have, but it makes more sense to focus on the current versions and make your app future-ready, not to be left behind when the new iOS is released.

iOs version breakdown

10. Support the main devices

Being less diverse than Android device selection, the iOS ecosystem is still quite rich. The choice of your target devices should depend on the purpose and specifics of the application. While consumer-facing apps are usually built for iPhones only, enterprise and business apps often target iPads. However, it is becoming a standard practice to build universal apps, which adjust to the size of the device screen.

iOs device ecosystem

Moreover, you can adapt your app to run on the Apple Watch or even Apple TV, if there is a good reason for that. For example, an Apple Watch application could be a valuable addition to the health monitoring tool. And a multimedia app would definitely benefit from allowing the users to access it from Apple TV.

11. Establish a coding style

If there is a large dedicated development team working on your application, make sure the coding style is consistent throughout the process. Establishing solid coding standards, or adopting the existing ones, such as GitHub Objective-C or Swift guides, Google Objective-C guide, helps create an application which is easy to maintain and update. Following a common programming approach, every member of the team or an outside developer can easily read the code and make the required edits

12. Adopt optimal architecture design

Proper architecture is a foundation for building an extendable and well-structured application. While there are several architecture design approaches, the one most commonly used in iOS development is the Model-View-Controller (MVC) pattern. Moreover, it is the one recommended by Apple. Simply put, the pattern breaks the code down into objects (see more at №13. Object-Oriented programming), assigning one of three main functions (view, model, controller) to each one of them. Thus, each app screen represents a view, a data model controls the content it contains, and the controller manages the interactions between the view and the model.

MVC architecture pattern

But most engineers agree that it is no silver bullet. For better results they combine the MVC pattern with other options, such as Model-View-ViewModel (MVVM).

Software engineering process and tools

13. Apply the best naming and project structure

One of the most important but often overlooked aspects of writing clear, high quality code is the naming principles. When giving names to classes, methods, functions, constants, and other code elements one should follow the Apple’s basic conventions, keeping the names clear and brief, avoiding abbreviations and ambiguity. In addition to that, the naming principles should be consistent across the whole project, not to mention using proper grammar and spelling. Another aspect of building a clear and maintainable code is keeping its source files in order. Thus, it might be a good idea to set some common folder structure, keeping it consistent across the project. Depending on the basic architecture approach, the structure can include the following folders: Models, Views, Controllers, Stores, Helpers.

14. Make use of libraries and frameworks

One of the benefits of iOS popularity is the significant number of libraries and frameworks. They can be used to solve a number of issues, from implementing custom UI animations to working with device hardware. Consequently, these third-party tools can significantly reduce the amount of effort and cost of building the same features from scratch.

15. Engage open source tooling

Although considered “closed,” due to its numerous restrictions, the iOS platform still has plenty of open source projects to make use of. With the release of Swift as an open source project, Apple has made a huge step away from its limitations, allowing independent developers to contribute to the language as well as create more useful and accessible tools. In fact, using accessible and free third-party tools is a good practice. Numerous resources list dozens of such libraries and whole apps with open code, so why reinvent the wheel.

16. Conduct peer reviews

Even with consistent coding style and common practices in place, there is no one way to build software. Every engineer relies on experience and knowledge when writing every single line of code. Thus, fostering code review and refactoring practices within your team has positive impact on the quality of code and the quality of software in general. For better results, IBM developerWorks resource offers some standard practices that can help you achieve the best results.

17. Adopt event-driven object-oriented programming

While iOS apps tend to have a strong focus on UI, event-driven programming is one of the key paradigms to follow. It presupposes that specific events, triggered by user actions or sensor outputs, determine the flow of the app. Thus, identifying and understanding the logic behind the interactions that will drive your app is the foundation for the code that will execute your app’s logic. Event-driven programming and the apps that were built using this approach have a number of benefits for a business, such as automated workflows, eased interactivity and flexibility.

Object-Oriented Programming (OOP) is another best practice in iOS app development. It represents a software development paradigm that uses objects as key structure units for building software. In other words, focusing on separate objects, you decompose complex software into smaller pieces, making it easier to develop and manage. Good understanding of the OOP principles and its key aspects allows you to maximize the code reuse in your application while minimizing the maintenance cost and effort.

18. Take time for preliminary research

Dealing with complex projects, especially in health care or fintech, developers often have to tackle some project-specific problems with out-of-the-box solutions. Granting enough time for research might result in significant savings in the long run. For example, our data science team has spent about 3 months building and polishing a machine learning algorithm for a sound recognition application. While the algorithm was the core of the whole application itself, such preliminary scientific research was crucial for the product success. Therefore, sometimes it is better to spend a week working on the proof of concept then to find out the product cannot be implemented as planned several months after the start of the project.

Deployment/Distribution

19. Mind code signing

In order to be able to launch an app, you need to have the certificates issued by Apple: iOS Development and iOS Distribution. While the first one is personal and is used to run an app on an actual device in the development, the second one is issued for a team and makes further distribution and App Store submission possible. So if you decide to build an iOS application you should consider getting the required certificate in advance.

20. Employ continuous integration and delivery

Continuous Integration (CI) is a standard practice in software engineering in general, not only iOS app development. Being an integral part of agile product development, CI can be implemented using a number of tools, including Jenkins CI, Greenhouse CI, CircleCI, or in-built Xcode Server CI tool. Being quite varied, the listed tools use different approaches to the process of CI and provide a number of custom features. Yet, all of them have a common purpose: They help you make builds, automate your tests, manage defect logs, build environment, and deploy your app fast and with minimum effort.

21. Choose the distribution model

As soon as your app is ready to be shipped, it’s important to decide upon the optimal distribution method for it. Apple currently offers 3 distribution models. The most widely used option is to upload the application directly to the App Store. This way it will become available for every iOS user. Additionally, you can set some parameters, such as target country, supported device, or iOS versions. If you want to beta-test your app before launching it globally, you can use the TestFlight service provided by Apple. It allows you to invite up to 100 users to test the application privately. For enterprise level apps or internal business tools, you can use the iOS Developer Enterprise Program or Volume Purchasing Program. Although a costly alternative to the previous two methods, this approach offers complete privacy, making your application available only for your employees and contractors.

Business

22. Focus on security

Particularly crucial for health care, fintech, or internal enterprise applications when dealing with important business data, security practices are a must-have for any serious application. Although Apple claims to have “designed the iOS platform with security at its core,” it is practically impossible to establish 100% protection from data theft or corruption, unless you don’t store any data at all. What you can do is follow the official Secure Coding Guide by Apple or employ some of the best practices, including custom encryption, the use of keychain and data protection with HTTPS and SSL certificates.

23. Don’t forget about reporting, analytics, engagement

However, the work does not end once your app is deployed and installed by the end user. Having implemented the reporting and analytics tools on top of you core app logic, you can see how your customers interact with the product. This provides valuable insights to help you further improve your application. Among the most popular analytics tools are Mixpanel, Yahoo’s Flurry, Firebase – Google Mobile Analytics, iTunes Connect App Analytics, and Localytics.

The most popular analytics tools for iOS apps

24. Monetize

While over 75 percent of app revenues were generated through paid downloads back in 2013, the share is projected to decrease to 37.8 percent by 2017. This is mostly due to the growing adoption of in-app purchases. And so building a free product with in-app purchases is a good practice to ensure high revenues. The best advice in this case would be to keep the in-app purchase options simple and offer enough value even within the basic version of your app. Yet not all types of apps can benefit from such a monetization model. For example, if your app complements your core product, you might want to provide it as a free addition for your paying customers or premium subscribers.

25. Make your app world ready

Unless you are planning to target a specific country with your app, you might consider laying the groundwork for easy further app localization. This includes the so-called app internationalization, the process of making it able to adapt to different languages, regions, and cultures, which usually takes place while your app is still in production. Preparing an app for localization requires first separating language and locale differences from the rest of your user interface and code. It is possible to export the user-facing text using Xcode, so it can be translated into any language and then imported as a separate file, without having to interfere with the rest of the app. Special attention should be paid to right-to-left languages as they require not only text translation but mirroring the whole UI and changing the text direction as well. The process is typically incremental and all changes should be thoroughly tested using pseudolocalizations.

26. Benefit from third-party integrations

As we have already mentioned, there are some valuable third-party tools you might want to integrate with your app. These are analytics tools, payment processors, data sources or hardware APIs that can help you improve your product or provide additional value for your users. However, it is important to choose only trusted and reliable tools that will not ruin the project you have been building for months. While a brand new tool by a promising startup might seem like a good option and come at a good price, in the long run it can turn out to be a waste of time when the startup goes broke or is acquired by a company that will shut it down.

27. Plan for upgrades

In software development, the product is never actually finished. While you might have implemented 99% of the planned features, the chances are, sooner or later, you will have to add more features, or, on the contrary, remove some of the existing ones. Earlier this month, Apple made an announcement about its intentions to “ensure that apps available on the App Store are functional and up-to-date.” The apps which are no longer updated on a regular basis will be removed from the market. While research shows that about 25 percent of the apps haven’t been updated for over a year, this is a great way to keep the market competitive and relevant to the users. However, this will lay additional obligations on the app developers.

Remember: Apple is generally right.

Despite having a number of restrictions and policies we mentioned earlier in the article, Apple is known for its solid approach to providing developer resources and tools. If you are thinking of investing in iOS app development, a great place to start your venture would be the Apple developer resources website. No matter how skilled your development team is, understanding the basics of the platform and development best practices proves to be invaluable for a product owner.

Even if you decide to go for cross-platform mobile development with Xamarin, you will need to dip your toes in the water of iOS development first in order to build an app that is relevant to the platform and successful.

iOS app development trends in 2020

So, what is new about iOS app development? Each year Apple’s fans wait for something that will surprise them even more. Let us embark on the pool of trends that are dominating in year 2020.

1. Siri and Artificial Intelligence

Artificial Intelligence flurries the beautiful minds of famous engineers. Do you remember the “Iron Man” movie? AI was Tony Stark’s best weapon, a computer that could do almost anything. If you are an Apple device user, you will get Siri as your personal assistant.

Recently Apple released SiriKit for iOS developers. Now iOS and WatchOS apps work with Siri using voice only. This integration has many benefits, like hands-free use and user access from the lock screen. So, now your apps (integrated with Siri) are ready for use in a new shortcut app section.

2. Security

The security issue remains vital since we have dealt with technology. Personal data can be stolen or lost. The hackers are getting more furious and advanced. Keeping this in mind Apple created App Transport Security for every newly published iOS app.

3. CoreML

A huge iOS app development trend is Core Machine Learning (CoreML). Apple launched this framework for building apps crosswise Apple devices. CoreML is able to build apps that are indeed quick to react. Actually, such apps are the fastest as compared to general iOS applications. Good integration with Siri, QuickType, and the iPhone camera added more “likes” to CoreML.

4. Experience the most ambitious app (AR/VR and 3D)

What’s new in ARKit 2? When it was deployed to millions of devices, it made iOS the biggest and the most advanced AR platform. This time one can experience several improvements, like enhancements for face tracking. ARKit also gives you environment texturing, saving and loading maps. You can also detect 3D objects in a scene.

5. IoT and HomeKit

BI Intelligence research predicts that there will be over 24 billion IoT devices by 2020. IoT is a big part of iOS app development especially after the launching of HomeKit. Obviously, it has to be included in the list of app trends. That’s why it is absolutely useful for iOS developers to make apps that connect to IoT devices. In other words, IoT devices share information with mobile devices. And guess who is at the head of all this? Siri, of course. A user will be able to create manipulations within the house staying away from it, just with the help of Siri.

6. Apple Pay. Do you need it?

Apple pay is almost ready to replace your wallet. This system has already spread around the world. Apple Pay is very easy and works with Apple devices you use every day. Any type of payment is available with this digital wallet.

The positive side of Apple pay is its security: a user doesn’t need to save his card details.

7. Swift 5

All iOS developers know that Apple’s Swift is simple. Its numerous advantages made Swift one of the top programming languages. Indeed Swift can be counted as one of the developing trends. This language is easy to learn, and Swift 5 will bring even more advantages and opportunities for iOS developers.

The growth of iOS application development during the last years

Each year on its performance Apple shares the statistic to show how profitable the year was for iOS developers. This year one can observe the picture of stable growth. While assembling a set of all Apple App Store Statistics, we can notice that the brand is going really far and becomes a very important part of the millions of iOS device users’ lives.

Let’s have a look at the several facts that point to the growth of iOS development:

  • The number of apps on the App Store is 2.1 million in 2018. In 2017 its total number was approximately 2 million.
  • Apple App Store revenue was computed at $22.6B while in 2017 it was at $17.8B.
  • The revenue that iOS app developers received in 2018 is 30% more than they received in 2017.
  • The total number of downloads shows a rise of 10.6% between 2017 and 2018.
  • The number of app downloads has increased by 75% since Apple Watch has been launched.

What should one consider before building an app and how much would it cost

Have you ever wondered how much would it cost to build an app especially if you are hiring an app developer? Well, the answer is – “it depends”. The price depends on design (basic, individual, custom), complexity, number of pages, features, infrastructure, nature of the industry, and functionality; what type of application would it be: business, games, education, lifestyle, social, entertainment, or other; the type of platform you pick: Android, iOS, WP; database, CRM integrations, and many other.

The more complex app will grab more money because it needs more time to outline and develop. While developing an app, you have to go through many stages. Some of them can reduce the cost for you, while others increase it.

To be short, the average price to build an app is $171,450 according to the Clutch survey.

Let’s find out what one should know before developing an iOS app:

1. Good iOS market research

The world of iOS apps is very different but the main thing remains: when you are trying to start a new business, you need a good market field. Any app idea should be checked carefully. The point is that your app must sell a unique offer.

Each app has strong and weak sides. While vetting them, you can get an improved product.

2. Success in mobile app quality

We have already mentioned the number of available iOS apps. In the future users will experience even a greater number of iOS apps on different devices. Apps with similar services perform the work differently. Don’t expect your audience to be patient with bad performance. This is a matter of quality. They can switch to a better performing app at any time.

3. Pick the right iOS development specialists

There is an enormous number of app development firms and app specialists. The best team is the one that will continue working on your app to the point when it could be sold better. It is about people who you need to choose as your team.

4. Make small steps towards the gain

Now let’s return to the money issue. Just imagine that your budget is limited. The best decision, in this case, is to launch your app for checking users’ reactions. In the case of a negative response, you can go back and start it all over again not spending extra money.

5. Design is important when developing iOS apps

Don’t ever neglect the design. This is a huge mistake, and many application owners used to commit it in the past. The design influences the first impression of any customer, and this in its turn impacts his/her attitude toward an app. If you don’t want to lose the audience, pay attention to the design. Every extra minute spent on perfecting the look of your app would never be unfruitful.

6. iOS code quality

This side of any application is the last thing that any user would like to see. However, the quality of the code influences such aspects as load speed, the size of an app, and the way an application works in general.

At this point, you should pay attention to such a thing as harmony between the quality of an app and its cost. This is the stage where parsimony is pointless.

7. Test your iOS app

Quality Analysis is a super significant step in any app development project. When your team is ready with the project, test it properly. Each element of your application has to be checked on a higher level. There must be no hole at this stage. Use any scenario that might happen while operating an app.

One of the best ways of how to identify the bugs that have sneaked into your app is to test it yourself or give it to friends or family.

8. set up the right price for your iOS app

Now it is time to price your app reasonably. The app must be affordable. Haven’t you noticed hundreds of free and at the same time popular applications? This is where revenue becomes less important than price. Fan-base is more significant than income. You can receive revenue using premium features or an advertisement.

9. Spread the word around your mobile app

People like to buy things that are good advertised. Any application is a product that will be sold better when people hear something buzzing. Such a platform as Facebook may serve as an excellent tool for advertisement. The main idea is to attract as many people as possible.

10. Keep developing your app and keep up with the modern iOS technologies

It is always good to have some ideas about adding new features to an app. Apple loves mobile app developers who add all the latest features the company introduces and often features them on the App Store.

Take care of your application and it will take care of you. Besides, a regular change of a design attracts the audience and makes it come back again and again.

Main Parts of VIPER

The main parts of VIPER are:

  • View: displays what it is told to by the Presenter and relays user input back to the Presenter.
  • Interactor: contains the business logic as specified by a use case.
  • Presenter: contains view logic for preparing content for display (as received from the Interactor) and for reacting to user inputs (by requesting new data from the Interactor).
  • Entity: contains basic model objects used by the Interactor.
  • Routing: contains navigation logic for describing which screens are shown in which order.

This separation also conforms to the Single Responsibility Principle. The Interactor is responsible to the business analyst, the Presenter represents the interaction designer, and the View is responsible to the visual designer.

Below is a diagram of the different components and how they are connected:

VIPER breaks down an app into different components based around use cases, including components that create the user interface and the logic that powers it.

While the components of VIPER can be implemented in an application in any order, we’ve chosen to introduce the components in the order that we recommend implementing them. You’ll notice that this order is roughly consistent with the process of building an entire application, which starts with discussing what the product needs to do, followed by how a user will interact with it.

Application Design Based on Use Cases

Apps are often implemented as a set of use cases. Use cases are also known as acceptance criteria, or behaviors, and describe what an app is meant to do. Maybe a list needs to be sortable by date, type, or name. That’s a use case. A use case is the layer of an application that is responsible for business logic. Use cases should be independent from the user interface implementation of them. They should also be small and well-defined. Deciding how to break down a complex app into smaller use cases is challenging and requires practice, but it’s a helpful way to limit the scope of each problem you are solving and each class that you are writing.

Building an app with VIPER involves implementing a set of components to fulfill each use case. Application logic is a major part of implementing a use case, but it’s not the only part. The use case also affects the user interface. Additionally, it’s important to consider how the use case fits together with other core components of an application, such as networking and data persistence. Components act like plugins to the use cases, and VIPER is a way of describing what the role of each of these components is and how they can interact with one another.

One of the use cases or requirements for our to-do list app was to group the to-dos in different ways based on a user’s selection. By separating the logic that organizes that data into a use case, we are able to keep the user interface code clean and easily wrap the use case in tests to make sure it continues to work the way we expect it to.

https://www.objc.io/issues/13-architecture/viper/#what-is-viper

What is VIPER?

Testing was not always a major part of building iOS apps. As we embarked on a quest to improve our testing practices at Mutual Mobile, we found that writing tests for iOS apps was difficult. We decided that if we were going to improve the way we test our software, we would first need to come up with a better way to architect our apps. We call that method VIPER.

VIPER is an application of Clean Architecture to iOS apps. The word VIPER is a backronym for View, Interactor, Presenter, Entity, and Routing. Clean Architecture divides an app’s logical structure into distinct layers of responsibility. This makes it easier to isolate dependencies (e.g. your database) and to test the interactions at the boundaries between layers:

Most iOS apps are architected using MVC (model–view–controller). Using MVC as an application architecture can guide you to thinking every class is either a model, a view, or a controller. Since much of the application logic does not belong in a model or view, it usually ends up in the controller. This leads to an issue known as a Massive View Controller, where the view controllers end up doing too much. Slimming down these massive view controllers is not the only challenge faced by iOS developers seeking to improve the quality of their code, but it is a great place to start.

VIPER’s distinct layers help deal with this challenge by providing clear locations for application logic and navigation-related code. With VIPER applied, you’ll notice that the view controllers in our to-do list example are lean, mean, view controlling machines. You’ll also find that the code in the view controllers and all of the other classes is easy to understand, easier to test, and as a result, also easier to maintain.

https://www.objc.io/issues/13-architecture/viper/#what-is-viper