July 15th OS update

We are happy to an announce a Kepler OS update launching July 15th!

This release has no updates to the installed SDK itself, but there are several API and service behavior changes to be aware of, including new requirements around releasing media resources when your app goes to the background, and using the headless service runtime model for the Account Login integration. These functionality updates coincide with an Over-the-Air (OTA) update of the operating system on the Kepler device, which includes a number of optimizations and bug fixes.

While this SDK update is optional, if you wish to update the Kepler Virtual Device (KVD) simulator, you must download this SDK update to upgrade KVD to the latest OS with these improvements.

This release provides OS 1.1 (201010438950) on your Kepler Fire TV Stick, which is compatible with Kepler SDK v0.20. You can check your device software version by navigating to My Fire TV > About.

To validate, run kepler -v and you should expect that version 0.20.3067 is returned.

Reminder: breaking change

Starting with SDK v0.20, the use of the headless service runtime module for Account Login is mandatory for all service components for optimized resource usage. For more details, see the recent release note updates.

Functionality updates

  • Media Resource Management updates: For seamless transitions between media apps, Kepler now requires proper release of HtmlMediaElement resource when apps enter a background state. Apps failing to release these resources will be terminated and require a cold start. For more information, including sample code, see Media Resource Management Updates.
  • Privacy update to Kepler identifier getFriendlyDeviceName(): The getFriendlyDeviceName() method now supports accessing a user-customized device name, such as “John’s Fire TV Stick”, provided you request the required runtime privileges. Previously, the default value of “Fire TV Stick 4K” was provided by this method. For more information, including sample code, see Device Friendly Name Identifier Guide.
  • TextInput password field behavior improvement: The TextInput component’s onSubmitEditing callback behavior has changed. Callback now triggers additional keyboard actions when you interact with show or hide password controls in the keyboard user interface. For more information, see Guidance about how to use keyboard input events.
  • Text Encoder performance improvement: The TextEncoder API now includes a native implementation, delivering significant performance improvements. The JavaScript polyfill is no longer needed, enabling faster text encoding operations across all apps.

OS improvements and bug fixes

  1. Added new Graphics Turbo module methods, isSinkActive and onSinkStateChange, to monitor and detect video sink and display output state changes in real-time.
  2. Added explicit documentation that module IDs must be lowercase, resolving 3P app build failures caused by uppercase characters in manifest files.
  3. Improved Login with Amazon to use authorization_code grant with PKCE, replacing the access_token flow. This provides increased security and protects against token interception attacks.
  4. Fixed a rendering issue where updates to maskElement layout properties weren’t triggering masked view updates. Also optimized layer hierarchy to eliminate recursive onDraw calls between mask and filter layers, resolving performance degradation.
  5. Fixed small caption size issue, rendering it on the screen to make it legible for TV based screens.
  6. Fixed apps not responding (ANR) crash issue while playing EPG in headless JS.
  7. Fixed an issue where Shaka Player would freeze during audio track switching. This was done by preventing unnecessary pipeline reconstruction during audio track changes.
  8. Fixed crash between switching of apps due to issue with moving apps from the background to the foreground.
  9. Fixed app crash issue after 10+ minutes of playback by waiting for the app to come to the foreground before connecting to react dev tools through WebSocket.
  10. Fixed Media Player crashes by implementing JS thread heartbeat monitoring, preventing false ANR triggers during heavy event processing.
  11. Fixed app launch failure from sleep state by synchronizing app launch timing with display service readiness, preventing premature app termination during the TV wake up sequence.
  12. Fixed app navigation issue. Pressing back during playback now correctly returns to the previous screen or home page instead of crashing to launcher.
  13. Fixed content preview scaling issues in both 4K and 1080p displays, ensuring proper video centering and aspect ratio rendering.
  14. Fixed performance degradation in apps using react-navigation/drawer by optimizing re-render logic, significantly improving scroll performance and reducing unnecessary component updates.
  15. Fixed inconsistent scrolling behavior for focused items extending beyond viewport, particularly in EPG-like horizontal lists, by implementing predictable edge visibility and standardizing scroll distance.
  16. Fixed console logging to prevent duplicate output, for cleaner and more readable debug logs.
  17. Fixed an issue where dynamically rendered elements in VirtualizedList components weren’t properly reflected in JSON-RPC responses. This improvement provides better visibility of active screen elements, particularly for lists using absolute positioning and imperative handling, enabling more reliable UI automation testing.
  18. Fixed a bug in the service registrar configuration file that was preventing proper enforcement of IPC endpoint restrictions, which limit third-party apps only to their authorized services.
  19. Fixed media playback synchronization issue that caused audio loss and video freezing after pause operations.
  20. Fixed video playback errors during ad-to-content transitions by improving Packetized Elementary Stream (PES packet) handling in the media stream.
  21. Fixed memory handling error that caused app crashes during multiple switches between ads and main content streams, providing stable playback during ad transitions.