For AI agents: the docs index is at https://developer.roku.com/dev/llms.txt. Append .md to any documentation page URL to get its markdown version.
Jump to Content
Home
Guides
Guides
Jump to Content
Guides
Components types
FEATURES
Roku platform overview
Set up your Roku account
User access management
Email preferences
Monetization
Subscriptions and one-time purchases
Publisher payouts
Enrolling in the Roku Partner Payouts Program
Video advertisements
Content engagement
Streaming Store
Roku Search
Self-serve app promotion tool
Roku Voice
Legal
SPECIFICATIONS
Specifications overview
Streaming specifications
Roku OS support for DASH-IF
DRM & content protection
Hardware specifications
Roku Search feed (JSON)
Streaming Store graphics
DEVELOPER
Getting started
How apps work
App development models
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
Security on the Roku platform
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
BrightScript style guide
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
Profiles
Kid & Teen Mode
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
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 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
Signup requirements and best practices
Sign-in requirements and best practices
Roku Pay reports
Authentication
On-Device Authentication
Automatic Account Link
Rendezvous linking
Roku Analytics Component Library (RACL)
Debugging
Capturing and decrypting SSL packets
BrightScript debug protocol
Publishing
Developer Dashboard
Packaging Roku apps
App Publishing
Analytics
App analytics reports
App Engagement Report
App Health Report
App Stability Report
Viewership Summary Report
Sales reports
Transaction Report
Sales Activity Report
Payout Audit Report
Tax Withholding Report
Cancellation Offers Report
Cloud Emulator
RCE API reference
Security
Release notes
Developer Tools
Roku app tracing (with Perfetto)
Roku Resource Monitor
Using Roku Resource Monitor in Data Collection Mode
Roku Resource Monitor session file specification
External Control Protocol (ECP)
Roku Remote Tool
Roku SceneGraph XML schema (XSD)
Eclipse IDE support
SGDEX
RALE
BrightScript Profiler
BrightScript Profiler file format specification
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
Accessing SceneGraph nodes
Release notes
Reverting Roku beta OS to production on devices
Roku Advertising Framework release notes
Development partners
RSG 2.0 SDK documentation
Getting started
RSG 2.0 SDK overview
Getting started with the RSG 2.0 SDK
Examples
Baseline app example
Baseline app example (pipeline test)
Anchor node example
Extends example (focus and key handling with anchor nodes)
Dynamic component example (@roku-sdk/solid)
Class transpilation example
Pitfalls example
Focus boundary example apps
Focus boundary SG components example
Focus boundary SG tree example
FocusableGroup example
KeyHandler example
FlexGrid example apps
FlexGrid example: Showcase
FlexGrid example: Cowboy TV
FlexGrid example: Fantasy TV
Pooled item row example
Slideshow example
ChannelStore signup/signin example
Ads example
Runtime showcase example
Stack decoder examples
Master sample example
Two cowboys example
Showcase example
Showcase app: complete catalog
Showcase app: AI reference map
Installing @roku-sdk/* packages from npmjs.com
Directory layout
rk CLI
rk create
Core concepts
App configuration options (roku-config.ts)
Manifest
Flexible manifest processing
Effects
Dynamic Component Libraries (DCL)
Tween value-shape contract
Guides
Focus management
Focus boundary
Modal boundary
FocusableGroup
KeyHandler
FlexGrid
FlexGrid API usage
Images
Importing and processing static images
RSG testing library
Runtime and debugging
Fetch: deviations from the WHATWG standard
Forwarding exceptions to monitoring services
Mapping runtime errors to TypeScript source code
App profiling
Perfetto profiling
rk
Debugging Roku apps with AI
rk decode-stack
rk logs
rk perfetto
Advanced
Workspace mode
Pipeline extension API
Extending the device pool
Asset tree-shaking
Importing XML components with type safety
rk
rk build
rk dcl
rk dev
rk device
rk device lease
rk device pool
rk ecp
rk gen-types
rk keysequence
AI integration via MCP (rk mcp)
rk device package
rk plugins
Roku Cloud Emulator devices
rk server
rk server managed lifecycle (phase 0 contract)
rk workflow navigation
Knowledge base
AnchorNode ↔ base-component field-name collisions
Console polyfill
Js debug sourcemapurl cross directory
Rsg ts pitfalls
Solid reactivity
Release notes
Release notes
Upgrade notes for partners
REFERENCES
Reference overview
SceneGraph
Component functions
init()
onKeyEvent()
Xml Elements
children
component
<interface>
script
Node
Scene
Abstract nodes
AnimationBase
ArrayGrid
DynamicKeyboardBase
LabelBase
Renderable nodes
Effect
Poster
Rectangle
SimpleLabel
Label nodes
InfoPane
Label
MonospaceLabel
MultiStyleLabel
Animation nodes
AnimatedImage
Animation
ColorFieldInterpolator
FloatArrayFieldInterpolator
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
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
roAnimatedImage
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
roPerfetto
roProfile
roRegex
roRegion
roRegistry
roRegistrySection
roRemoteInfo
roRenderThreadQueue
roRSA
roScreen
roSGNode
roSGScreen
roSocketAddress
roSprite
roStreamSocket
roString
roSystemLog
roTextToSpeech
roTextureManager
roTextureRequest
roTimespan
roUrlTransfer
roUserInfo
roUtils
roVideoPlayer
roWebSocket
roXMLElement
roXMLList
Events
roAnimatedImageEvent
roAppMemoryNotificationEvent
roAudioPlayerEvent
roCECStatusEvent
roChannelStoreEvent
roDeviceInfoEvent
roFileSystemEvent
roHdmiStatusEvent
roInputEvent
roMicrophoneEvent
roSGNodeEvent
roSGScreenEvent
roSocketEvent
roSSEvent
roSystemLogEvent
roTextToSpeechEvent
roTextureRequestEvent
roUniversalControlEvent
roUrlEvent
roVideoPlayerEvent
roWebSocketEvent
Interfaces
ifAnimatedImage
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
ifPerfetto
ifProfile
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
ifUserInfo
IfUtils
ifVideoPlayer
roWebSocket
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
RSG 2.0 SDK
Components
AnimatedImage
Animation
Audio
BifDisplay
BlendedBusySpinner
BoundingTracker
BUSY_SPINNER_DIMENSIONS
BusySpinner
Button
ButtonGroup
ButtonRow
ChannelStore
CheckList
ColorFieldInterpolator
Container
ContentNode
CustomKeyboard
Dialog
DynamicKeyboard
DynamicKeyGrid
DynamicMiniKeyboard
DynamicPinPad
Effect
FloatFieldInterpolator
Focusable
FocusableGroup
Font
getBusySpinnerHeight
getBusySpinnerWidth
Glyphs
Group
INodeProps
installEffectGradientDevValidation
KeyHandler
Label
LabelList
LayoutGroup
ListPanel
MarkupGrid
MarkupList
MaskGroup
MultiStyleLabel
Overhang
Panel
PanelSet
Poster
PosterGrid
ProgressBar
RadioButtonList
Rectangle
ResolutionProvider
RowList
RsgPalette
scaleForDeviceResolution
Scene
ScrollableText
ScrollingLabel
SequentialAnimation
SimpleLabel
SoundEffect
StandardDialog
StandardDialogNext
StandardKeyboardDialog
StandardMessageDialog
StandardPinPadDialog
StandardProgressDialog
StdDlgActionCardItem
StdDlgBulletTextItem
StdDlgButton
StdDlgButtonArea
StdDlgContentArea
StdDlgCustomItem
StdDlgDeterminateProgressItem
StdDlgGraphicItem
StdDlgItemGroup
StdDlgKeyboardItem
StdDlgMultiStyleTextItem
StdDlgProgressItem
StdDlgSideCardArea
StdDlgTextItem
StdDlgTitleArea
TargetGroup
TargetList
TargetSet
TimeGrid
TrickPlayBar
Tween
useResolutionContext
Vector2DFieldInterpolator
Video
VideoContentNode
VoiceTextEditBox
ZoomRowList
Components types
Flex-grid
_resetGlobalHooksForTest
binarySearchFloor
buildCumY
buildUniformCumX
buildVariableCumX
clearDirty
composeHorizontalStrategy
computeBobRowReserve
computeBobY
computeDataRow
computeEndZoneStartRow
computeScrollYForRow
computeTotalContentHeight
computeUniformPoolSize
computeVariablePoolSize
computeVirtualX
createBobPlugin
createDirectionalPinnedFocusXExtension
createEmptyPlaceholderPlugin
createFlexGrid
createFlexGridEngine
createFocusHighlightPlugin
createGridStore
createNavigationController
createPerfPlugin
createPinnedFocusXExtension
createPool
createRowBackdropPlugin
createRowCardsClipPlugin
createRowTitlePlugin
createScrollXOffsetExtension
createSmoothScrollBridgePlugin
defineFlexGrid
findNearestSortedIndex
fixedFocusStrategy
fixedFocusWrapStrategy
floatingFocusStrategy
floatingFocusYStrategy
gridScrollMs
isGridSmoothScrolling
isPerfGridPlugin
matchRow
matchRowWhen
resolveFocusConfig
resolveGridPlugins
setNumRows
setRow
setRows
withZoomFocus
Flex-grid types
Navigation
Bubble
computeSGPath
createBoundaryState
createFocusRelay
createKeyPressCaptureRegistry
FocusBoundary
focusIdLabel
FocusPathContext
FocusRelayProvider
ModalBoundary
onPress
onRelease
RootFocusBoundary
ScreenControllerContext
ScreenControllerProvider
useFocusable
useFocusActions
useFocusRelayTarget
useModal
Navigation types
Runtime
__resetWhenFontReadyForTests
createFontReady
createSubtleCrypto
Crypto
Device info
getAppInfo
getAppMemoryMonitor
getAudioGuide
getComponentLibraryFactory
getFileSystem
getFontMeasure
getHdmiStatus
getPerfetto
getRandomBytes
getRandomValues
getRegistry
getSignalBeacon
getTextToSpeech
getVoiceDictation
randomUUID
Subtle
useAppMemoryMonitor
useCec
useFileSystem
useHdmiStatus
useInput
useLaunchConfig
useLifecycle
useVoiceCommands
useVoiceDictation
whenFontReady
Runtime types
MCP tools
MCP list_devices
MCP get_device_ip
MCP get_device_dev_id
MCP device_start
MCP device_stop
MCP add_device
MCP update_device
MCP remove_device
MCP activate_device
MCP clear_active_device
MCP update_default_auth
MCP device_reboot
MCP device_check_update
MCP build_app
MCP deploy_app
MCP sideload_app
MCP get_roku_config
MCP stop_dev_session
MCP package
MCP dcl
MCP ecp
MCP capture_screen
MCP logs
MCP decode_stack_trace
MCP perfetto_enable
MCP perfetto_start
MCP perfetto_stop
MCP debug_session_create
MCP debug_session_end
MCP debug_session_status
MCP debug_session_update
MCP debug_stacktrace
MCP debug_state
MCP debug_eval
MCP debug_breakpoint_set
MCP debug_breakpoint_remove
MCP debug_breakpoints_list
MCP debug_exception_breakpoints_set
MCP debug_continue
MCP debug_step
MCP debug_stop
MCP debug_console_read
MCP debug_errors_read
MCP debug_console_clear
MCP cdp_session_create
MCP cdp_session_update
MCP cdp_session_end
MCP cdp_eval
MCP cdp_status
MCP cdp_heap_usage
MCP cdp_profile_start
MCP cdp_profile_stop
MCP cdp_heap_snapshot
MCP cdp_heap_sampling_start
MCP cdp_heap_sampling_stop
MCP cdp_source_list
MCP cdp_source_get
MCP cdp_source_grep
MCP cdp_source_resolve
MCP cdp_console_read
MCP cdp_errors_read
MCP cdp_console_clear
MCP cdp_console_clear_console
MCP cdp_console_clear_errors
MCP cdp_debugger_pause
MCP cdp_debugger_resume
MCP cdp_debugger_step_over
MCP cdp_debugger_step_into
MCP cdp_debugger_step_out
MCP cdp_breakpoint_set
MCP cdp_breakpoint_remove
MCP cdp_breakpoint_list
MCP cdp_debugger_state
MCP cdp_debugger_eval_frame
MCP dap_reconnect
MCP dap_threads
MCP dap_thread_select
MCP dap_thread_stop_reason
MCP dap_variables
MCP get_server_health
rk CLI
rk build
rk dev
rk ecp
rk keysequence
rk sideload
rk update-ai-context
rk create
rk setup
rk decode-stack
rk package
rk gen-types
rk version
rk cdp
rk debug
rk logs
rk perfetto
rk dap
rk dcl
rk device
rk server
rk mcp command
rk environment variables
rk HTTP
HTTP devices
HTTP cdp
HTTP dap
HTTP dcl
HTTP decode-stack
HTTP build
HTTP package
HTTP ecp
HTTP screen
HTTP config
HTTP server
HTTP mcp
HTTP logs
HTTP perfetto
HTTP debug
section-hashes
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 2026
Doc Portal Upgrades Webinar
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
Roku Content Partner Portal
Dashboard
Analytics
Key features
Title tracking status
Creatives
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/doc/special - media delivery specifications
Acquired content - scripted media delivery specifications
Content delivery
Especificaciones para la ingesta
Avails and Committed Title List specifications
FVOD submissions
Content tags and metadata
Linear
The Roku Channel live linear ingest specifications (OVP)
EPG on The Roku Channel
FAQs
REFERENCES
RSG 2.0 SDK
Components
Components types
Copy Page