as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート
アクセスいただきありがとうございます。こちらのページは現在英語のみのご用意となっております。順次日本語化を進めてまいりますので、ご理解のほどよろしくお願いいたします。

Vega SDK Release Notes

Rate your experience with the Vega SDK

Vega SDK version 0.22

We’re excited to bring you the 0.22 release, which introduces an MCP server and prompt library for AI-assisted performance diagnostics, and platform improvements for media resource management. Media playback and streaming, UI rendering, and performance are updated with 60 bug fixes. Also, “Project Kepler” is now officially Vega!

Announcements

Kepler is now Vega

The Kepler codename has changed to Vega across all platforms. Support for the kepler alias will be discontinued in v0.23.

Action required: Update any scripts and workflows to use vega commands instead of kepler commands before upgrading to v0.23.

Vega SDK Manager

The new SDK Manager makes it easier to update and maintain Vega SDK versions. As a result, we are deprecating the use of the KEPLER_SDK_PATH path, and the SDK Manager will help with this environment variable transition. For backwards compatibility, the Vega SDK Manager creates a kepler alias in this release.

Action required: Invoke all SDK tooling using vega from the binary path of your main installation directory, instead of relying on the environment variable. Backwards support is provided in this release, but will be discontinued in v0.23.

New features

Easier version upgrades with SDK Manager

The Vega SDK Manager manages SDK versions for your projects through the command-line with capabilities similar to nvm for Node.js or pyenv for Python. You can now manage multiple SDK versions and make project-specific configurations, and integrate with CI/CD pipelines. For more information, see Vega SDK Manager.

Streamline performance and crash diagnostics

MCP Server for Vega-specific context

The new Model Context Protocol (MCP) server brings Vega context to your AI coding assistant with curated prompts for diagnosing performance issues: Time to First Frame and Time to Fully Drawn. For more information, see Set Up Vega DevTools MCP Server.

Performance analysis

Developers can now measure micro-KPIs that break down Time to First Video Frame (TTFVF) into "press of play to player initiation" and "player initiation to first frame," helping developers optimize their media player implementations. AI-powered performance diagnostics help developers identify and resolve performance issues with natural language prompts. For more information, see Measure App KPIs.

One-click crash debugging

Vega Studio now automatically displays an aggregated crash report (ACR) summary. The report contains the symbolicated stack trace and key debugging information from the ACR file. For more information, see Debug App Crash Using Vega Studio.

Device logging in Vega Studio

Better device logging includes log access through Device Files view, source-level log filtering, and more concise log formats. Automatic device detection was improved by mapping the Vega Virtual Device to Simulator in trackDevices and updating simulator node to loading on click.

Reconnecting with Chrome DevTools

Chrome DevTools now automatically reconnects to Vega apps after they are relaunched, enabling seamless reconnection within 3 seconds without manual intervention or configuration. The Vega TV app simplifies debugging so developers can configure and debug within 5-10 minutes.

Improved memory leak detection

We've improved the memory leak detection documentation for Vega apps with new steps to prevent Application Not Responding (ANR) crashes during debugging and trigger garbage collection for accurate memory analysis. For more information, see Detect Memory Leaks.

Improvements

Developer mode detection enabled

Developer mode is now enabled by default in the Vega Virtual Device, streamlining the development workflow.

The CLI and Vega Studio now detect when developer mode is inactive on devices, providing clear error messages and guidance instead of generic failures. Developer mode support for input injection through inputd-cli enables quick automation testing without Appium, and the Developer Mode received UI improvements including alert dialogs.

Ensure fluid apps with micro-KPIs

New performance KPIs further define how fluidity is measured, ensuring apps that pass certification accurately reflect the user-perceived fluidity of being responsive and smooth. This update includes Input Key Latency for playback scenarios, which detects and fixes issues such as sluggish behavior on start/stop. The Activity Monitor performance algorithm now allows trace files to avoid timeout by running in parallel, and displays a progress indicator with clear error messaging if failures occur.

For more information, see the Developer Forum: Vega App Performance Series

Build and CI/CD infrastructure

UI automation includes Appium and image comparison libraries for in-system testing.

Media and audio

Prevent playback failures with resource management

Media resource management now addresses memory for resource-constrained devices. The media server provides video session information to lifecycle management, so background apps can clean up media resources. This prevents playback failures when switching between apps that require secure video decoders.

React Native for Vega and third-party libraries

React Native core component support

  • TextInput now includes essential props such as autoFocus, multiline, selection, and onChangeText.
  • The Text component added aria-label, selectable, and adjustsFontSizeToFit.
  • ScrollView added highly-requested features like maintainVisibleContentPosition, scroll indicators, and contentOffset.
  • The Image component added progressiveRenderingEnabled, and resizeMethod for better rendering control.

React Native APIs and libraries

  • Apps can request access to sensitive features like camera and Bluetooth with user consent.
  • The ToastKepler API added native toast notifications.
  • Turbo modules now replace slow URL polyfills, significantly improving performance for URL and URLSearchParams operations.
  • With the new Vega System Info API, developers can run queries about system uptime, OS details, build information, and hardware characteristics. For more information, see @amazon-devices/kepler-system-info.

Resolved issues

Media playback and streaming

  • Fixed issues affecting video start times: Can't start playback when startTime is set and Mp3 doesn't start playing until fully downloaded.
  • Fixed issue regarding progressive audio playback for large files: Player freezes on content 10~ seconds into stream.
  • Fixed caption rendering issue during pause: Closed Captions disappear when pausing video.
  • Fixed network throttling behavior to properly synchronize audio and video streams during bandwidth limitations: Audio doesn't stop when video stops during network throttling and video plays in fast forward when throttling is removed.
  • Improved HLS AES-128 handling during ad transitions.
  • Improved DASH DRM multi-period manifest parsing: Closed captions not showing with DASH DRM livestreams and app crash on release with DASH DRM multi-period.
  • Improved subtitle timing synchronization: Subtitle timing drift after 30 seconds of playback.
  • Improved audio processing for encrypted HLS streams: Poor audio quality with AES-encrypted HLS content and app crashes when playing live TV with nativeParseFromString.

Application framework and performance

  • Fixed Fetch API handling disparities affecting content playback: Player freezes on content 10~ seconds into stream.
  • Fixed focus loss during navigation when using React Navigation libraries: Loss of focus during app navigation.
  • Fixed animation rendering with MaskView components: Reanimated animation not applied when using MaskView.
  • Improved TextInput display for number-pad inputs: Extra dot shown on number-pad TextInput.
  • Improved scroll performance by optimizing React-Navigation/Drawer re-rendering behavior: React-Navigation/Drawer causes unnecessary heavy re-render.
  • Improved Sentry symbol mapping support for better debugging.
  • Relaxed the ANR timeout in Dev Mode: Splash screen dismissed immediately in debug builds.

User interface (UI) and rendering

  • Fixed Lottie animation cleanup issues to prevent memory leaks: Looping Lottie animation leaves garbage after unmounting.
  • Fixed video layer compositing issues affecting ad playback by correcting compositor handling with proper v-sync delay management: Main video flashes through videos playing in webview and Opacity issues when using animations in modals.
  • Fixed text rendering on simulator with improved shader code execution on Mac OS: Text may disappear and reappear on different renders.
  • Improved thumbnail image quality when using Fast Image component: Thumbnail image quality reduced when using Fast Image.
  • Improved Charles proxy by adding traffic visibility for image requests: Cannot see images traffic in Charles proxy.

Platform services

  • Fixed race condition occurring when components are rapidly started, stopped, and restarted within the same process to improve deep linking reliability for Content Launcher: Content Launcher DeepLink not working and Content Launcher - Login status is not reflected.
  • Fixed Account Login Integration Guide with corrected implementation details: Correct Account Login Integration Guide.
  • Improved Login with Amazon response structure consistency: Strange structure on responses from identity-lwa-lib.
  • Clarified manifest validation requirements regarding module ID case sensitivity to prevent build failures: Manifest validation failed because of offer module.

Developer tools

  • Fixed screenshot functionality to provide correct image formatting: Screenshot - incorrect format, black screen.
  • Improved device registration flow for developers using two-factor authentication with updated documentation guidance: Virtual Device registration fails with 2FA.
  • Clarified app launch commands and deprecation notices for improved developer experience: Launch app - vlcm vs vmsgr and Error: Command failed: vda -s emulator-5554 and Failed to install .vpkg on device Simulator.

Known Issues

  • MediaSource objects do not fire the sourceclose event when they are detached from VideoPlayer objects, causing the player to freeze when waiting for the event.
    • No known workaround.
  • Subtitles are not shown when taken from Dash.js player on Amazon port dash.js using Amazon Reference. Resolution includes updates to dash.js player.
    • Workaround: ShakaPlayer port takes vtt file and can show closed caption.
  • Performing multiple Forward Seek operations without waiting for a response causes a deadlock condition. When fast forward is pressed as quickly as possible for about 2-3 minutes, the seekwithRate API takes too long to execute and leads to an ANR.
    • No known workaround.
  • "Error: Cannot create URL for blob!" when the same video is replayed. Root cause is react-native-url-polyfill cannot be used currently since it does not support createObjectURL.
    • No known workaround.
  • For regions like Republic Dominicana, the API response for a single day takes 10–15 seconds due to large data volume. Showing that it’s continually loading during this time is a poor UX.
    • No known workarounds.
  • SVG images with display: 'none' are displayed. Not supported by RN72.
    • Workaround: Remove components when they don't need to be displayed.
  • Focusable trait is not being seen in ucc. Should be in same hierarchy or linked in some way to be retrieved by Appium selectors.
    • No known workaround.
  • Splash screens loaded with 100 images takes 5-6 seconds to load. This issue resolves the performance degradation for splash screens that include a high number of image files.
    • Workaround is to use fewer than 8 images for the splash screen.
  • When LazilyComponent is created with lazy(), it's wrapping TargetComponent, but the lazy component itself doesn't have the styling. Root cause is that the lazy() function creates a new component that suspends, and when it resolves, it's not properly preserving the original component's styling.The issue is that LazilyComponent is a lazy-wrapped version of TargetComponent, but the lazy wrapper might not be preserving the styling correctly. While this functions on Android, it requires a workaround with React Native for Vega.
    • Workaround: duplicating styles in lazy loaded component resolves the styling issue but requires style duplication for each lazy loaded component.
  • Metadata events are intended to emerge at the PTS of a given ID3 Emsg, such that ID3 Emsg events may be ignored and only metadata need be listened to. However, due to a flaw in Shaka versions prior to 4.14.1, these emerge with incorrect times (using the start time of the segment within with the metadata was found, rather than the actual PTS of the metadata). Additionally, on attempting to manually add metadata cues to the metadata TextTrack (obtained from video.textTracks, where kind = metadata), an exception is thrown intermittently.
    • Workaround: Don’t use ID3. This is not ideal and can sometimes send incorrect beacons.
  • When navigating, the previously focused element is read out again, followed by the new one. Root Cause: When a web page loads without any explicitly focused elements, the rootWebArea receives focus by default. In this scenario, a subsequent focus transfer to any component (like a button or input field) creates an unexpected dual-focus state - both the rootWebArea and the newly focused component remain focused simultaneously. This bug will also affect VoiceView experience. If the rootWebArea element doesn't defocus, VoiceView will speak the whole content of the web page even though the focus is on a button.
    • Workaround: Don’t use temporary augmentations to nodes in order to read section titles.
  • Playback doesn’t start automatically when mediaElement.autoplay is set to true.
    • Workaround: If mediaElement.autoplay is true, then call mediaElement.play() to start playback.
  • End user may observe an infinite red spinner 3 seconds after video playback. The low level Webplay (MSE/EME) stops playback with "pipeline error decode." Issue happens only when the same decoder is first configured for SDR and then during playback gets a request to be reconfigured for HDR.
    • Workaround: Do not change profile from SDR -> HDR at runtime.
  • For the working video, pipeline is buffering both audio and video whereas for non-working video, pipeline buffers video but not audio and mp4 playing doesn't work with some content because of issues with the video's metadata. In the case of the non-working video, the audio queue never reaches 100% while video queue does.
    • Workaround: Correct metadata for non-working video and set start time to 0.
  • When using Shaka Player, originalVideoId is missing from Shaka’s variantTrack on some HLS streams. This has been updated as part of the external Shaka 4.13.2 release whereas the Vega fork of Shaka Player is running 4.8.5.
    • Workaround: Recommend apps maintain a local patch until update is released.
  • When switching between the audio tracks, apps observe a video pause/stutter during the transition. It seems that Vega is not honoring flushing a MediaSource buffer.
    • No known workaround.
  • FlatList with numColumns recalculates the entire grid layout when new data is added through onEndReached, resulting in component unmounting and remounting, which consequently causes focus loss.
    • Workaround: To address this issue, implement a solution utilizing two nested FlatLists as an alternative to the numColumns approach. In this architecture, the outer FlatList is responsible for managing vertical scrolling and pagination, while the inner FlatList handles the horizontal row layout. When new data is appended, the existing rows maintain identical references, allowing existing row components to be preserved and focus to be retained within the currently focused row.
  • When implementing Headless JS Playback in combination with Shaka Player, logs may show ERROR Required Lookup Map not populated! Root cause: compatibility checks don't seem to work in headless services and/or they are not creating the map appropriately.
    • Workaround: Playback does work fine with the error.
  • Focus not restored to prev screen with "Transparent Modals" when app uses separate navigation screens, each containing their own modal. Root cause analysis reveals that navigation.goBack() correctly navigates from ExitScreen back to LeftNavScreen, but focus is being restored to the underlying LeftNavScreen component instead of its transparent modal window that should be in the foreground.
    • Workaround: Use Native Stack Navigator with detach inactive screens false.
  • Multiple buttons on the screen show the focused state when navigating quickly after transitioning to a new screen. JS code is properly blurring and focusing the correct components and the style updates are set correctly, but the native PMI mutation to re-draw the component never happens.
    • Workaround: When commenting out their enableFreeze() call, the bug no longer occurs.
  • getLocales() returns locales alphabetically instead of user preference order.
    • Workaround: You can try using JavaScript’s Intl API to detect and correct the locale ordering.

Last updated: Jan 05, 2026