Building a serverless application with react native and AWS Amplify
Tags: 2020devgrad, octograd2020, reactnative, awsamplify
Published: 2020-05-21 08:28:46

---
title: Building a serverless application with react native and AWS Amplify
published: true
description: Read more about the issues I've faced developing a serverless application with react native and AWS Amplify
tags: 2020devgrad, octograd2020, react-native, aws-amplify
---

About one year ago, I decided that I would like to try something new, something different, and the idea was to launch an application that could be built fast, cheap, and eventually to scale. In this article, I'm going to tell you more about the problems I've faced back then and some personal thoughts.

Let me introduce you to the project. It is basically a mobile app that helps you store all your loyalty cards in one place, so they don’t take up space in your wallet. You can download the app from [google play](https://play.google.com/store/apps/details?id=com.grivero).

## AWS Amplify

According [AWS](https://aws.amazon.com/amplify/framework/) documentation, The Amplify Framework provides a set of libraries and UI components and a command-line interface to build mobile backends and integrate with your iOS, Android, Web, and React Native apps. The Amplify CLI allows you to configure all the services needed to power your backend through a simple command-line interface. The Amplify library makes it easy to integrate your code with your backend using declarative interfaces and simple UI components.


AWS Amplify is different from other similar services by the fact that they support GraphQL API, and man, it is so cool (if you are not familiar with it, you can read more about how GraphQL works right [here](https://graphql.org/learn/) ). Even though I was a beginner with AWS Amplify, I've managed to learn it pretty fast and accomplished great results in a short period of time.

Let me tell you the problems I've faced using Amplify:
- One of the advantages of GraphQL is a great caching mechanism, however, back then I didn't manage to implement it with Amplify, they just didn't support it and this was a huge disadvantage for me, and because amplify was offering a pre-built service for managing the GraphQL API, was not that simple to replace it with a custom solution like Apollo and get the same advantages.
- If you want to authenticate only with email and password, then everything works just fine, but, if you'll try to add a custom authentication solution (Google or Facebook) you may face impediments because there was a lack of documentation about this subject and it is more about trying and learning. 

I would say that the experience I had with AWS Amplify was just great and I would like to try it again and see if things changed because I know that they improved a lot their system.

## Was React Native the right choice?

I will answer "YES!" and here is why:
- It helped me build a ready-to-production app in approximatively one month
- The application is cross-platform, so, I can release both the android and the iOS version of the application at any time
- You don't have to write everything from scratch, instead, you can use stable npm packages.

I didn't face major impediments with react native and I think that’s great for such applications.

## Conclusion

I hope that my experience will give you an idea about what issues you might face if you choose to develop a serverless mobile application and keep in mind that some of the issues I've faced could be a result of a beginner approach.