Samples
The Roku Developers GitHub repo provides a large selection of sample app code. Repos from SceneGraph nodes and implementations, to full integrated master sample apps, are briefly described below.
After mastering the basics, you might want to look next at the following SceneGraph examples.
Roku SceneGraph (RSG) components: Building block components for configuring and rendering the app UI from scratch (refer to the scenegraph-master-sample)
SceneGraph Developer Extensions (SGDEX) views: Full screen components to save the effort of building from scratch (refer to the SceneGraphDeveloperExtensions)
Featured Samples
| Category | GitHub link | Description |
|---|---|---|
| Basic | hello-world | Simple sample app to try out sideloading |
| samples | More elaborate sample apps for learning | |
| SceneGraph | scenegraph-master-sample | Guide to building a basic, high-performance Roku app that passes certification |
| SceneGraphDeveloperExtensions | Pre-built, reusable Roku SceneGraph (RSG) components to enable rapid development of apps that follow a consistent UX paradigm | |
| RAF4RSG-sample | Sample demonstrating the Roku Advertising Framework in SceneGraph | |
| tv-safe-zone-overlay | Function to overlay the current UI in a SceneGraph scene with a transparent safety zone overlay | |
| simple-videoplayer-channel | SimpleVideoPlayer app remastered in SceneGraph | |
| sgnodes-all-demo | Demonstrates how the sgnodes all SceneGraph debug console command (port 8080) returns the reference counts held by the Roku OS (osref) and the app itself (bscref); used in conjunction with the console debugger |
|
| Advanced | hero-grid-channel | Sample app with sliding hero row and a grid of content below |
| tv-safe-zone-channel | App that demonstrates the TV safe zones for Titles and Action in the UI | |
| trickplay-samples | Samples that use BIF/thumbnails during trick play | |
| custom-playback-channel | List of content displayed with video continuously playing | |
| multi-live-channel | App example of live TV in addition to multiple live streams support | |
| Authentication | on-device-authentication | Authenticate customers and validate their access to content when they sign in to an app from their Roku devices, without requiring them to visit an external webpage |
| Voice | transport-control | Handle voice commands in an app |
| dynamic-voice-enabled-keyboards | Create and configure dynamic voice-enabled keyboards | |
| Dialogs | standard-dialog-framework | Create built-in and custom dialogs with Roku's Standard Dialog Framework |
| Deep Linking | deep-Linking-samples | Learn about Deep Linking and roInput Messaging |
| Podcast | podcast-player-channel | Fully working podcast player app - accepts an MRSS feed and parses artwork and playlist |
| ChannelStore | channelstore-node-tvod-sample | Sample demonstrating how to set up transactional purchases using the ChannelStore node |
| rochannelstore-tvod-sample | Sample demonstrating how to set up transactional purchases using the roChannelStore component | |
| Audio | dolby-audio-sample | Collection of Dolby test content available in different streaming protocols |
| Screensaver | animated-screensaver | Screensaver demonstrating poster animations across the screen |
| home-screensaver | Screensaver that displays the icons of installed apps | |
| fading-screensaver | Screensaver demonstrating fading animations | |
| quadrant-screensaver | Screensaver demonstrating a quadrant transition animation | |
| Testing | unit-testing-framework | Tool for automating and testing Roku apps |
| automated-channel-testing | Roku Automated App Testing: Selenium-based WebDriver + Robot Framework + JS Framework + Samples | |
| notification-receiver-sample | Sample application in Java for receiving notifications from Roku | |
| remote-debugger | Python-based remote debugger demonstrating the BrightScript debug protocol | |
| debug-protocol-vscode-ext-beta | VSCode extension for debugging apps with the BrightScript remote network debug protocol | |
| manifestData-sample | Sample showing how to use the Video node's manifestData field to detect the periods in a DASH manifest before they are played back |