Roku App Development Concepts

Developer Program

The Roku Developer Program is intended for BrightScript developers. Signing up for this program isn’t typically required for app developers.

If you need to get involved in client development, we recommend signing up for the program.

Server development

Most Cloud developers work on the server, because that’s where most of the application code of a Cloud app is located.

Server development involves coding in C++, React Native, or both.

When a developer runs a server build (for example, youi-tv build -p osx -d YI_BUILD_CLOUD_SERVER=ON), the build process adds:

  • An HTTP server, for Roku clients to connect to.
  • The Cloud SDK, for the server to synchronize screens with the Roku client. The application code uses the Cloud SDK to communicate and synchronize state with the client.

A diagram of the server side of a You.i Roku Cloud app.

Client development

Client development involves coding in the Roku native development language, called BrightScript. The client code provided in the You.i Platform provides generic functionality, including forwarding remote control button presses to the server and updating the screen when the server sends visual content. Ideally, the generic functionality is sufficient, however, there are times (like when adding third-party libraries) when you’ll need to work in BrightScript to modify the client code.

BrightScript development must be done with caution and planning. The client code in your project, found in the <project>/client folder, is copied from a You.i Platform template folder when you initialize your project (using the command youi-tv init <project>). This client code is specific to the You.i Platform release. Any project-specific modifications to client code will require manual merging whenever you migrate to a new version of You.i Platform.

The You.i Platform template files for the client are bundled, along with other resource files, into a zip file called RokuClient.zip. The zip file is used for side-loading onto a Roku device.

Further details about the RokuClient.zip file:

  • The zip file is built in the <project>/client folder, using the command youi-tv roku-client <options>.
  • To set the server IP address and port, in the manifest, to your local development machine, run youi-tv roku-client -l.
  • To set a specific server address in the manifest, run youi-tv roku-client --host <IP address[:port]>. The --host option overrides -l option.
  • The zip file can be side-loaded onto any Roku device with Developer Mode enabled.

Roku side-loading

Side-loading refers to the action of uploading an app directly to a Roku device, instead of adding the app as a new channel from the Roku Channel Store. Side-loading is useful in the initial phases of Cloud app development, for faster testing turnaround.

The recommended method for side-loading is to run the youi-tv command in a terminal window:

`youi-tv roku-client -s <roku device IP address>`

The other option is to connect with the built-in Roku web interface and use the Development Application Installer.

After side-loading the client onto the Roku device:

  • The zip file is unpacked by the Roku device and the client code is executed.
  • The client connects to the server, using the specified IP address and port from the manifest file.
  • The server performs a handshake with the client and sends the client the first application screen.