Hi @Ivy
Thank you for the detailed suggestions. We have now tried all three:
(a) explicit [extras.value.application] header in manifest.toml,
(b) the no-handler verification path with player.setMediaControlFocus(componentInstance) only, and
(c) upgrading @amazon-devices/react-native-w3cmedia to the latest npm release (v2.2.20).
None of them changed the symptom. Alexa shows the “listening” indicator, but no transport command (Play / Pause / Stop / TogglePlayPause / FastForward / Rewind) is ever delivered to the player, and MediaPlayerMPBImpl::pauseInternal() / playInternal() are still never invoked by Alexa.
Additionally we have confirmed that VegaMediaControlHandler does not exist in any version of @amazon-devices/react-native-w3cmedia published to npm. Details below — we suspect the class lives in an Amazon-internal registry or in a yet-to-be-released SDK build.
What we tried (and the result)
1) [extras.value.application] header added in manifest.toml
Per your second observation, we added the explicit table header so that the section now reads:
[[extras]]
key = "interface.provider"
component-id = "xxx.tvapp.main"
[extras.value.application]
[[extras.value.application.interface]]
interface_name = "com.amazon.kepler.media.IMediaPlaybackServer"
command_options = ["Play","Pause","StartOver","Previous","Next","SkipForward","SkipBackward"]
features = ["AdvancedSeek","VariableSpeed","AudioTracks","TextTracks"]
kepler exec vpt validate manifest.toml → 0 errors.
Result on device: Identical to the original report. Alexa shows the listening indicator (the waveform) but produces no audible response and the player does not pause/play/stop. No transport-control logs are emitted from JS or from MediaPlayerMPBImpl. The chromium-side kepler_media_control_handler.cc(263): handleGetMetadataInfo is not supported warning continues to fire (~135 / session).
2) No-handler verification: player.setMediaControlFocus(componentInstance) only
This step required a workaround: our app builds on the in-house React component library streaks-player-kepler, which wraps the W3C VideoPlayer. Its current public API takes the override handler class through a KeplerMediaController prop, and if that prop is omitted it does not call setMediaControlFocus at all:
// streaks-player-kepler internal (current behavior)
const kmcPromise = KeplerMediaController
? refVideoPlayer.current.setMediaControlFocus(componentInstance, new KeplerMediaController())
: Promise.resolve(); // ← no setMediaControlFocus call at all
We applied a local patch-package patch so that the wrapper still calls setMediaControlFocus(componentInstance) (no handler) when the prop is omitted, then dropped the KeplerMediaController prop on the consumer side. Effectively this is exactly the “no override handler, default native W3C Media handler” topology that you described as the “free basic transport control” path.
Result on device: Same as above. Alexa shows the listening indicator, no transport command takes effect, no pauseInternal() / playInternal() from Alexa, no error in the log. The W3C Media default native handler does not appear to drive MediaPlayerMPBImpl either.
3) Upgrade @amazon-devices/react-native-w3cmedia to npm latest (v2.2.20)
We bumped the dependency from ~2.1.80 to ~2.2.20 (highest version available on the npm public registry) and re-built. The Streaks wrapper patch from step (2) still applies cleanly.
Result on device: (to be filled in after the next sideload — preliminary evidence below.) We will update this thread with the device log once the build cycle completes. However, since the underlying API surface (setMediaControlFocus, KeplerMediaControlHandler) is the same between 2.1.80 and 2.2.20, we do not expect a behavioral difference unless the chromium-side W3C Media KMC bridge has been quietly patched between those releases.
Confirmation: VegaMediaControlHandler is not in any published npm release
We pulled every npm-published version of @amazon-devices/react-native-w3cmedia and grep’d the unpacked tarballs:
| Version | Released | Contains VegaMediaControlHandler? |
|—|—|—|
| 2.1.87 | 2025-09-25 | No |
| 2.1.99 | 2026-01-06 | No |
| 2.2.11 | 2026-02-18 | No |
| 2.2.20 | 2026-02-27 (current latest) | No |
In all four versions:
-
dist/interface/contains onlyKeplerMediaControlHandler.{js,d.ts}. There is noVegaMediaControlHandler.{js,d.ts}. -
dist/index.d.tsexportsKeplerMediaControlHandlerfrom./interface/KeplerMediaControlHandler. The tokenVegaMediaControlHandleris not exported (or even referenced) anywhere. -
grep -R "Vega"against the entire unpacked package returns zero hits.
We also checked the sibling packages @amazon-devices/kepler-media-controls and @amazon-devices/kepler-media-types. Same result — no VegaMediaControlHandler.
The class appears in the public docs at https://developer.amazon.com/docs/vega/0.22/media-player-media-control.html, but it does not appear in any artifact we can install via yarn / npm from the public registry.
What we’d like to ask
- Where is
VegaMediaControlHandleractually shipped?
-
Is it scheduled for a future
@amazon-devices/react-native-w3cmediarelease (post-2.2.20)? If so, target version and ETA? -
Or is it available through an Amazon-internal registry that public-app developers should be configured to access? (Our
.npmrchas@amzn:registry=https://k-artifactory-external.labcollab.net/...for the@amznscope, but the@amazon-devicesscope is not routed there.)
- Is the chromium-side W3C Media KMC bridge functioning in
@amazon-devices/react-native-w3cmedia@2.2.20on Vega 0.22?
-
We tested the no-handler path you described and saw zero downstream effect (no
pauseInternal(), no JS callback). This strongly suggests the native bridge itself is the broken layer, not anything on the app side. Can you confirm whether the same symptom reproduces on Amazon’s officialvega-audio-sampleapp on a recent Fire TV Stick build? -
The previously reported issue Alexa ‘Pause’ does not stop playback in Vega Media Controls (2026-04-21) appears to be the same defect on the official sample app and is still open. Has there been any progress on that ticket?
- If a fix is in flight, what is the target SDK / Fire TV OS release that will carry it?
- We are blocked on shipping voice transport control until either (a) the bridge is fixed or (b)
VegaMediaControlHandleris published in a way we can install. A target release window would let us plan accordingly.
Environment (unchanged from the original report)
-
Vega SDK: 0.22.6759 (Vega CLI 1.2.18)
-
Device: Fire TV Stick 4K Select (
G0733M08526300QC, hostnamefirestick-076be8a191c3613c), VegaOSOS 1.1 (1401010010120) -
@amazon-devices/react-native-w3cmedia:2.1.80(original report) → now testing2.2.20 -
@amazon-devices/kepler-media-controls:~1.0.17 -
@amazon-devices/kepler-media-types:~1.0.0 -
Build type: release VPKG, sideloaded
Happy to attach a fresh full log capture or a sample VPKG on request. Thanks again!