How to Build a Mobile App

This article is part of a technical content series crafted by AWS Startup Solutions Architects to help guide early stage startups in setting the foundations needed to start building quickly and easily. The series offers a high-level overview of the technical decisions startup founders need to make when getting off the ground, along with which AWS services are best suited to address those decisions.


There are billions of smartphones and tablets in use by people every day. In fact, many people check their phones every other minute. It doesn’t matter if they are at work, at home, or on the move. 90% of this screen time is spent in apps.

If you have a great idea for a mobile app that people want to spend their time in, then you could have access to a huge market with the potential to impact the lives of millions of people around the world. What makes a great app? Great apps have an appealing user interface, an engaging user experience, and they are backed by tools and services to help you access a global audience fast and cost effectively. The fastest way to build a great mobile app is with the easy-to-use tools and comprehensive, scalable services on the AWS Cloud.

In this article, we walk through the tools and services AWS offers to help startups build apps that have a strong technical foundation. By the end, you will know the ingredients for a well-architected mobile app, the tools you can use to speed up the development process, and the services that help your app serve a global audience.

The ToDo List App

For our purposes, let’s look at a fictitious ToDo List app. We want our made-up app to let users create lists of tasks they want to get done. For instance, it may remind them to cancel a subscription, make an important call, or pay a bill. The app helps them stay organized and productive.

Among many other things, this app stores personal data. It requires users to sign up and sign in to securely store this data. Creating the necessary user management and getting the security right are big challenges for every startup. The AWS Cloud helps startups like yours solve this so you can focus on creating the engaging user experience that differentiates your app from other apps.

The made-up app has many more of these requirements. However, it is important to move fast and try out ideas. You will learn how to do so with the tools and services on the AWS Cloud.

Platform Setup

Our ToDo app needs a database in the cloud to store all of the users’ lists and ToDo items since users do not want to lose their lists and items when they lose their devices or get new ones. The app needs offline functionality in case users encounter rough networking conditions. It also needs push notifications so that users can be reminded of pending tasks, and, last but not least, it needs to be well tested.

While it’s easy to create the needed services on the AWS Cloud, they also need to be integrated in the app itself. We recommend you start to build the app with AWS Amplify, which helps you manage and integrate the individual services.

AWS Amplify is a development platform for building secure, scalable mobile and web applications. It is a powerful toolchain that helps create and manage all essential services for a mobile app. The services that you manage via AWS Amplify are set up in your AWS account. You have full control of these services, so as you grow, you can add customizations or add services that are not managed by AWS Amplify. There is no need to begin from scratch.

Mobile-App-1

Beyond the command line tool that comes with AWS Amplify, it provides libraries for iOS, Android, and JavaScript. These libraries enable you to set up and use essential services in any mobile app. Integrating these services can happen via the out-of-the-box UI components that come with the libraries, or they can be highly customized using just the underlying native frameworks.

For our app, we recommend using React Native and the built-in components to create a cross-platform mobile application. This means that it has a shared codebase and works on both iOS and Android. This cross-platform ability speeds up the process to get the app to market.

Now that there is a way to manage the services and integrate them into the app, let’s get back to the first service we need in the app: user management.

User Management

Modern mobile apps allow users to sign up and sign in. As mentioned earlier, our app needs user management because it stores the user’s personal data -- the many lists of ToDo items the user cares about. A user account helps control access to user data and provide a personalized user experience, which significantly increases the usage of a mobile app. And importantly, because of the personal data, the account-based approach is the way forward to monetize the app in the future.

We recommend using AWS Amplify to manage the app, which allows you to use the AWS Amplify Authentication library to provision Amazon Cognito and connect it to the app. The service lets the users of the app create a personal account, not only with their email address and a password, but also with their existing credentials from Facebook, Google, Amazon, and Apple. The user account can then be used to control the access to user data in other services. AWS Amplify includes ready to use UI components. They will add the needed UI elements like sign up and login forms to the app out-of-the-box.

how-to-build-a-mobile-app-2

Now that the app has user management, the users need to be able to store their lists of important ToDo items in a secure and reliable way.

API, Data Sync, and Offline

Modern apps are fueled by data. Whether the data is user-generated or provided by content creators, the success of an app depends on the management of that data. Our app generates a lot of data. Not only lists of things that need to be done, but also how fast they are done, the priority, and perhaps a prediction of when items on the list are finished. This data should be synced between different devices. This is essential because it will enable our customers to be as productive as possible, no matter which device they use or where they are. All this functionality increases engagement with the app, which yields more opportunities to make it successful.

Again, because we’re leveraging AWS Amplify, we can use the AWS Amplify API and AWS Amplify DataStore libraries to create an API to store and access the data on the AWS Cloud and to model and synchronize the data. It doesn’t only help store the data; it also enables the data to be synced between different devices of the user.

AWS Amplify DataStore leverages AWS AppSync. AppSync is a service that creates flexible and secure APIs that integrate into other AWS services. Amplify DataStore adds to AppSync a programming model for leveraging shared and distributed data on the user device. For our app, it adds the capability to describe different data models like a ToDo item, a list of ToDo items, or a project of multiple lists of items. There is no need to write code for modelling the data on the device or in the API; the code is generated, which speeds up the development of the app.

mobile-app-3

The user data itself is stored in Amazon DynamoDB, a fast and flexible NoSQL database service for any scale. Amplify DataStore adds to it the capability of doing a delta sync of data. It only syncs what has changed between the device and the database. This is useful, because mobile app users are sometimes in rough networking conditions, or even without any network in a remote location. They need to be still able to add items to their to do lists or mark them as complete while they have no connection. Later these changes get populated to all their devices.

Now our ToDo List app can sync the data between devices and securely store it in a scalable database, and the users can create new items in any network condition.

Push Notifications

An engaging user experience contributes to an app’s success. To consistently engage with your customers, you have to provide new and existing content for them. For our app, we could send a push notification when a new weekly report has been generated. Sending these push notifications to users is a challenge, because the mobile device ecosystem is dispersed between iOS and Android. They both use different services to send out these notifications.

Again, because we’re leveraging AWS Amplify, we can use the AWS Amplify API and AWS Amplify DataStore libraries to create an API to store and access the data on the AWS Cloud and to model and synchronize the data. It doesn’t only help store the data; it also enables the data to be synced between different devices of the user.

AWS Amplify DataStore leverages AWS AppSync. AppSync is a service that creates flexible and secure APIs that integrate into other AWS services. Amplify DataStore adds to AppSync a programming model for leveraging shared and distributed data on the user device. For our app, it adds the capability to describe different data models like a ToDo item, a list of ToDo items, or a project of multiple lists of items. There is no need to write code for modelling the data on the device or in the API; the code is generated, which speeds up the development of the app.

how-to-build-a-mobile-app-4

AWS Amplify allows you to set up push notifications for both iOS and Android on the same project. To leverage this capability, we add the AWS Amplify Push Notifications library to the ToDo List app.

The library uses Amazon Pinpoint to send personalized, timely, and relevant communication to all platforms. For our app, it sends out notifications of reports that are created and ready to be accessed by the user. Every one of these types of interactions with your customers makes the app more engaging.

mobile-app-4

Testing

Though our ToDo app is almost finished, shipping a mobile app is not a fast process. Publishing an app on either the Google Play Store or the Apple App Store can take a long time. Your app needs to get reviewed before it reaches your customers, and bugs cannot always be fixed immediately. Also, there are thousands of different devices, each with a different screen size, operating system, operating system version, and hardware capabilities.

AWS Device Farm is a service that helps ship a high-quality app. Apps can be tested across an extensive range of real mobile devices that don’t need to be maintained or provisioned. It’s a managed testing infrastructure that helps you build the best apps. We recommend you use the service to continuously test a mobile app, and to reproduce issues on devices in real-time and view videos, screenshots, and access logs.

The service can also be used to gather performance data on different devices, because it has a significant impact on the user experience and therefore your app performance.

Our beautiful new ToDo List app is ready to be shipped now. So should your app, if you followed the recommendations in this article.

Conclusion

Security and user management, modelling and syncing data, sending push notifications to devices, analyzing user behavior, and testing are building blocks for a strong technical foundation that great apps have. AWS Amplify makes it easy to set up the needed services on the AWS Cloud and integrate them into your app, which lets you bypass many of the technical challenges you face when starting your business. The services the app leverages are built to be secure and scalable, and you stay in full control of them. You can move fast and inherit the best practices from AWS Amplify, and you can also customize the services as your business grows.

Have fun, and build on!