Edit the Blog Post Header component above this, then place your content here, then fill out the Related Articles section below, if possible. You should have at least one related article and ideally, all three.
Feel free to add supplementary content to the sidebar at right, but please retain the Twitter component (it can live at the bottom of your added content).
This text component can be edited or deleted as necessary.
Related articles only have an image (the squarer version of the banner) and a title. This text can be deleted. Place 1-3 related articles.
Newer Fire TV sticks run Vega OS, a Linux-based platform where React Native is the primary app framework. Your Fire OS APK does not run there. Amazon Devices Builder Tools for AI (ADBT) gives your coding agent an App Porting workflow that turns an existing Fire OS codebase into a buildable React Native for Vega app, then helps you test and fix it on a device.
This article is for Android TV and Fire TV engineers, React Native developers, and TV tech leads planning a migration.
Porting a Fire OS app to Vega OS with ADBT App Porting
Vega is not Android: no ART runtime, no Activities, no APKs.
Two points matter most for planning:
Fire OS apps each bundle their own runtime; Vega apps share the OS-provided React Native runtime.
ADBT helps you with the App Porting detecting the path from your project structure and asks you if it isn't sure. There are three different paths for porting.
Your Fire OS app | Vega output |
WebView / HTML5 hybrid, or web URL only | Vega WebView app |
React Native (incl. Expo TV) | React Native for Vega app |
Native Java/Kotlin | React Native for Vega app |
Prerequisites: a macOS 10.15+ or Ubuntu 20.04+ host; Node.js 18+ (22.14+ for RN 0.83); Vega SDK v0.22+ with Vega Studio; an MCP-capable agent such as Claude Code, Cursor, Kiro, GitHub Copilot or Codex, running its most capable model; a Vega device or the Vega Virtual Device; and your Fire OS source code (or a web URL).
Name the skill and ask for a stop after planning:
Use the amazon-devices-vega-app-migration skill to migrate the Fire OS app at
<project root> to Vega. Write the output to <output folder>.
Stop after Phase 2 (Plan) so I can review the migration guide.
The six App Porting phases, the two gates you enforce, and the files each phase writes.
5. Validate. Detects the app type and flags unsupported dependencies before any code is written.
6. Plan. Maps Fire OS APIs and patterns to Vega equivalents and writes migration_guide.md.
7. Execute. Scaffolds a Vega project and generates code strictly from the guide. Anything it can't migrate goes into NextSteps.md.
8. Build and verify. Builds, runs migration validation tests, installs and launches the app (on the Virtual Device if no device is attached).
9. Guided AI review (mandatory). You test on the TV, describe what's wrong, and the agent fixes it. Be specific ("On the Details screen, pressing Down from Play skips the Episodes row"), ask it to take screenshots, and commit after each working fix.
10.Performance comparison (optional). Benchmarks launch time, UI fluidity and memory against Amazon's thresholds, or against your Fire OS app.
Enforce the gates yourself. The skill advances on its own, so don't just say "continue". Before Phase 3, ask it to confirm the migration guide covers every screen and feature. After Phase 3, ask it to confirm every screen is built with real content, with no stubs or placeholders.
`migration_guide.md` is the contract for the generated app.
`NextSteps.md` lists what wasn't migrated automatically: unmapped APIs and native modules, build errors, validation results, performance notes, and a testing checklist.
Android concepts and their React Native for Vega counterparts.
Manifest. Every Vega package needs a manifest.toml at its root. A minimal app on Vega SDK 0.24:
schema-version = 1
[package]
title = "My Streaming App"
id = "com.example.streaming"
version = "1.0.0"
# Required as of SDK 0.24; 1.2 is currently the only valid value.
[os.version]
min = "1.2"
target = "1.2"
[[components.interactive]]
id = "com.example.streaming.main"
runtime-module = "/com.amazon.kepler.keplerscript.runtime.loader_2@IKeplerScript_2_0"
# RN 0.83: "/com.amazon.kepler.runtime.react_native_kepler_4@IReactNativeKepler_0"
Libraries and native modules. Swap native libraries for their @amazon-devices/* ports (Reanimated, Gesture Handler, React Navigation, MMKV and Async Storage all have one), and use the Vega Module Resolver Preset or a Metro alias so imports stay unchanged. Reimplement your own Android native modules as C++ Turbo Modules. If the repo also has a mobile or Android TV RN app, isolate the Vega app in its own workspace package, since Vega's RN version may lag.
Playback. ExoPlayer code doesn't port. Ask the agent to "Add a media playback implementation to my Vega app" to scaffold a Shaka Player-based player on Vega's MSE/EME, then wire in DRM, captions, media controls and analytics. Run playback in a headless service to keep the UI responsive.
Build and run. Builds are per architecture:
npm run build:debug
vega device install-app --dir . -b Debug
vega device launch-app --dir .
Build, install and launch a Vega app from the command line.
A ported app that launches might not be yet shippable and you have to prompt your agent for the rest of development:
Job | Example prompt |
IAP | Help me integrate IAP in my Vega app |
Performance (TTFF, key latency, fluidity); run on a physical device before you submit | Help me fix the Time to First Frame issue in my Vega app |
Crashes (JS, native, LMK, ANR) | Why did my app crash? |
Accessibility and captions | How do I honor the user's caption settings? |
Matter Casting | Help me add Matter Casting to my Vega app |
RN upgrade | Upgrade my Vega app from React Native 0.72 to 0.83 |
The generated code is a functional starting point, make sure to review and test, focus on:
Start with your simplest app, or one vertical slice of your main one. Run it through App Porting, read the migration guide closely, and see how much of NextSteps.md is left. That one experiment will tell you more about your real migration cost than any estimate.
App Porting is in Beta: say "I want to provide feedback" in your agent's chat, or post in the Amazon Developer Community.