Skip to main content
Roku’s certification review checks that your channel meets specific technical and UX requirements before it can be published. This page covers every requirement tracked by make check, plus items that require real hardware testing.
make check is a development aid. It does not replace Roku’s official certification review. Always verify on real hardware before submitting.

Run the automated check

make check
This scans your local project files and prints a pass/fail result for each item. Fix all failures before submitting to the Channel Store.

Manifest fields

All of the following fields must be present in the manifest file. make check verifies each one.
FieldRequired valueCurrent value
titleNon-empty stringGlobalTV
major_versionInteger ≥ 11
minor_versionInteger0
build_versionInteger, unique per submission6
mm_icon_focus_hdpkg:/images/logo-hd.pngpkg:/images/logo-hd.png
mm_icon_focus_fhdpkg:/images/logo-fhd.pngpkg:/images/logo-fhd.png
splash_screen_fhdpkg:/images/splash_fhd.pngpkg:/images/splash_fhd.png
splash_screen_hdpkg:/images/splash_hd.pngpkg:/images/splash_hd.png
splash_screen_sdpkg:/images/splash_sd.pngpkg:/images/splash_sd.png
ui_resolutionsMust include fhdfhd,hd
rsg_version1.2 or later1.3
supports_input_launch11
splash_rsg_optimization11
splash_colorHex color string#1a1a2e
splash_min_timeMilliseconds1500
Increment build_version before every Channel Store submission. Roku rejects packages with a build_version identical to a previous submission.

Required images

These files must exist at the specified paths. make check verifies each one.
FilePurpose
images/logo-hd.pngChannel store icon (HD)
images/logo-fhd.pngChannel store icon (FHD)
images/splash-fhd.pngSplash screen (1920×1080)
images/splash-hd.pngSplash screen (1280×720)
images/splash-sd.pngSplash screen (720×480)
images/globaltv-logo.pngIn-app logo

Prohibited patterns

make check scans all files in source/ and components/ for these patterns and fails if any are found.
Roku’s certification process rejects any channel that calls eval(). The function is not supported in BrightScript and its presence causes an automatic certification failure.make check runs:
grep -r "eval(" source/ components/
If any matches are found, the build fails.
File system access via file:// URIs is not allowed. Use pkg:/ to reference assets bundled in the channel zip.Correct:
m.image.uri = "pkg:/images/logo-hd.png"
Incorrect:
m.image.uri = "file:///images/logo-hd.png"

AppLaunchComplete beacon

Roku requires channels to signal when the app is fully launched and interactive. This is done by calling signalBeacon with AppLaunchComplete in MainScreen. make check verifies:
grep -r "signalBeacon" components/MainScreen/ | grep "AppLaunchComplete"
The beacon must be fired after the main content UI is ready and displayed — not at scene creation or splash screen completion. Firing it too early causes a certification failure. Because supports_input_launch=1 is set in the manifest, the channel must handle deep link inputs. make check verifies these patterns exist in source/main.brs:
PatternRequirement
roInputMessage port must listen for roInput object
roInputEventMust handle roInputEvent messages
launchDeepLink or inputDeepLinkMust process deep link parameters (checklist item 8.1)
The channel currently supports mediaType=live deep links, processed via both launchDeepLink and inputDeepLink handlers in source/main.brs.

OPTIONS key handling

Certification checklist item 9.1 requires that channels do not intercept the OPTIONS key in contexts where Roku’s standard behavior should apply. In PlayerScreen, any OPTIONS key handling must return false to allow Roku to process the key normally. make check warns (but does not fail) if the string options is found in components/PlayerScreen/PlayerScreen.brs. Review that code to confirm the key is handled correctly.

Items requiring real hardware testing

make check cannot verify the following. Test these manually on a real Roku device before submitting.
Roku measures the time from launch to the AppLaunchComplete beacon. Channels that take too long to reach an interactive state may fail certification. Test on a mid-range Roku device (not only high-end hardware).
The login screen must support Roku’s voice keyboard for password input. Verify this works end-to-end on a device with a voice-enabled remote.

Build docs developers (and LLMs) love