DEV Community

Charlie Cheever for Expo

Posted on

COVID-19 Apps and APIs and Expo

TL;DR

  • Millions of people are using Expo apps for COVID-19 tracking
  • If you're building an app to fight COVID-19, we'll give you all our paid services and support for free and help you as much as we can. E-mail covid19@expo.io to get in touch
  • Expo plans to support the new contact tracing APIs that Apple and Google just announced

Tracking the Virus

The coronavirus pandemic is at the top of everyone's mind right now. COVID-19 is killing thousands of people every day and devastating the lives of millions more. The lockdowns that have been put in place around the world are slowing the spread of the virus but costing jobs and disrupting lives. It's hard to think about much else right now.

A few weeks ago, we started seeing some developers use Expo to build apps to track the spread of the virus. This kind of tracking using mobile phones is what's working to allow places like South Korea, Singapore, and Taiwan to keep COVID-19 at bay without complete lockdowns.

Alt Text

The HowWeFeel app is a great example of this in the US. It asks you a bunch of basic questions up-front about your age, exposure to other people, etc. and then you check in each day, self-reporting how you are feeling. It's a really slick app - easy to use and well-built; and using Expo for its web and iOS and Android apps. I check in with it every day.

On an individual level, self-reported symptoms can help determine who should be tested for the virus. And on an aggregate level, the data from apps like these can help epidemiologists and public health officials identify where there might be outbreaks or pockets of the disease before testing is even available. People have been using techniques like this for over a while - notably Google Flu Trends used people's Google searches to predict flu outbreaks, with some success.
We (the Expo team) want to help. We're proud that some of the best and most popular tracking apps are being built with Expo and are already being used by millions of people and growing. And so we're offering all our paid services and support for free to anyone working on an Expo project to combat COVID-19. E-mail covid19@expo.io if you're interested in this.

Tracing the Virus

The next step after tracking is tracing. With something as serious as COVID-19, every infection matters and can be life threatening. And since this virus is so contagious, one case in a community can lead to widespread infection quickly. But it's not always easy to identify everyone who might be sick when the disease is asymptomatic in some people and symptoms often take a few days to appear when they are present. The idea of tracing is that when a person tests positive for COVID-19, it's important to track down every person they might have given it to or gotten it from - which means everyone they've been in contact with for 14 days before their test. If tracking and tracing have widespread adoption in a community in conjunction with testing, a society can control the virus by asking just those who might have been exposed to an infected person to quarantine - allowing life for most people go back to something closer to normal.

What's hard about contact tracing is that it's hard to remember everyone you've come in contact with.If you're living a normal life, that might be a whole lot of people over 14 days, and many of those you might not know or know how to identify or contact again (grocery store clerk, person next to you in yoga class, etc.) But our phones can actually do a much better job of this - computing devices are great at remembering things. And the sensors on the phones like Bluetooth radios can be used to detect other mobile devices in close proximity.

OS Level Tracing APIs from Apple and Google

Those sensors are normally locked down on phones to protect your privacy, but Google and Apple just announced that they'll be releasing APIs designed to enable this kind of tracing while protecting each individual's privacy.
The planned API basically has your phone generate - and periodically rotate - a unique identifier for you and your phone. Using your phone's Bluetooth radio, your phone will send out blasts throughout the day, broadcasting your identifier. Everyone else who has opted into this will have their phone listening for these broadcasts, so everyone in BLE range of you (about two rooms indoors or about 100 yards outside) will pick up your identifier and be able to record it.

When someone tests positive for COVID-19, they can report this and upload their identifier to a central database of positive cases. The infected person loses some privacy here but it's under their control and opt-in. Your phone can now periodically download the database of known infected people and can cross-check that with the list of identifiers that your phone has seen. If you've opted into one of these apps and have crossed paths with someone who later tests positive, your phone will let you know. This way, you can get tested or self-quarantine for a while or at least be extra careful.

Operating system level for APIs like these is the only realistic way that something like this could work. Under normal circumstances, apps are too sandboxed to be able to do this and the BLE stacks on iOS and Android are different enough that it would be a great challenge to get this to work effectively across platforms. It's also powerful that everyone building software around this will be using the same APIs so the apps will be able to interoperate. James and I actually worked on a project trying to do this a few years ago, and so I'm confident that it is both possible that the detection using BLE can work but also confident that apps won't be able to do it well without these APIs.
There are some real concerns about privacy, prank positives, DOS attacks on the system, and download sizes of COVID-19 positive identifier data, but I'm optimistic that those issues can be mitigated or solved. It seems like Google and Apple are only going to approve official government or public health organizations to use these APIs, and that should reduce the surface area for potential abuse.

Expo and These APIs

Eventually, Google and Apple plan to bake in support for this into their operating systems that use these APIs, but until then, they'll be relying on developers to make the tracing apps that use these APIs.
We want Expo developers to be able to build these tracing apps and so we're planning to build support for them into Expo.

Our plan is that we'll release an Expo module providing a consistent JavaScript API that you can use across both platforms. We'll try to release these as soon as the APIs are publicly available. You'll be able to use this module in any Expo app using the bare workflow. We'll try to include this module in the Expo Client app in the App Store and Play Store but we don't expect to be able to do that because it looks like Google and Apple plan to restrict use of these APIs to only official government public health apps. As we learn more, we'll adjust our plans to do whatever we can to help developers of these apps as much as we can.
Any app using these APIs will need to get popular to be be effective, and we know that's hard but we hope that by enabling rapid development that works across iOS and Android, we give Expo developers the best shot at making this work.

Top comments (0)