Project in three acts

Act 1: The client introduction

A public media organization delivering diverse content across multiple regions.

Act 2: The challenge unfolds

Increase viewership, stay competitive, and strengthen appeal to other TV channels to adopt their white-label solution.

Act 3: The happy finale

Oxagile stepped in — accelerating the Roku app’s load times, boosting responsiveness, expanding features, and delivering rock-solid performance and reliability.

Performance results that count

8 seconds
Is all it takes for the app to launch


Load speed improvement


Flawlessly render on the home screen with zero lag

Key factors that shaped our collaboration path

Inherited legacy codebase

The app was initially built with Roku’s Direct Publisher — a limited but quick, code-free way to launch channels. Once Roku announced its deprecation, the client’s app was migrated to SGDex, a framework offering a basic set of configurable components. By the time our team joined the project, the codebase had already become quite complex and heavily reliant on this structure.

Framework constraints

SGDex, built on BrighterScript, offers limited flexibility and wasn’t designed for API-heavy features or modern UX patterns. A full rewrite would have been costly and time-consuming, so we extended the framework with custom components — unlocking new capabilities without compromising the existing system.

White-label architecture

The app streams the client’s content and can be rebranded by other stations for their audiences. This multi-client model demanded flexible, modular design and functionality, ensuring easy customization and consistent performance across versions without code duplication or fragmentation.

Scalable enhancements under system limitations

Roku’s platform sets firm boundaries that shape how apps must be built. Our years-long experience focuses on working within those limits creatively and efficiently to deliver fast, reliable experiences, while respecting these constraints. This mindset allowed us to address the client’s challenges head-on and build solutions that truly work in practice.

App launch time optimization

The app exceeded Roku’s 15-second launch-to-home requirement due to overloaded home screens — some stations loaded 80+ content rails in one API request. Caching couldn’t help, as many rails were personalized and only general content is cacheable.

How Oxagile solved it

To speed up app launch, we restructured the data-fetching process. Instead of one large API call, we split it into five:

  • One request for global, cacheable content
  • Four separate requests for personalized rails

All requests run in parallel, so total load time depends only on the slowest one.

This change allowed back-end caching for general content and significantly improved responsiveness. As a result, stations with 80+ rails now load in about 8 seconds — nearly twice as fast as before.

Complete authentication flow development

Roku doesn’t allow sign-up via QR codes or external devices — the method the client previously relied on. With little time to pivot, they needed to build:

  • ✔ Sign-in/sign-up experience and “Forgot Password” recovery
  • ✔ Onboarding with subscription prompts
  • ✔ Donation offers for new and existing users
  • ✔ Persistent access to legal terms and additional regional agreements with acceptance logic
How Oxagile solved it

We built the entire user authentication and onboarding flow from scratch, ensuring full compliance with Roku certification requirements, including:

  • RFI screen support — Prompts users to share Roku account data on sign-in/up screen
  • Voice input support — Allows dictating emails, passwords, and PINs using Roku remote voice input
  • Mobile app keyboard support — Lets users input text via Roku’s mobile app instead of the remote
  • Automatic account linking — syncs sign-in across all Roku devices for the same user account
Home screen refactoring

Some channels contain over 80 content rails, each with numerous images. Roku devices, being relatively limited in memory and processing power, struggled to load all of this content at once. As a result, images could be pushed out of memory before display, causing flickering or visible gaps on the screen — significantly degrading the user experience.

How Oxagile solved it

We built a custom home screen with lazy loading, allowing content to load progressively as users scroll. This approach delivered a smoother, more stable experience by:

  • Reducing memory usage
  • Preventing flickering
  • Eliminating missing images
  • Avoiding device overload
Ad handling logic

The client needed to support pre-roll ads for unsubscribed users. However, the requirement went beyond simply showing ads — the key challenge was to implement logic ensuring that users don’t see the same pre-roll ad twice for the same piece of content.

How Oxagile solved it

We implemented a smart ad tracking system that logs ad views per user and per content item. This ensures:

  • Pre-roll ads are shown only once per piece of content
  • Users aren’t shown the same ad again when resuming partially watched content
  • A smoother, less repetitive viewing experience

For example, if a user starts a movie, sees the pre-roll ad, but doesn’t finish it, they won’t see that ad again when they return to continue watching.

What’s your Roku story?

Whether you're facing strict platform constraints, legacy codebases, or the complexity of white-label scalability — we’ve been there. And we’ve conquered it all.
Shall we do the same for you?

Let's start talking!