Requirements for the 64-bit version of our Android app led to a difficult bug. Therefore, we will only release a hot fix for iOS with v0.13.2, and our next Android release will be v1.
Summer’s coming to a close and so is the core team’s push for an audit-ready v1 build with multi-account support.
On September 30th, we’ll pass our develop build over to the good folks at Trail of Bits to review.
There are three components of the app that are especially critical to have ship shape at this point:
- The underlying chat protocol
- How we handle keys
- The way in which the final app binaries get created
As often happens in software development, we ran into an unwelcome bug in one of these areas—and it ultimately cost us several unplanned weeks of development time. In the words of Ricardo/@3esmit, “It’s not a bug, it’s a curse.”
Here’s what happened.
On August 1st, 2019, Google began enforcing a new requirement for apps featured in its Play Store. Any app running native code must now offer a 64-bit version in addition to the standard 32-bits. This is intended to deliver faster, better experiences on 64-bit capable devices. Past August 1st, apps without a 64-bit version will not be displayed in the store.
We began preparing for this change in May. In July, we had a 64-bit Android package in testing, but it was riddled with random freezes.
Detective work led us to the discovery that the version of React Native required to support 64-bits was incompatible with the database we use to store application state, Realm.js.
(To fix the bug, React Native’s new Hermes JavaScript engine is required; Realm.js includes its own version of JavaScriptCore, hence conflict.)
In order to support 64-bit versions, we needed to drop Realm.js. This was quite harmonious with our goals for v1; moving storage from Realm to status-go was a planned performance optimization.
How is this relevant for our community?
The current version of our Android app is unaffected, and you can continue using it.
Unfortunately, it means we can no longer release new Android beta versions. Because we are unable to publish a new APK that uses Realm, we also can’t push updates that are compatible with previous beta versions.
We’ll remain focused on preparing our upgraded APK for the September 30th code freeze date. When v1 rolls around, we’ll be proud to deliver a much more performant version of the app than ever before.
In the meantime, we’ll release a hot fix for iOS that will offer several in-app notifications and cues on how to prepare for v1. Changes to our database and account structures do represent a breaking change for our users.
For our Android users and wider community, you’ll be able to find all the necessary information about the breaking changes here on the blog, and on our social channels, in the coming weeks.
If you have any questions or would like to know more, join the conversation in Discuss.