If you want to create a desktop app in a small amount of time using your web developing knowledge, then probably Electron is your first choice. In recent years, many companies tend to release their desktop app using Electron like Twitch, Discord, Skype, VS Code, … because it is a very fast (but not so efficient) way of developing a desktop app in the beginning and they don’t need new developers to create these apps.

There are many developers against Electron because of it’s performance, bundle size, etc. The disadvantages of Electron is discussed in many places like hackernews and medium. Some tried to provide solutions to these disadvantages e.g. electrino tried to give electron apps a diet to reduce their size. But most of the provided solutions are not bug free and not suitable for production.

Google recently decided that it needs to get inside the competition of hybrid desktop apps as well (Probably trying to help it’s Chrome OS to gain more market share in future) and released Carlo. They define Carlo as :

Carlo provides Node applications with Google Chrome rendering capabilities. Carlo communicates with the locally-installed browser instance using the Puppeteer project. Carlo also provides remote call infrastructure for communication between Node and the browser.

So what is the difference between Carlo and Electron ? Their github also mentions :

One of the motivations is to demonstrate how browser installed locally can be used with Node out of the box. Unlike with Electron, Node v8 and Chrome v8 engines are decoupled in Carlo, providing a maintainable model with the ability of the independent updates of the underlying components.

So while Electron bundles it’s own version of Chromium, Carlo tries to use users local Chrome and this can reduce the bundle size greatly. As it also uses the locally installed Chrome, so all the apps can benefit from regular updates for their browser part as the locally installed browser gets updated. So it can be considered as a great competitor for Electron, but first let’s answer some questions you might have already.

Will Carlo work with chromium as well ?

As you saw, google has mentioned Google Chrome in their announcement, so are we able to use chromium too (Electron bundles chromium) ? It seems so, by looking at the Carlo codes we can find :

Browser executables that Carlo will look for

So for becoming 100% sure, I just installed it in my Linux box with chromium 70 on it to test and the systeminfo example ran without any problem. So for those who do not want to install Google Chrome on their OS, chromium is working as well too.

Is it really smaller ?

Yes ! the node_module directory of only installed Electron takes around 130MB while for Carlo it is around 2MB. After packaging and installing the app, at least 100MB of difference can be seen.

Is developer console accessible in Carlo ?

Again yes, the developer console is just there and pressing ctrl+shift+i will reveal it. I wasn’t able to find the docking mode to have both developer console and the app in one window, it seems to be removed.