Static Analysis tests

Apps must pass Static Analysis testing in order to published to the Streaming Store. Apps cannot be submitted for publishing without passing static analysis testing.

The Static Analysis tool, which is a part of the app builder flow in the Developer Dashboard, enables developers to verify that their app's BrightScript source code complies with Roku certification criteria. The tool checks whether the app's code contains any of the following certification-related errors:

Test case Date added
Manifest attributes validation February 2018
Deprecated components detection February 2018
Deprecated APIs detection February 2018
Existence of required package files February 2018
Check for UTF-8 Manifest encoding February 2018
Extraneous directories detection February 2018
Extraneous files detection February 2018
Check for package size February 2018
STOP commands detection February 2018
RSG app identification February 2018
Check for TimeGrid usage February 2018
Check for roProgramGuide usage February 2018
Proper RAF integration tests May 2019
Proper Roku Pay integration tests May 2019
Proper RED integration tests May 2019
Proper Automatic Account Link integration May 2019
Proper Deep Linking integration May 2019
Proper General Audience Measurements integration May 2019
Application nesting tests May 2019
App/screensaver entry point detection May 2019
Manifest libs detection May 2019
Eval usage May 2019
App name in manifest is different from app metadata in Streaming Store May 2019
App version in manifest is different from app metadata in Streaming Store May 2019
App version was updated for submitted package May 2019
Developer ID of submitted package matches Developer ID of previously-submitted package May 2019
Roku Pay usage was found in BrightScript code but was not specified during app publishing May 2019
Roku Pay usage was specified during app publishing but was not found in BrightScript code May 2019
Ads revenue usage was specified during app publishing but RAF was not found in BrightScript code May 2019
RAF usage was found in BrightScript code but ads revenue was not specified during app publishing May 2019
Proper Server-Side Ad Insertion (SSAI) RAF integration. May 2019
Check whether contentId and mediaType parameters in deep link requests are being handled. May 2019
Check for the supports_input_launch attribute in the manifest (required for handling deep link requests while your app is running) May 2019
Check whether the setAdUrl() method is called in RAF implementations, and whether the ad server URL is specified in the method. June 2019
Check for usage of deprecated methods:
  • roDeviceInfo.GetVideoDecodeInfo()
  • roDeviceInfo.GetAudioDecodeInfo()
  • roDeviceInfo.isHDMIConnected()
  • roDeviceInfo.GetConnectionInfo()
February 2020
Check for usage of deprecated content metadata attribute: AudioLanguageSelected February 2020
Check app type (for example, SDK, screensaver, and so on). February 2020
Deprecated rsg_version (older than 1.2) detection March 2020
ECP or roAppManager command detection March 2020
Check for missing entry point ("sub RunUserInterface(args as Object)" or "sub Main()" for apps; "sub RunScreenSaver(args as Object)" for screensavers). April 2020
Check for Roku Pay upgrade/downgrade implementation May 2020
Check that apps using SGDEX have implemented Billing and RAF September 2020
Check for components that cannot be used in a screensaver July 2020
Remind apps with RAF implementation to pass kidsContent flag in calls to setContentGenre() method. September 2020
Check whether apps are firing AppDialog signal beacons from log-in or user selection dialogs. September 2020
roTuner node detection September 2020
Check for "Roku" within app name or names of in-app products, including names with localized characters November 2020
Check for usage of roAppManager.LaunchApp() function, which is prohibited December 2020
Check that SGDEX billing apps have implemented upgrade/downgrade December 2020
Extraneous packages file detection. December 2020
Third-party oAuth provider detection January 2021
Third-party ad library detection January 2021
Check for deprecated AudioLanguageSelected content metadata track ID attribute selected March 2021
Check for deprecated mac field of ifDeviceInfo.GetConnectionInfo() method for getting the MAC address of a device. March 2021
Check for deprecated SteadyMaxMemPoints signal beacon metric. Match 2021
Check for deprecated Adobe and Verimatrix DRMs March 2021
Check for usage of deprecated roDeviceInfo.getVersion() function March 2021
Check for usage of deprecated Video node manifestData fields: mpd and periods March 2021
Check for file:// protocol usage from roUrlTransfer April 2021
Check that in-app product names do not include "Roku" May 2021
Check that in-app products are not priced over $300 May 2021
Check that authenticated apps integrate the Request for Information (RFI) screen (via a call to the ChannelStore getUserData API) September 2021
Check that authenticated apps integrate a voice keyboard for email and PIN entry (via calls to the Voice Keyboard APIs) September 2021
Check for Automatic Account Link integration (via calls to the ChannelStore StoreChannelCredData and GetChannelCred APIs) September 2021
Check whether app is firing ad measurement beacons via RAF December 2022
Check whether app is a Theme November 2023
For apps meeting the streaming hours threshold, check that Automatic Account Link has been implemented (error if not) January 2024
For apps meeting the streaming hours threshold, check that Continue Watching has been implemented January 2024
For apps offering subscription products, check that product groups have been created for any set of products to which customer cannot be simultaneously subscribed. February 2024
Check that manifest entries are less than 255 characters February 2024
Check whether app is using the roAppMemoryMonitor node to track prior exit information. February 2024