Skip to main content
Roku certification is required before a channel can go public in the Channel Store. Run make check to validate the static checks locally. Some requirements can only be verified on real hardware.
make check is a development aid, not a substitute for Roku’s official certification review. Use it to catch issues early, but always test on hardware before submitting.

Running make check

A passing run produces output like this:

What each check validates

Manifest fields

These four fields define the channel identity and version shown in the Channel Store. All must be present and non-empty. build_version must be higher than the previously submitted value — the store rejects duplicate build numbers.Current values in manifest:
Home-screen icons displayed when the channel tile is focused. Both HD and FHD variants are required. They must use pkg:/ paths.
Splash screen images shown while the channel loads. All three resolution variants are required for certification. The check looks for the field names; the actual files are validated separately.
Declares that the channel supports full HD (1920×1080). The check script looks for the string ui_resolutions=fhd. The manifest currently declares ui_resolutions=fhd,hd, which satisfies this requirement.
The check script looks for rsg_version=1.2 in the manifest. The manifest currently declares rsg_version=1.3, which is a superset and satisfies the requirement at runtime, but the string check will report a failure because 1.2 is not literally present.To fix: either change the manifest to rsg_version=1.2 (if 1.3 features are not needed) or update the make check script to accept 1.3 as passing.
Enables the channel to be launched via a deep link input event. Required for any channel that handles deep links. When this field is set, roInput and roInputEvent handling in source/main.brs become mandatory.
Enables the SceneGraph splash screen optimization, which reduces apparent launch time by letting the RSG runtime render the splash before the full scene graph is initialized. Required for 2026 certification.
splash_color sets the background fill shown behind the splash image (e.g. #1a1a2e). splash_min_time sets the minimum display duration in milliseconds (1500 = 1.5 s). Both fields are required.

Image files

The check verifies these files exist on disk:
The manifest declares splash images with underscores (splash_fhd.png) while the make check image check looks for hyphens (splash-fhd.png). Verify that both the manifest paths and the actual filenames on disk are consistent. If they differ, either rename the files or update the make check script to match.

Code checks

These checks verify that source/main.brs implements the deep link contract required when supports_input_launch=1 is declared in the manifest. GlobalTV supports mediaType=live deep links, handled through launchDeepLink and inputDeepLink in source/main.brs and components/MainScene.brs.

Beacon check

Roku measures channel launch time by looking for signalBeacon(AppLaunchComplete). This signal must be fired from components/MainScreen/ after the main content screen is ready for user interaction.
Without this beacon, Roku’s automated testing cannot measure launch performance, and the channel will not pass certification.

OPTIONS key check

Certification checklist 9.1 requires that the player screen does not intercept the OPTIONS key. The check scans components/PlayerScreen/PlayerScreen.brs for the string options. If found, it emits a warning to verify that any handler returns false (passes the key through rather than consuming it).

Certification status

Checks already passing

These points are implemented in the codebase and verified by make check:
  • Version fields present and non-zero in manifest
  • Splash screen declared in manifest with all three resolution variants
  • supports_input_launch=1 set
  • splash_rsg_optimization=1 set
  • signalBeacon(AppLaunchComplete) fired in MainScreen
  • On-device login flow (no external browser required)
  • roInput and roInputEvent handling in source/main.brs
  • launchDeepLink / inputDeepLink routing present
  • No eval(), no file://, no bs_libs_required=v30

Checks that require hardware testing

These cannot be validated by make check and must be verified manually on a physical device: