Cobalt 25.LTS.30 Stable Release

The Cobalt team has pushed critical patches to the Cobalt 25.lts.stable branch with tag 25.lts.30 (25.lts.30.1034943)

The Evergreen binaries are available on GitHub (5.30.2)

Cobalt Changes

Critical Bug Fix

  • Evergreen Full: Resolved an issue in previous versions of Cobalt which caused the app to crash when an edge-case network error is encountered while updating the Cobalt version using EG Full. See the note at the end of this document for recommendations. (#4910)

New Features / Support

  • Networking Performance: Platforms are strongly encouraged to implement the CobaltExtensionSocketReceiveMultiMsgApi extension introduced in 25.LTS.20.This optimizes UDP packet handling, significantly reducing CPU usage and improving network throughput on Linux systems using recvmmsg. This results in a more responsive application and improved video quality. See networking_performance.md for implementation details.
  • Crashpad Database Clearing: Added a web API to clear the Crashpad database to work around upload throttling issues (#4790)
  • Progressive Playback Disabling: Added a runtime switch and H5vcc setting to disable progressive playback (#4564)
  • Localhost Resolution: Optimized localhost resolution to avoid system resolver and ensure correct IPv4 and IPv6 loopback address resolution (#4830)
  • Cross-Thread MediaSource Support: Enabled cross-thread MediaSource support, allowing MediaSource objects on a Dedicated Worker to render frames on a HTMLMediaElement owned by the main browser thread. (#4314)
  • QUIC Connection Options: Added support for setting quic_connection_options and quic_client_connection_options from both the command-line and h5vcc (#4586)
  • [Android] ALLM Persistent Storage: Added persistent storage flag for Auto Low Latency Mode (ALLM) API (#4600)

Updates and Improvements

  • QUIC/HTTP3 Performance Optimizations: Multiple optimizations to QUIC and HTTP3 for performance gains (#4489 , #4490 , #4491 , #4492 , #4493 , #4494)
  • Thread Priority Management: Improved v8 thread priority management to resolve recent issues with framedrops during playback (#4693, #4697)
  • UDP Socket Fixes: Corrected issues with sending messages over connected and unconnected UDP sockets (#4402 , #4626)
  • Socket Watcher: Improved socket watcher logic to track read and write interests explicitly, preventing spurious callbacks and potential crashes (#4430)
  • MediaSource Re-use: Resolved an issue when re-using attachments by checking MediaSource presence (#4571)
  • Null Pointer Checks: Prevented dereferencing layout_boxes when it's null (#4820) and added null pointer checks for media_codec_bridge (#4846)
  • String Out of Bounds: Addressed a string out of bounds issue when opening asset files (#4673)
  • QuicChromiumPacketWriter: Added a check and pointer reset to avoid having a stale QuicChromiumPacketWriter pointer in the QuicConnection (#4691)
  • Filesystem Timestamp Granularity: Allowed for filesystems with one-second timestamp granularity (#4497)
  • Latin Alphabet for Montenegro: Forced Latin alphabet for Montenegro ensuring correct characters are displayed (#4849)
  • Command-Line Switches: Showed all command-line switches in help and allowed startup URL at the end (#4585)
  • FileProxy Destruction: Ensured correct destruction order for FileProxy (#4530)
  • Stack Overflow Prevention: Set up a custom stack size for InstallationManager load to prevent stack overflows that may cause unusual platform crashes (#4615)
  • Testing Improvements
    • Added more test cases for PosixSocketResolveTest to improve test coverage and ensure correct IPv6 localhost lookups (#4827)
    • Disabled NPLB test cases not applicable for Android (#4721)
    • Fixed PosixFileFtruncateTest tests not working correctly on AOSP platforms (#4627)
    • Fixed a typo in vertical video tests (#4784)

Evergreen

  • EG Updater Sideloading: Enabled sideloading in the EG updater (#4428) and added new required response fields (#4602)
  • ARM 64: Added ARM 64 EG loader config (#4539)
  • Busy Flag Clearing: Cleared the busy flag if GetEvergreenInfo() fails to prevent deadlocks (#4461)

2025 YouTube Certification

Considering the critical Evergreen Full fix (#4910) included in this release, YouTube strongly recommends Partners to move to the latest 25.lts.30 version as soon as possible. Devices undergoing certification should consider moving to the new version now, while already certified devices should plan for a zero-day update if possible.

Contact Points

Please contact our support channels if you have any problems, questions, or feedback.