That Native App Is Probably Just an Old Web Browser
Chrome didn’t just take over the web it took over native apps, too. Many of the applications you run on Windows, Mac, and even Linux consist of outdated pieces of Chromium, the engine that forms the basis for Google Chrome.
Which Apps Are Built From Chromium?
There are several ways for a developer to construct an application using the Chromium browser engine. Electron is the most well-known, but many other applications use something called CEF, the Chromium Embedded Framework.
Chatting online? Slack is a popular application built with Electron. Taking notes? Evernote uses CEF, and Trello uses Electron. Playing music? Yep, you guessed it Spotify uses CEF, and so does Amazon Music.
You might think Microsoft would shy away from Chromium because, after all, it created Windows. You’d be wrong. GitHub Desktop, Microsoft Teams, Skype, Visual Studio Code, and Yammer are all Electron apps. Even the new Xbox app for Windows 10 is built with Electron, rather than Microsoft’s own UWP (Universal Windows Platform.)
PC games mostly stick with native apps, but their launchers and associated chat tools certainly don’t. Discord and Twitch.tv use Electron. Battle.net, Desura, Epic Games Launcher, GOG Galaxy, Uplay, and even Steam all use CEF. EA’s Origin client uses Qt WebEngine, which also integrates Chromium code.
You can get an idea of how many applications use Chromium by skimming through the very incomplete lists of Electron and CEF apps on Wikipedia. Backup apps, like CrashPlan, are included there, as well as password managers, like Bitwarden, and utilities, like Adobe Creative Cloud.
It’s Like a Web App (But Uses More RAM and Storage)
Each Electron or CEF-based application bundles a separate copy of parts of Chromium. While applications that use Electron and CEF are similar to web apps in your web browser, they’re less efficient and use more memory on your system.
When you open Gmail in one Chrome tab and Facebook in another, your operating system only needs to run one copy of Chrome. But when you run two different Electron or CEF applications, your operating system needs a separate copy of Electron or CEF for each.
It’s not uncommon to see an Electron-based application, in particular, consume a surprising amount of RAM. Again, because each of these applications includes separate Chromium files, they use additional space on your system.
Why Are They Outdated and Is That a Problem?
Electron’s security documentation explains why it bases its code on outdated versions of Chromium:
“While Electron strives to support new versions of Chromium as soon as possible, developers should be aware that upgrading is a serious undertaking involving hand-editing dozens or even hundreds of files. Given the resources and contributions available today, Electron will often not be on the very latest version of Chromium, lagging behind by several weeks or a few months.”
Even after the Electron project creates that new version, developers building Electron applications must take that code, integrate it into their Electron applications, and send out an update.
This isn’t as scary as it sounds, however. Electron’s documentation advises developers to avoid displaying untrusted code and depend primarily on local resources or trusted, secure remote content. That’s why many Electron applications don’t appear to be web browsers. For example, Slack uses web technologies to provide a chat interface, but you go to your web browser as soon as you click a link.
Why Do Developers Use Chromium?
Developers like these solutions because they use web technologies, with which most of them are already familiar. As Electron proudly touts on its homepage, “If you can build a website, you can build a desktop app.”
They’re more powerful than simple web apps, however. Electron applications can access your file system and other local system resources. Many CEF apps are native applications that embed a Chromium browser. For example, Steam embeds a browser to display the store and community interfaces.
Electron apps are also cross-platform, like Chromium. You can run an application like Slack on Windows, Mac, and Linux, as well as the web. A developer couldn’t make a cross-platform app if she depended on Microsoft Edge or Apple Safari technologies. Developers want to create an application once and run it everywhere. This saves a lot of time and resources versus making a native application for every platform.
These Chromium-based solutions offer an improvement over what came before in many ways. Prior to adopting CEF, Steam embedded Internet Explorer. Many applications on Windows also simply embedded an Internet Explorer interface we’re much better off with Chromium.
PWAs Could Offer a Way Out
Electron, CEF, and similar technologies have a lot of upsides, but they also have some downsides. Progressive Web Apps (PWAs) could one day offer a way out because they provide modern web apps with a way to work offline. Unlike Electron and CEF, however, PWAs use your standard web browser in the background. You can also install them via your web browser no need to manually update and bundle Chromium code.
As Microsoft moves to a Chromium-based version of its Edge browser, it’ll be interesting to see whether PWAs successfully start to compete with Electron. It would definitely be a cleaner solution with lower memory usage.