Customers

Blackline

Blackline logo

Before Expo, our app was purely native (one code base for Android and another for iOS), and we had a few key items we wanted to address in our rewrite of the app:

  1. Reduce the disparity between mobile dev skills and the rest of our engineering skillset.
  2. Make hiring new engineers easier and faster.
  3. Move from a somewhat manual CI/CD to an almost completely hands-off approach.
  4. Heighten our team's overall developer productivity.

Moving to JavaScript-based development

By shifting to React Native and almost entirely JavaScript, mobile development is now better aligned with our organization’s engineering skillset. This also improved our recruitment because we can consider strong front-end engineers with experience in just React and JavaScript.

Shifting over to JavaScript also helped us scale by empowering other teams within BlackLine to build and extend the mobile app into their own domains. Additionally, we share libraries and code between mobile and web, which greatly reduces our surface area. I can't overstate the benefits of being able to apply our JS / web-based skills, standards, and tooling to mobile development.

Expo and CI/CD

Expo also dramatically improved our CI/CD processes. We take full advantage of Expo CLI (and are now using EAS Build) to fully automate our app deployments through CI. Additionally, by leveraging Expo Application Services, we don’t need to pay for or manage any internal app build infrastructure. It's all there for us whenever we need it.

Finally, by using Expo's developer tools (like Expo Go), we’ve seen some great developer productivity gains. We iterate on features more quickly, and that’s really allowed our team to focus more on satisfying our customers. We can better manage security and quality by leveraging various Expo APIs and developer tools, which allows us to accomplish internal testing more easily. We have less tech debt, and upgrading is as easy as running one single command. Plus, the Expo Go app allows us to easily provide the application to non-engineers on the team for testing and troubleshooting

Developing "natively" through Expo's SDK

Besides Expo's services and tools, we also heavily rely on the SDK for adding cross platform native functionality to our app, just via JavaScript. Some of our favorite pieces of the SDK include:

  • expo-secure-store has allowed us to manage local app data in a secure manner.
  • expo-file-system, expo-sharing, and expo-intent-launcher have provided a great framework for in-app document management.
  • expo-updates allows us to manage updating our app over the air very nicely, without users ever having to take any steps to update. For BlackLine, security and controls are paramount to protecting our customers data, and leveraging Expo to automate controls around our release process with Over the Air updates and release channels is a huge win that goes beyond dev productivity and CI/CD tooling.
  • There are quite a few others that I won’t name specifically, but that generally abstract lower-level APIs and give us those developer productivity gains.

Overall, Expo's tools and APIs have allowed us to focus more on building features for our customers rather than managing infrastructure and building our own platform level components and APIs.

Greg Burns, Principal Software Engineer