Google has released Media3 1.11, the library that sits underneath playback in the large majority of significant Android media apps. The release spreads across playback, editing and UI, but the centre of gravity is Compose: the UI modules pick up slot-based layouts, gesture handling, a set of new reactive state holders, and a pooling mechanism aimed squarely at short-form video feeds.

With Android moving to a Compose-first posture, both Compose UI modules have been getting steady attention across recent releases — media3-ui-compose itself, and the Material 3 layer that sits on top of it — and this release continues that. The practical effect is finer control over how a player is laid out, richer interaction patterns, and tighter integration with Material 3.

The Material 3 Player composable now accepts content through named slots — topControls, centerControls, bottomControls and errorOverlay. Each can be filled with composables you write yourself, or with the ready-made implementations published under PlayerDefaults, which is enough to get a working player on screen without designing one from nothing first. For teams that want a custom layout, the slots mean overriding one region no longer implies rebuilding the rest.

The same composable now wires up FocusRequester, which means D-pad and keyboard navigation work on Android TV, on foldables and in desktop environments without additional plumbing. Anyone who has hand-rolled focus handling for a television player will recognise how much work that removes, and how many edge cases go with it.

Gesture support has moved forward too. PlaybackSpeedState exposes an API covering fast-forward and slow motion, and the demo-compose sample demonstrates it with a long press to run playback forward and a double tap to seek. Combined with the progress slider that arrived in 1.10, the Compose player UI now handles most of what a user expects to be able to do with a thumb, straight out of the box rather than as a custom layer on top.

Then there is the problem anyone building a vertically paging video feed runs into: keeping several ExoPlayer instances alive efficiently as content scrolls past, without either stuttering on the next item or holding on to more players than the device can afford. Media3 1.11 takes that over. PlayerPool, which ships in common-ktx, handles recycling and preloading; rememberPooledPlayer provides the Compose binding from ui-compose. A new ShortFormPlayerScreen in the demo app puts the whole pattern together — a vertical feed where players are pooled, preloaded ahead of the scroll position, and recycled behind it as the user moves on.

A MiniController composable has been added to media3-ui-compose-material3 as well. It draws a compact playback bar showing artwork, the title and artist of whatever is playing, and a progress indicator, with play and pause controls sitting beside them. Like the rest of the Material 3 defaults it picks up Dynamic Color, adapting automatically to the user's wallpaper theme. It is aimed at persistent bottom-sheet and mini-player treatments — the bar that stays visible while someone browses the rest of the catalogue, or while a Cast session runs in the background.

Several new state holders join media3-ui-compose for observing what the player is doing: rememberCurrentMediaItemState for metadata about whatever is currently playing, rememberPlaylistState for the full playlist together with the active indices within it, and rememberErrorState for playback failures, which arrives with a matching ErrorText composable and a default ErrorOverlay on the Material 3 side. Between them they cover most of the state an app previously had to observe by hand.

Outside Compose, the Cast extension has been modernised. It can now be configured programmatically through CastParams, and it supports operating-system-level routing through the SystemUI output switcher — so a user can start casting from the control the platform already provides, rather than having to find the equivalent button inside the app.

The release rounds out with a network extension built on the Ktor HTTP client and new muxing utilities covering Ogg and WAV files. Google says further additions and customisation options are planned for coming releases, and is pointing developers at the project issue tracker for feedback on what to prioritise. The full release notes carry the complete list of changes, including the bug fixes and smaller improvements that did not make the highlights.