BerandaComputers and TechnologyCobalt – Lightweight Electron Alternative

Cobalt – Lightweight Electron Alternative

Cobalt is a lightweight HTML5/CSS/JS application container that is designed
to provide a rich application development environment with minimal resource
consumption (deployment size, RAM, CPU, GPU). At the same time, Cobalt enables
a rich, low-latency user experience across a wide variety of platforms and

Target audiences

Cobalt’s documentation is written with two audiences in mind:

  • Porters enable Cobalt to work on other platforms by using Starboard,
    Cobalt’s porting layer and OS abstraction, to implement the
    platform-specific functionality that Cobalt uses. Each Starboard module
    (memory, socket, thread, etc.) defines functions that must be implemented
    for the porter’s platform.

  • Developers want to build applications in familiar environments with
    advanced debugging tools without having to worry about compatibility with
    a highly fragmented set of browsers. At the same time, they want to have
    full control over their codebase so that they can ship features for
    constrained platforms, like TVs, on time and without technical risk.

Benefits of Cobalt

Cobalt significantly reduces the cost of supporting a browser on non-standard
and resource-constrained platforms. In addition, since Cobalt operates at a
consolidated, versioned platform abstraction layer, its porting effort is
man-weeks, and subsequent rebases are near-free.

These are some other benefits that Cobalt provides:

  • More platforms

    • Cobalt does not require platforms to support JIT compilation and can
      run on platforms that disallow execution of dynamically generated code.
    • Cobalt is a single-process application and does not rely on the ability
      to spawn multiple processes.
    • Cobalt precompiles a set of shaders that are sufficient to express all
      graphical effects, thereby accommodating platforms that cannot compile
      shaders at runtime.
    • Cobalt requires a compliant C++11 compiler, allowing it to reach
      platforms with toolchains that don’t support the newest C++17 features.
  • Small footprint

    • Cobalt is optimized for memory. Its surface cache never exceeds a
      predefined budget, and it never creates duplicate layers, reducing
      the likelihood of out-of-memory crashes.
    • Cobalt’s small binary is designed to take up as little space as
      possible. By supporting a subset of HTML5/CSS/JS, Cobalt’s reduced
      package size even allows bundling of CJK fonts on low-end devices.
  • Reduced input latency

    • Cobalt produces consistent 60FPS animations by only supporting
      animation of properties that don’t affect layout, like transform,
      and always running animations on a separate thread.
    • Cobalt is optimized to run on single-core CPUs, resulting in better
      input latency since the renderer and resource loader do not compete
      with layout operations.
    • On platforms that support GLES2, Cobalt avoids CPU painting by
      performing almost all rendering operations on the GPU.

Getting started


Porters should begin with the porting guide,
which explains how to use Starboard, Cobalt’s porting layer, to customize the
platform-specific functionality that Cobalt uses. There are several reference
documents to help porters customize configuration files and to implement
module-specific functionality. The Testing with
document provides an overview of
Starboard’s compliance test suite.


Developers can follow the setup instructions for
Linux or
RasPi to set up their Cobalt development
environment, fetch a copy of the Cobalt code repository, and build a Cobalt
binary. The Cobalt support
guide lists the HTML elements, CSS properties, CSS selectors, and JavaScript Web
APIs that developers can use in their Cobalt applications.

Read More



Please enter your comment!
Please enter your name here

Most Popular

Recent Comments