Author Archives:

Improved file importing in Google Sheets with tables and linked pivot tables

We’re introducing two key improvements in Google Sheets that preserve formatting and linked data when converting files from Microsoft Excel. First, Excel tables will now seamlessly import as Sheets tables. Second, Sheets now fully supports importing Excel pivot tables that are backed by table ranges.

Previously, when converting Excel files, Excel tables did not import as Sheets tables, causing users to miss out on the structural and formatting benefits of tables, and pivot tables linked to tables were replaced with static grids. These updates ensure your data structures remain intact and beautifully formatted upon import. Most importantly, your imported spreadsheets will be ready to use right away, no manual reconstruction needed.



Table with linked pivot table imported into Google Sheets

Getting started

Rollout pace

Table imports

Linked pivot table imports

Availability

  • Available to all Google Workspace customers and users with personal Google accounts

Resources

Media3 1.11 – What’s new?

Posted by Toni Heidenreich, Software Engineer, Android


Media3 1.11 is out. Powering the vast majority of top Android media apps, this release brings new features, bug fixes, and improvements across playback, editing, and UI components. We're expanding our Jetpack Compose UI modules with customizable Player slots and easy to use defaults, interactive gestures, state observers, and short-form video preloading using PlayerPool. We also modernized the Media3 Cast integration with SystemUI Output Switcher support, introduced a new Ktor HTTP client network extension, and added new muxing utilities for Ogg and WAV files.

Read on for key highlights, and check out the full release notes for a comprehensive list of changes.

Playback UI and Compose

With Android becoming Compose-first, we are continuing to expand the media3-ui-compose and media3-ui-compose-material3 modules. This update introduces more granular control over your player layout, richer interaction patterns, and deeper integration with Material3.

Customizable Player layout

The Material 3 Player Composable now supports dedicated content slots for topControls, centerControls, bottomControls, and errorOverlay. You can drop in your own Composables or use the ready-made defaults published in PlayerDefaults:

Player(
  player = player,
  topControls = { PlayerDefaults.TopControls(player) },
  centerControls = { PlayerDefaults.CenterControls(player) },
  bottomControls = { PlayerDefaults.BottomControls(player) },
)

The Player Composable also integrates FocusRequester support, enabling seamless D-pad and keyboard navigation on Android TV, foldables, and desktop environments. large-screen devices.

Example for a Composable Player with customized controls

Gestures and playback speed control

PlaybackSpeedState now provides a fast-forward/slow-motion API. The demo-compose app showcases this with a long-press gesture to fast-forward playback and seeking with double tap. Combined with the ProgressSlider introduced in 1.10, the Compose player UI now offers rich touch and gesture interactions out of the box.

Short-form video preloading with PlayerPool

For apps with sliding-window media feeds (for example, short-form vertical video), managing multiple ExoPlayer instances efficiently is a common challenge. Media3 1.11 introduces PlayerPool (in common-ktx) and rememberPooledPlayer (in ui-compose) to handle player recycling and preloading automatically.

The new ShortFormPlayerScreen in demo-compose shows this in action, a vertically paging feed where players are pooled, preloaded, and seamlessly recycled as the user scrolls.

MiniController

A new MiniController Composable in media3-ui-compose-material3 provides a compact playback bar displaying the current item's title, artist, artwork, and progress alongside play/pause controls. As all our default Composables in media3-ui-compose-material3, the MiniController supports Material3 Dynamic Color integration, allowing it to automatically adapt to the user's wallpaper theme.This is ideal for persistent bottom-sheet or mini-player affordances, for example while the user browses content or during active Cast sessions.

The Media3 MiniController showing album art, media metadata and basic controls

Expanded state holders for metadata and errors

We added several new reactive state holders to media3-ui-compose:

  • rememberCurrentMediaItemState – observe metadata about the currently playing item
  • rememberPlaylistState – observe the full playlist and active indices
  • rememberErrorState – track playback errors, with a matching ErrorText Composable and default ErrorOverlay in Material3

We'll continue working on new additions and more customization options in upcoming releases. Please share your thoughts on the project issue tracker.

Modernized Cast integration

Media3 1.11 updates the Cast extension with programmatic configuration options and support for OS-level routing.

CastParams and SystemUI Output Switcher

You can now configure the Cast extension using CastParams:

val castParams = CastParams.Builder()
  .setShowSystemOutputSwitcherOnCastButtonClick(true)
  .build()

Cast.getSingletonInstance(context).initialize(castParams)

Setting setShowSystemOutputSwitcherOnCastIconClick(true) configures the MediaRouteButton to open Android's native SystemUI Output Switcher on supported platform versions, providing a unified output picker experience.

Reactive MediaRouteButton state in Compose

Apps using Jetpack Compose can now easily add the Media routing button (also known as Cast button), which automatically observes the dialog state and updates accordingly. No further logic needed when used together with Media3's CastPlayer!

@Composable
fun TopAppBarWithCast() {
  Row {
    Text(text = "App Title")
    MediaRouteButton()
  }
}
Media3 media route button in an app launching the default output switcher dialog

Core playback and session enhancements

Eclipsa Video - HAGC dynamic HDR metadata (API 37+)

Eclipsa Video promises a more consistent HDR experience across devices, with a consistent baseline HDR white, adaptive headroom depending on the screen and the surroundings, ensuring the creative intent is preserved on all devices.

ExoPlayer now supports playback of the necessary HAGC (ST 2094-50) timed metadata for progressive media (MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. On older devices, ExoPlayer seamlessly falls back to providing a standard HDR playback experience without the adjustments.

Illustration to show benefits of Eclipsa Video HDR, like more consistent color contract

New Ktor HTTP client extension

A new media3-datasource-ktor extension module provides KtorDataSource, backed by the Ktor HTTP stack. This offers a Kotlin-first, coroutine-friendly alternative to the existing Cronet and OkHttp data source modules.

Asynchronous MediaSession connections

MediaSession.Callback now includes onConnectAsync(), which lets you process controller connection attempts asynchronously — for example, to verify authorization before accepting a connection. You can return an immediate Future with Futures.immediateFuture(ConnectionResult) for the same behavior as the existing onConnect.

override fun onConnectAsync(
  session: MediaSession,
  controller: MediaSession.ControllerInfo
): ListenableFuture<MediaSession.ConnectionResult> {
  return authenticateControllerAsync(controller)
}

Safer MediaSession defaults

For apps that don’t override onConnect or onConnectAsync in MediaSession.Callback, the library now defaults to a more secure configuration. Specifically, session data is no longer shared by default with untrusted controllers, meaning third-party or non-system apps lacking notification access are restricted from accessing session data unless you explicitly implement these callback methods to authorize the connection.

New Muxer implementations & container parsing

OggMuxer and WavMuxer

We've added two new dedicated muxers: OggMuxer for muxing OPUS and VORBIS streams into standard .ogg files, and WavMuxer for generating uncompressed and floating-point PCM .wav audio files.

Container parsing and track references

  • MP4 Track References (tref): Mp4Muxer.addTrackReference allows linking dependent metadata or aux tracks to primary video streams.
  • Chapter Extraction: QuickTime and Nero chapter from MP4 files (.m4a, .m4b), and Matroska chapters, are now extracted as Chapter metadata entries for audiobook and podcast navigation.

Please use the issue tracker to report any bugs, or if you have questions or feature requests. We look forward to hearing from you!

Long Term Support Channel Update for ChromeOS

A new LTS-144  version 144.0.7559.259(Platform Version: 16503.92.0), is being rolled out for most ChromeOS devices. 


This version includes selected security fixes including:


513602949 High CVE-2026-19141 Use after free in Resources


513138301 High CVE-2026-13281 Integer overflow in Mojo


533053621 High CVE-2026-19155 Use after free in Payments


540138836 High CVE-2026-19175 Use after free in Payments


513313107 High CVE-2026-12446 Insufficient data validation in Passwords


532939327 High CVE-2026-19153 Insufficient validation of untrusted input in Workers


536584251 High CVE-2026-19166 Use after free in Web Authentication


523729553 High CVE-2026-15123 Insufficient data validation in DOM


516486611 High CVE-2026-17680 Heap buffer overflow in Color


517484284 High CVE-2026-12460 Insufficient policy enforcement in File System Access


496280532 High CVE-2026-9126 Use after free in DOM


517124587 High CVE-2026-12456 Insufficient validation of untrusted input in Extensions


517406035 High CVE-2026-12459 Inappropriate implementation in Serial


532970574 High CVE-2026-15905 Use after free in Aura


523752265 High CVE-2026-15127 Inappropriate implementation in WebGL


502293787 High CVE-2026-17657 Use after free in Navigation


503553615 Medium CVE-2026-15107 Use after free in IndexedDB


523238265 High CVE-2026-15118 Use after free in Input


515443146 High CVE-2026-15108 Integer overflow in Extensions API


522092013 High CVE-2026-15116 Use after free in Actor


514741076 High CVE-2026-12451 Use after free in DigitalCredentials


515463295 High CVE-2026-12015 Use after free


522436154 High CVE-2026-15902 Use after free in Cast


513795122 Medium CVE-2026-15778 Insufficient validation of untrusted input in Navigation


523505418 High CVE-2026-15119 Inappropriate implementation in GetUserMedia


523712556 High CVE-2026-15121 Use after free in WebRTC


523308824 High CVE-2026-13031 Use after free in Blink


523711130 High CVE-2026-13036 Use after free in Blink


523292588 High CVE-2026-16805 Use after free in Blink


523224019 High CVE-2026-13853 Use after free in Journeys


517508651 High CVE-2026-15111 Use after free in Views


516797143 High CVE-2026-12017 Insufficient validation of untrusted input on subframe error pages


517080836 High CVE-2026-13023 Uninitialized Use in GPU


519728279 High CVE-2026-13026 Use after free in Digital Credentials


517148260 High CVE-2026-13024 Insufficient validation of untrusted input in Navigation


523690961 High CVE-2026-13854 Use after free in Ozone


516872067 High CVE-2026-12019 Out of bounds write


512772489 High CVE-2026-10970 Insufficient validation of untrusted input in InterestGroups


513044017 High CVE-2026-19140 Use after free in GPU


520565945 High CVE-2026-15114 Out of bounds read and write in Codecs


533331920 High CVE-2026-19156 Heap buffer overflow in Base


534582496 High CVE-2026-16423 Use after free in UI


536067175 High CVE-2026-19159 Use after free in Views


516794471 High CVE-2026-11672 Out of bounds write in GPU


534903095 Critical CVE-2026-19157 Out of bounds write in ANGLE


517069848 High CVE-2026-12455 Use after free in Tab Strip


514442821 Critical CVE-2026-17650 Use after free in Compositing


506375731 High CVE-2026-10956 Use after free in MimeHandlerView


517585486 High CVE-2026-11691 Insufficient validation of untrusted input in New Tab Page


499182801 High CVE-2026-12012 Use after free


517130229 High CVE-2026-11684 Insufficient policy enforcement in Network


514742747 High CVE-2026-12014 Use after free


Release notes for LTS-144 can be found here 

Want to know more about Long-term Support? Click here

Andy Wu

Google Chrome OS