Jump to Content
Home
Guides
Guides
Jump to Content
Guides
The Roku Channel overview
FEATURES
Roku platform overview
How apps work
App development models
Developer Dashboard
User access management
Email preferences
Content engagement
Streaming Store
Roku Search
Self-serve app promotion tool
Roku Voice
Monetization
Subscriptions and one-time purchases
Publisher payouts
Video advertisements
Analytics Reports
App Engagement Report
App Health Report
App Stability Report
Payout Audit Report
Sales Activity Report
Tax Withholding Report
Transaction Report
Viewership Summary Report
Security on the Roku platform
Legal
SPECIFICATIONS
Specifications overview
Hardware specifications
Streaming specifications
Roku OS support for DASH-IF
DRM & content protection
Roku Search feed (JSON)
Streaming Store graphics
DEVELOPER
Getting started
First steps
Activating developer mode
Building your first app
Creating a content feed
Taking the online video course
Samples
App localization
Architecture
Manifest file
Content metadata
Development environment overview
File system
Certification
Certification criteria
Certification testing
Static Analysis tests
App Behavior Analysis tests
Authenticated app testing
Design
Designing for devices
UI philosophy
Key Design Principles
Roku's master UI
Remote control buttons
Ideal app features
Best practices
SceneGraph core concepts
SceneGraph XML
SceneGraph coordinate systems
Other inherited properties
Node field observers
Remote control events
SceneGraph data scoping
SceneGraph BrightScript
BrightScript support
BrightScript/XML markup equivalence
XML components overview
Defining SceneGraph components
SceneGraph compilation
Component initialization order
Creating custom components
Threads
Developing SceneGraph applications
Specifying display resolution
Handling application events
Event loops
Controlling screen layout
Controlling screen program flow
Downloading server content
Playing Videos
SceneGraph localization
Transitioning to SceneGraph
Media playback
Screensavers
Closed caption
Trick mode
BIF file creation using the Roku BIF tool
HLS and DASH
Bookmarking
Instant Resume
Fast video start
Autoplay
Text to speech
Voice controls
Implementing voice controls
Selecting user profiles with Roku Voice
Discovery
Roku Search
Implementing Roku Search
Prioritizing authenticated apps
Deep linking
Instant Signup
Continue Watching
Direct to Play
Advertising
Integrating the Roku Advertising Framework
Roku advertising requirements
Implementing client-side ad stitching
Implementing Server-Side Ad Insertion Using Roku Adapters
Implementing the Demand API
Roku Advertising Watermark
API reference
Implementing Nielsen Digital Content Ratings (DCR) measurement
Roku Pay
Getting started
Enrolling in the Roku Partner Payouts Program
Setting the monetization method
Creating the product catalog
Catalog 2.0 API integration guide
Price tier reference guide
Creating test users
Setting up Roku Pay web services
Implementing Roku Pay
SceneGraph ChannelStore
Roku Pay web services reference
Roku Pay push notifications reference
Receiving secured Roku Pay push notifications
On-device upgrade and downgrade
Tracking signup abandonment
Creating TVOD apps (Catalog 1.0)
Creating TVOD apps (Catalog 2.0)
Introduction to Subscription Recovery
Basic Subscription Recovery
Enhanced Subscription Recovery
Settings
Testing
Testing Roku Pay
Testing a Roku Pay app
Enabling billing testing
Roku Pay integration requirements
Roku Pay best practices
Roku Pay reports
Sign-in requirements and best practices
Signup requirements and best practices
Authentication
On-Device Authentication
Automatic Account Link
Rendezvous linking
Roku Analytics Component Library (RACL)
Debugging
Capturing and decrypting SSL packets
BrightScript debug protocol
Publishing
Packaging Roku apps
App Publishing
Developer Tools
Roku Remote Tool
Roku SceneGraph XML schema (XSD)
Eclipse IDE support
SGDEX
RALE
Roku Resource Monitor
Using Roku Resouce Monitor in Data Collection Mode
Roku Resource Monitor session file specification
Roku app tracing (with Perfetto)
BrightScript Profiler
BrightScript Profiler file format specification
External Control Protocol (ECP)
BrightScriptDoc
Static Analysis Tool
Command line utility
Automated App Testing
Roku WebDriver
Roku Robot Framework Library
Roku JavaScript Library
Certification testing tool
Performance
Data management
Memory management
Optimization techniques
Optimized data transfer and reference handling
Measuring app performance
Release notes
Reverting Roku beta OS to production on devices
Roku Advertising Framework release notes
Development partners
REFERENCES
Reference overview
SceneGraph
Component functions
init()
onKeyEvent()
Xml Elements
children
component
interface
script
Node
Scene
Abstract nodes
AnimationBase
ArrayGrid
Renderable nodes
Poster
Rectangle
SimpleLabel
Label nodes
InfoPane
LabelBase
Label
MonospaceLabel
MultiStyleLabel
Animation nodes
Animation
ColorFieldInterpolator
FloatFieldInterpolator
ParallelAnimation
SequentialAnimation
Vector2DFieldInterpolator
Typographic nodes
Font
ScrollableText
ScrollingLabel
Control nodes
ChannelStore
ComponentLibrary
ContentNode
MaskGroup
Task
Timer
Layout group nodes
ButtonGroup
Group
LayoutGroup
TargetGroup
Dynamic voice keyboard nodes
DynamicCustomKeyboard
DynamicKeyGrid
DynamicKeyboardBase
DynamicKeyboard
DynamicMiniKeyboard
DynamicPinPad
Key Definition File
VoiceTextEditBox
Standard dialog framework
StandardDialog
StandardKeyboardDialog
StandardMessageDialog
StandardPinPadDialog
StandardProgressDialog
StdDlgActionCardItem
StdDlgAreaBase
StdDlgBulletTextItem
StdDlgButtonArea
StdDlgButton
StdDlgContentArea
StdDlgCustomItem
StdDlgDeterminateProgressItem
StdDlgGraphicItem
StdDlgItemBase
StdDlgItemGroup
StdDlgKeyboardItem
StdDlgMultiStyleTextItem
StdDlgProgressItem
StdDlgSideCardArea
StdDlgTextItem
StdDlgTitleArea
Dialog Nodes
Dialog
KeyboardDialog
PinDialog
ProgressDialog
Widget Nodes
BusySpinner
Button
Keyboard
MiniKeyboard
ParentalControlPinPad
PinPad
TextEditBox
Lists and grids
CheckList
LabelList
MarkupGrid
MarkupList
PosterGrid
RadioButtonList
RowList
TargetList
TargetSet
TimeGrid
ZoomRowList
Sliding panels
GridPanel
ListPanel
Overhang
OverhangPanelSetScene
Panel
PanelSet
Media playback nodes
Audio
SoundEffect
Video
BrightScript
Components
roAppInfo
roAppManager
roAppMemoryMonitor
roArray
roAssociativeArray
roAudioGuide
roAudioMetadata
roAudioPlayer
roAudioResource
roBitmap
roBoolean
roByteArray
roCECStatus
roChannelStore
roCompositor
roDataGramSocket
roDateTime
roDeviceCrypto
roDeviceInfo
roDouble
roDsa
roEVPCipher
roEVPDigest
roFileSystem
roFloat
roFont
roFontRegistry
roFunction
roHdmiStatus
roHMAC
roHttpAgent
roImageMetadata
roInput
roInt
roInvalid
roList
roLocalization
roLongInteger
roMessagePort
roMicrophone
roPath
roProgramGuide
roRegex
roRegion
roRegistry
roRegistrySection
roRemoteInfo
roRenderThreadQueue
roRSA
roScreen
roSGNode
roSGScreen
roSocketAddress
roSprite
roStreamSocket
roString
roSystemLog
roTextToSpeech
roTextureManager
roTextureRequest
roTimespan
roUrlTransfer
roUtils
roVideoPlayer
roXMLElement
roXMLList
Events
roAppMemoryNotificationEvent
roAudioPlayerEvent
roCECStatusEvent
roChannelStoreEvent
roDeviceInfoEvent
roFileSystemEvent
roHdmiStatusEvent
roInputEvent
roMicrophoneEvent
roSGNodeEvent
roSGScreenEvent
roSocketEvent
roSystemLogEvent
roTextToSpeechEvent
roTextureRequestEvent
roUniversalControlEvent
roUrlEvent
roVideoPlayerEvent
Interfaces
ifAppInfo
ifAppManager
ifAppMemoryMonitor
ifArray
ifArrayGet
ifArrayJoin
ifArraySet
ifArraySizeInfo
ifArraySlice
ifArraySort
ifAssociativeArray
ifAudioGuide
ifAudioMetadata
ifAudioPlayer
ifAudioResource
ifBoolean
ifByteArray
ifCECStatus
ifChannelStore
ifCompositor
ifDateTime
ifDeviceCrypto
ifDeviceInfo
ifDouble
ifDraw2D
ifDsa
ifEnum
ifEVPCipher
ifEVPDigest
ifFileSystem
ifFloat
ifFont
ifFontRegistry
ifFunction
ifGetMessagePort
ifHdmiStatus
ifHMAC
ifHttpAgent
ifImageMetadata
ifInput
ifInt
ifIntOps
ifList
ifListToArray
ifLocalization
ifLongInt
ifMessagePort
ifMicrophone
ifPath
ifProgramGuide
ifRegex
ifRegion
ifRegistry
ifRegistrySection
ifRemoteInfo
Ifrenderthreadqueue
ifRSA
ifScreen
ifSetMessagePort
ifSGNodeBoundingRect
ifSGNodeChildren
ifSGNodeDict
ifSGNodeField
ifSGNodeFocus
ifSGNodeHttpAgentAccess
ifSGScreen
ifSocket
ifSocketAddress
ifSocketAsync
ifSocketCastOption
ifSocketConnection
ifSocketConnectionOption
ifSocketConnectionStatus
ifSocketOption
ifSocketStatus
ifSourceIdentity
ifSprite
ifString
ifStringOps
ifSystemLog
ifTextToSpeech
ifTextureManager
ifTextureRequest
ifTimeSpan
ifToStr
ifUrlTransfer
IfUtils
ifVideoPlayer
ifXMLElement
ifXMLList
Language
BrightScript language reference
Component architecture
Conditional compilation
Error handling in BrightScript
Expressions, variables, and types
Format strings
Global math functions
Global string functions
Global utility functions
Program statements
Reserved words
Runtime functions
Statement summary
Deprecated APIs
VIDEOS
Development courses
Getting started
Streaming overview
Creating an SVOD app: First steps
Roku development overview
Enabling Developer Mode
SceneGraph Developers: Build an App
Introduction to the course
Development setup
Core concepts
Creating the content feed
Creating a Grid Screen
Adding the Video Player
Debugging apps
Creating a Details Screen
Creating an Episodes Screen
Displaying video ads
Offering subscriptions
Deep linking
Certification testing
Demos
Developer Summit 2025
Catalog 2.0 Webinar
Developer Summit 2024
Enhanced Subscription Recovery Webinar
Roku Resource Monitor Memory Management Webinar
Roku Resource Monitor 3.0 Webinar
Roku OS 13.0 Developer Features Webinar
Roku Pay JWT-secured Push Notifications Webinar
Developer Summit 2023
Developer Summit 2022
Roku Resource Monitor Webinar
Roku Advertising Watermark Webinar
Roku Voice Webinar
Trickplay Thumbnail Webinar
Developer Summit 2021
Distributing an App in Germany Webinar
BrightScript Profiler Webinar
Developer Summit 2020
BrightScript Remote Network Debug Protocol
Automated app testing
Managing user access
App Tracing (with Perfetto) Webinar
Submitting a Roku Search feed
Platform features
Roku Pay: Simplifying customer payments
Running App Behavior Analysis testing on authenticated apps
Distributing apps in Europe
Roku Voice
The Roku Channel
The Roku Channel overview
Video on Demand
Premium Subscriptions
Roku Originals
Branded production guidelines
Alternative & documentary production guidelines
Scripted production guidelines
Alternative production legal guidelines
Scripted production legal guidelines
Branded delivery specifications
Alternative media delivery specifications
Scripted media delivery specifications
Spanish language - alternative media delivery specifications
Feature - scripted & alternative media delivery specifications
Acquired content - scripted media delivery specifications
Content delivery
Especificaciones para la ingesta
Avails and Committed Title List specifications
Linear
The Roku Channel live linear ingest specifications (OVP)
EPG on The Roku Channel
FAQs
The Roku Channel
The Roku Channel overview
Updated 5 days ago
Roku Voice
Video on Demand
Copy Page