Publish React Native Applications Over The Air with Electrode RN OTA, an Open Source Release from @WalmartLabs
At @WalmartLabs we’ve spent the past year transforming our application stack from Backbone/Java to React/Node.js, an effort that culminated last week in the open source release of our new platform, Electrode. We’ve received a lot of great feedback from the open source community, which will help us determine the next steps for expanding and improving Electrode.
One direction we’re particularly excited about, is expanding Electrode into the mobile app space. We’ve been experimenting with and investing in React Native, and we’ve had parts of the Walmart App running React Native in production.
React Native has several benefits, including code sharing across multiple platforms, ease of learning, and an up-and-coming ecosystem, but one of its most attractive features from our perspective is the ability to update apps over the air without going through the App Store approval process. It turns out, though, that there are multiple implementations of OTA Updates, falling into a few different camps. Some implementations are proprietary, while others open source some pieces of the platform.
Because we prefer open source solutions whenever possible, we really liked Microsoft’s Code Push Client SDK. However, there is a requirement of using Azure to manage app bundles. We think Azure is great, but we wanted an application with all the power of Code Push with the ability to use it on any cloud vendor, including our own internal cloud. So we built one.
Today we’re happy to announce Electrode Over The Air (Electrode OTA hence forth), an independent application that will manage your bundles, and is compatible with the Microsoft Code Push Client. Now you can use a 100% open source solution for enabling your React Native OTA updates, with Code Push on the client side and Electrode RN OTA on the back end.
With Electrode OTA Server, you can host, manage, and monitor your JavaScript bundles on your own server, so you’re in control of access and security. With a small adjustment to your Code Push Client application, pointing it to your own server instead of Microsoft’s, you can seamlessly deploy React Native bundles to client apps running on iOS and Android.
It takes a strong CI system to smoothly manage cross-platform apps. Because Electrode OTA Server is open source, you’re free to modify and adjust its behavior to suit the needs of your application, and its pluggable architecture (based on our own Electrode Server infrastructure) means the community can extend its capabilities into areas we haven’t thought of yet.
Deploying and updating your app is only half the battle, so we also built in the ability to query the Cassandra backend for advanced heuristics to give your data team plenty to analyze. You’ll get insight into questions like when to update, how effective your last update was, and more.
We didn’t stop there. We also developed Electrode OTA Desktop, a cross-platform Electron-based application (that’s right, Electrode on Electron) to ease the management of multiple deployment environments.
Electrode OTA gives you complete control of rollout plans, and rollback in case of a misadventure in configuration management — because any rollout without a rollback plan is just tempting the deployment gods.
All of this is just the first step in our plans for the React Native ecosystem. We appreciate all the work the community has put into Code Push, and hope this contribution helps express our commitment to giving back.
“When companies embrace open source, everyone wins; the community gets a collection of production-ready tools that have already been tested and hardened, and the community of developers on GitHub can further refine and grow the tools,” said Brandon Keepers, Head of Open Source at GitHub. “By publishing Electrode OTA on GitHub, @WalmartLabs is helping further innovation for the React Native platform and increasing standardization of the technology in its stack.”
And we agree!
Check out Electrode React Native Over The Air here:
https://github.com/electrode-io/electrode-ota-server