Introducing the Esper Device Provisioner Tool V4

Author

Kiran Anto

This post is written by Kiran Anto

Provisioner Tool v4 is here 🎉

A key mission for Esper is to help companies creating custom-built Android devices for specialized use cases. These devices can’t use the Android Enterprise infrastructure provided by Google for enrollment into device management systems such as Esper. So we created the Device Provisioner, making enrollment and provisioning of AOSP devices easy. Find out more about the Esper Device Provisioner here.

Initially, we planned for refactoring the codebase to move to Typescript, and to upgrade from Electron V6 to Electron V11 to be up to date with the latest web standards. Well, we got a bit carried away and did a bit more than that.

So what’s new? ✨

  • ♻️ Total code rewrite in Typescript
  • ⚛️ Upgrade to Electron V11 🎉 & React v17
  • 🌑 Dark mode support
  • ⚡ App size is significantly reduced and startup time is decreased
    • 185 MB → 86 MB on MacOS 🍎
    • 106 MB → 64MB on Windows 💻
  • 🐧 Linux Support
  • 🎨 Improved aesthetics & Error Handling

♻️ Code rewrite in Typescript

Our initial version was written more as a proof of concept, a tool that can improve the provisioning experience, instead of using complex ADB commands and Python scripts to get a device provisioned to Esper. We were thinking, ‘What if we could provide a User interface to it, so it’s easier for users to just provision in a few clicks?’

Once we knew the advantages the tool brings to our customers, namely how it makes their provisioning experience simpler, we thought of making it a more robust, cleaner, and maintainable codebase and not just something that was put together as a PoC.

That was when the whole rewrite in Typescript began. With this rewrite, it’s much more robust 💪 and more tolerant to errors.

⚛️ Upgrade to Electron V11 🎉 & React v17

What does it mean? Well, it means improved security, performance improvements, and a well-maintained codebase. Yes, these allow us to adhere to modern Javascript and Web experiences and still keep the codebase up to date with the latest standards.

🌑 Dark Mode Support

With the release of dark mode support in all major operating systems (macOS Mojave, Windows 10, and Linux) we were inspired to create a dark mode for the Device Provisioner to match with the system theming. Since this is a feature that would be welcomed by all the users, irrespective of their choice of system theming, we have included a toggle on/off option, where you can bypass having to go to system preferences.

⚡ App size is significantly reduced and startup time is decreased

Yes you’ve heard it right, we were excited for the release of new codebase and dark mode, but along with that we wanted our users to download less data, and the Esper app to take up less disk space on your machine.

We’ve managed to reduce the app size from 185 Mb to a whopping 86 MB size. For Windows builds it’s around 64MB. We’ve also improved the startup time.

Yes that’s a ~54% size reduction. 🎉

If you’re building your Electron apps, you might be interested in how we did this:

  1. Ship only what is necessary with each build: Since you have separate builds for different operating systems, you can actually ship specific assets, based on the operating system and architectures.
  2. Unnecessary polyfills: One of Electron’s great benefits is that you know exactly which engine will parse your JavaScript, HTML, and CSS. If you’re re-purposing code that was written for the web at large, make sure to not polyfill features included in Electron, So we can safely ship the modern Javascript without worrying about older browsers.
  3. Enable compression: Compression can save lots of data for the first time download.
  4. Avoid fetching rarely changing resources from the internet if they could easily be bundled with your application.
  5. Measure, measure, and measure

For more elaborate methods to improve performance, you can refer to —> https://www.electronjs.org/docs/tutorial/performance

🐧 Added Linux support

We’ve enabled support for the Device Provisioner on the major linux builds.

  1. .deb file (Ubuntu & other debian based distros)
  2. .AppImage file (App image installer, for Linux Generic)
  3. .snap (Snap installer for Linux Generic)
  4. .pacman (For arch linux users)

🎨 Improved aesthetics

We’ve improved a lot of small things under the hood, and some are noticeable. All these changes together make the Esper Device Provisioner much cleaner and aesthetically pleasing to use.

  1. Improved welcome page

Welcome page, with instructions on how to provision a device.

2. Cleaner Template selection

Selecting a template, to provision the device. The template must first be created through the Esper Console.

3. App selection page

One advantage the Device Provisioner provides over other provisioning methods is it loads applications installed via the Esper Cloud locally on your PC. We’ve added a progress bar to show you the status of the applications being downloaded to your PC taking the mystery out of waiting for this to complete.

Thank you

We hope you enjoy the new update to the provisioner tool. You can download the new build from https://docs.esper.io/home/provisioner.html.

Please reach out to share your thoughts on how Esper can improve your customer experience in the future by contacting support@esper.io.

0