Page Summary
-
Cobalt is a lightweight HTML5/CSS/JS application container designed for minimal resource consumption while providing a rich user experience across various platforms.
-
It benefits developers with familiar environments and advanced debugging tools, and porters through Starboard, its porting layer for platform customization.
-
Cobalt offers advantages such as compatibility with platforms lacking JIT compilation or dynamic code execution, a small footprint optimized for memory, and reduced input latency.
-
Developers can build applications leveraging Cobalt's support for specific HTML, CSS, and JavaScript features, while porters can customize platform functionality via Starboard.
-
Getting started involves following platform-specific setup instructions and utilizing the provided documentation for porting and development.
Cobalt is a lightweight, fully-capable HTML5/CSS/JS web platform powered by Chromium and Blink. Designed for resource-constrained and embedded devices, it delivers a rich, low-latency user experience and a modern application development environment. By supporting modern web standards with a minimal resource footprint (deployment size, RAM, CPU, GPU), Cobalt enables consistent, high-performance applications across a wide variety of platforms.
Target audiences
Cobalt's documentation is written with two audiences in mind:
Porters enable Cobalt to run on new platforms by using Starboard, Cobalt's porting layer and OS abstraction. Each Starboard module (such as memory, socket, and thread) defines functions that porters must implement.
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.
Benefits of Cobalt
Cobalt significantly reduces the cost of supporting a browser on non-standard, resource-constrained platforms. Because Cobalt operates at a consolidated, versioned platform abstraction layer, porting takes only a few weeks, and subsequent rebases are straightforward.
These are some other benefits that Cobalt provides:
Broad portability
- Does not require platforms to support JIT compilation and can run on platforms that disallow execution of dynamically generated code.
- Operates as a single-process application and does not rely on the ability to spawn multiple processes.
- Optimizes graphics performance for platforms with limited or no runtime shader compilation support.
Automatic updates (Evergreen)
- Features an Evergreen architecture enabling self-updating capabilities in the field, decoupling the web engine lifecycle from system OTAs to ensure rapid rollout of new features, optimizations, and critical security patches while minimizing ecosystem fragmentation.
Small footprint
- Uses a streamlined Chromium/Blink runtime, stripped of standard desktop browser overhead (like multi-process architecture and generic browser UI) to ensure a minimal footprint while delivering full modern web standards compatibility.
- Employs strict memory budgeting and resource management to ensure stability and prevent out-of-memory crashes on low-end devices.
Optimized Performance
- Leverages threaded compositing to ensure smooth, consistent 60FPS animations (such as transforms and opacity) by running them on a separate thread to avoid blocking the main thread.
- Takes advantage of multi-core CPUs by distributing tasks like rendering, resource loading, and layout across multiple threads, minimizing thread contention and ensuring responsive user input.
- Utilizes hardware-accelerated rendering (via Skia) to offload painting operations to the GPU, avoiding expensive CPU painting where possible.
Standard developer tools
- Supports fully-featured Chrome DevTools out-of-the-box, enabling developers to use standard web development tools for debugging JavaScript, inspecting the DOM, profiling memory, and analyzing performance.
Getting started
Porters
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 NPLB document provides an overview of Starboard's compliance test suite.
Developers
Developers can use the setup instructions for Linux, RDK, or Android to set up their Cobalt development environment, clone the repository, and build a binary.