Getting savvy with Ionic Appflow: Testing it with the pwned? app

pwned? app Aug 2, 2019

I've written before about how time is a commodity. Spending time waiting for machine learning models to converge, or manage native builds, or manage NPM packages (and pesky version control and local dependencies) takes time away from more important tasks. Time that simply no one has.

In my day job, we're developing a wide variety of digital interventions delivered via mobile and our current processes are not scalable - the number of apps we have, use cases and users - that is why I need to change. I have been a huge fan of Ionic. It has been central to the success of InDEx - our app to manage alcohol misuse in veterans - with rapid iterative development possible by using Ionic.

Ionic Appflow

Example Ionic Appflow interface. Credit: Ionic.

When Ionic released Appflow I waited, I wanted to make sure it was stable before adopting it into our processes. But what is Appflow? Put simply, Appflow is a DevOps solution for anyone building apps with Ionic. What's great is that it's designed to increase agility, app quality, and time-to-deployment by automating key phases of the development life-cycle. This means less time managing local native environments and builds! Appflow has many features, but the ones of great use to me are:

  • Native builds in the Cloud: Push the app source-code to Appflow and it will build the native binaries (iOS or Android) in a clean, consistent cloud-based environment. Helpful as it means I no longer need to worry about local dependencies!
  • Real-time updates: A great feature of Appflow is the ability to deploy updates without the need to build new binaries. You can send up to 10,000 monthly live updates. However, there is a caveat: any new dependencies or plugins will require a binary build. But that should happen very rarely once an app is established.

Have I Been Pwned - pwned? app

Before rolling Appflow into our build processes, I wanted to test it out, get familiar with the functionality and identify the quirks. I decided to turn to an old project, pwned?, an Android app I created, to test out some new features in Ionic. Its been unloved for some time, and I wanted to change that. I failed to keep up to date with Troy's API changes, and users noticed; rightly so.

User comments about the pwned? app.

Appflow will allow me to be more proactive in deploying updates on-the-fly, without the need to interact with Google Play Store Development Console or iOS Developer. And importantly, no need to keep local dependencies up-to-date across all the different projects.  

What is pwned?

pwned? app Google Android App store listing.

It's an app that interfaces with Troy Hunt's Have I Been Pwned? (HIBP) service to check if a user's email address has appeared in a data breach, or if a password has been compromised. To handle the new API changes that Troy is rolling out (listen to his explanation here - really interesting insights) I had to stand-up a new API endpoint. This is where Cloudflare Workers came in handy - it's free for up to 100,000 executions per month. An example of which is below:

This should handle all the outstanding issues of the complaints users have had with pwned? (hopefully).

Adding Appflow to pwned? app

There isn't much to say about adding Appflow Deploy, it's super easy. All you need to do is install the Appflow SDK, using the command below.

ionic deploy add  \
    --app-id="YOUR_APP_ID" \
    --channel-name="YOUR_CHANNEL_NAME" \
    --update-method="background|auto|none" \
Example Ionic Appflow Deploy Code.

After which you can deploy updates via the Ionic dashboard within a couple of minutes. Easy. I was able to add functionality, push a native build and live deploy all within the hour. Well worth the price.

I'll be posting more about my experiences of using Appflow - what works, what doesn't work, and how it helps us. Keep an eye out.