The Cobalt team has published Cobalt 27 LTS Stable including Starboard API version 18 to the 27.lts branch with tag 27.lts.10 (27.lts.10.1041180).
Corresponding Evergreen binaries are available on GitHub at the 27.lts.10 Release tag
Cobalt 27 represents the most significant architectural evolution in Cobalt's history. By transitioning the core engine from a custom web runtime to a fully-fledged Chromium fork based on M138, Cobalt 27 brings modern, next-generation features, performance, and developer experience to Cobalt-powered devices.
This release also marks a major milestone in platform portability. Starboard 18 consolidates the transition to standard POSIX APIs, replacing over a hundred proprietary Starboard functions with industry-standard calls. This dramatically simplifies porting, shortening the timeline for bringing Cobalt to new devices from months to just weeks, saving significant engineering, testing, and operational resources.
Available Reference Ports:
- Desktop Linux
- RDK (
starboard/contrib/rdk) - Android (AOSP)
Migration guide from Cobalt 25 to Cobalt 27 is available here:
[Required] New Starboard Extensions for Cobalt 27:
CobaltExtensionCrashHandlerApiStarboardExtensionNativeStabilityApi
A Modern Chromium & Blink Engine
Cobalt 27 provides a fully modernized, standards-compliant web platform. This shift brings robust, cutting-edge web technologies directly to Cobalt devices bringing richer user experiences optimized for embedded devices.
Key Benefits of the Chromium & Blink Transition:
- Rich WebGL Capabilities: Full support for standard WebGL 1 and 2 opens up advanced 2D and 3D graphics capabilities able to render complex visual effects, highly interactive UI layouts, and immersive animations with hardware-accelerated graphics performance.
- Standards Compliance: Developers can target modern Web APIs with confidence. The transition enables modern CSS layouts, advanced JS features, and full compliance with standard Web APIs, making it easier and faster for Cobalt developers to deploy new features.
- V8 Performance Boost: By running the latest V8 JavaScript engine, complex JavaScript animations and app state transitions execute faster and more efficiently.
- Modernized Graphics & Compositing Pipeline: GPU rasterization and compositing are now handled by Chromium's hardware-accelerated graphics pipeline (using the Chromium Ozone framework on Linux/Starboard ports), translating Blink rendering into standard OpenGL ES and native platform graphics calls.
- WASM Support: Full support for standard WebAssembly for near-native execution performance – unlocking advanced client-side media processing and higher web runtime performance.
- Fully Featured DevTools (Available on non-gold builds): You can now debug Cobalt applications using the standard Chrome DevTools interface out-of-the-box. Simply launch a build, navigate to
chrome://inspecton a desktop Chrome browser on the same network, and inspect the running app with access to the DOM tree, performance profilers, console, and network analyzers. This replaces the limited, custom debugging tools of the past.
Starboard 18
Starboard has undergone a massive simplification. Bespoke, proprietary Starboard APIs (e.g., SbMemory*, SbThread*, SbSocket*, SbFile*) have been phased out and replaced with standard POSIX APIs already available on platforms. This reduced Starboard APIs from 273 (Starboard 15) vs 117 (Starboard 18).
- starboard/doc/starboard_posix.md
- See comprehensive list of changes in (starboard/CHANGELOG.md)
Why POSIX API Adoption Matters:
By adopting POSIX, Cobalt integration efforts can be cut from months of development to just weeks. Porting is no longer about implementing custom wrapper functions for threading, file I/O, and sockets. Instead, developers can link their system's standard libraries (e.g., pthread, libc, openssl) directly, dramatically reducing integration time.
New Starboard APIs and Extensions (starboard/CHANGELOG.md):
While many Starboard APIs were removed, several new interfaces and updates were introduced to support modern media capabilities, features, and modularity:
Starboard Changes
- Dynamic Media Codec Switching:
- SbMediaCanChangeType()
- Added to media.h. This API allows the browser to query whether the platform's media pipeline supports dynamic stream configuration changes (e.g., SourceBuffer.changeType()) without destroying and recreating the player instance
- SbPlayerWriteSamples()
- Capabilities Update: Now supports writing samples with different mime-types and codecs on the fly if SbMediaCanChangeType() returns true.
- System and Storage Updates:
- kSbSystemPathFilesDirectory
- System Property: Introduced to define the permanent write-path for DOM localStorage and persistent cookies
- Evergreen now uses 2-slots (instead of 3), optimizing flash storage usage.
- Lifecycle Updates
- Synchronous Conceal Lifecycle Handling
- Updated
kSbEventTypeConcealhandling and lifecycle documentation to ensure graphics and media resources are deterministically released before background suspension completes.
- AV2 Video Codec Support: Added AV2 definition to SbMediaVideoCodec to prepare the media stack for next-generation AV2 streams.
New & Updated Starboard Extensions
These extensions are either brand new, updated, or have had their legacy core API C headers fully removed, making the extension implementation mandatory for baseline functionality:
[Required] New Hang Detection and Reporting -
CobaltExtensionCrashHandlerApi- Cobalt is now able to detect hangs to better diagnose in-field platform issues
- No custom implementation; the platform must just wire up the provided, shared implementation of the extension at:
starboard/shared/starboard/crash_handler.hstarboard/shared/starboard/crash_handler.cc
[Required] New Native Stability Reporting -
StarboardExtensionNativeStabilityApi- Enables YouTube to more reliably log stability events like crashes and hangs
- No custom implementation; the platform must just wire up the provided, shared implementation of the extension at:
starboard/shared/starboard/native_stability.hstarboard/shared/starboard/native_stability.cc
New Low Memory Kill Detection -
StarboardExtensionLowMemoryKillApi- Allows Cobalt to detect whether the previous application session was terminated by the OS due to memory pressure, helping distinguish true crashes from OS out-of-memory kill
- Extension interface and Linux reference implementation are available at:
starboard/extension/low_memory_kill.hstarboard/linux/shared/low_memory_kill.hstarboard/linux/shared/low_memory_kill.cc
Consolidated Player Settings -
StarboardExtensionPlayerSettingsApi- Consolidated thread-local
SbPlayerconfiguration (maximum video input size, maximum video resolution, and AndroidSurfaceViewbinding) into a unified extension, replacing the removed single-purposePlayerSetMaxVideoInputSizeandPlayerSetVideoSurfaceViewextensions - Extension interface and shared Android implementation are available at:
starboard/extension/player_settings.hstarboard/android/shared/player_settings.hstarboard/android/shared/player_settings.cc
- Consolidated thread-local
Memory-Mapped Evergreen Binary -
CobaltExtensionMemoryMappedFileApi- Enables platforms with sufficient flash storage to memory-map an uncompressed
libcobalt.sodirectly from disk (via--loader_use_mmap_file), trading storage space for lower runtime RAM usage (Implementation guide) - NOTE: For memory map configurations, please use the uncompressed Cobalt Core binaries on GitHub (they do not have “compressed” in the file name.)
- Extension interface and shared POSIX implementation are available at:
starboard/extension/memory_mapped_file.hstarboard/shared/posix/memory_mapped_file.hstarboard/shared/posix/memory_mapped_file.cc
- Enables platforms with sufficient flash storage to memory-map an uncompressed
2027 YouTube Certification
Remember to use 27.lts.10 (or newer) for 2027 YouTube certification and for your product release.
Contact Points
Please contact our support channels if you have any problems, questions, or feedback.