Roku toolkit library providing a ViewBuilder, full UI lifecycle with focus handling and many core features, plus MVI-based state management.
npm install rotor-framework




Rotor is a modular, ViewModel-first UI framework for Roku applications built with BrighterScript and SceneGraph. It is lightweight and designed to intuitively speed up development time while simplifying both the implementation and long-term maintenance process. It features a rich ViewBuilder system and a Roku-friendly implementation of the MVI (Model-View-Intent) design pattern. It helps developers structure large-scale apps with reusable components, state-driven logic, and optimized rendering.
---
- ViewBuilder system: Declarative and extensible view construction with a flexible, code-based template system, automatic full lifecycle management, and a virtual node tree abstraction.
- Roku-friendly MVI design pattern: Predictable state, clear separation of concerns, and cross-thread compatibility.
- Component-based UI: Isolated, reusable UI widgets and view models.
- i18n support: Locale-aware interface with flexible language resource injection.
- Integrated Animate Library
---
Want to get started quickly? Check out rotor-starter - a ready-to-use project template with Rotor Framework pre-configured, sample components, and best practices built in.
---
Rotor Framework requires BrighterScript v1. Install the latest version:
``bash`
npm install --save-dev brighterscript@next @rokucommunity/bslint@next
Manual installation:
1. Download the latest rotor-framework.zip from GitHub Releasessource/
2. Extract the ZIP into your project's directory (this will create a rotor-framework/ folder)
3. Import Rotor in your main file:
ROPM install:
- Note: You must install without prefix by adding this to package.jsonRotor
- Don't worry everything is in the namespace by default, so this is the only name reserved by the framework.
`bash`
ropm install rotor-framework
`json`
"ropm": {
"noprefix": ["rotor-framework"]
}
---
`vb
import "pkg:/source/RotorFramework.bs"
frameworkInstance = new Rotor.Framework()
frameworkInstance.render([
{
id: "helloLabel", ' optional
nodeType: "Label",
fields: {
text: "Hello World!",
color: "#CCCCCC"
}
}
])
``
---
You can find 🌱 symbols in all documentation pages. These symbols link to AI-optimized summaries of the respective documentation.
📖 Read more about token savings
---
- Framework Initialization - Configuration, task synchronization
- ViewBuilder Overview - High-level architecture and core concepts
- Widget Reference - Complete Widget properties, methods, and usage patterns
- ViewModel Reference - Complete ViewModel structure, lifecycle, and state management
- ViewBuilder Fields Plugin - Field management and binding
- ViewBuilder FontStyle Plugin - Typography and styling
- ViewBuilder Observer Plugin - State observation patterns
- ViewBuilder Focus Plugin - Focus management system
- Cross-Thread MVI design pattern - State management across threads
- Internationalization support - Locale-aware interface implementation
---
- Roku SceneGraph (firmware 10.5+ recommended)
- BrighterScript V1
---
Rotor Framework is available under a dual license model:
The source code is licensed under the Apache License 2.0. This is a permissive open source license that allows you to:
- Use Rotor Framework in commercial and non-commercial applications
- Modify the source code for your own purposes
- Distribute your applications without sharing your application source code
- Include Rotor Framework in proprietary products
The Apache 2.0 license requires you to:
- Include a copy of the license in distributions
- Provide attribution in a NOTICE file (if included) or documentation
- State any modifications you made to the framework source files
A separate commercial license is available for organizations that require:
- Use of the "Rotor Framework" trademark in product branding or marketing
- White-label or OEM distribution arrangements
- Resale or redistribution of the framework as a standalone product
- Official support, warranty, or indemnification
For commercial licensing inquiries, please contact the maintainer.
"Rotor Framework" is a trademark. Use of the name is governed by our Trademark Policy, which is separate from the code license. In summary:
- You may state that your product is "built with Rotor Framework"
- You may not imply official endorsement or use the name in your product branding without permission
---
Attribution is not required under the Apache 2.0 license for applications built with Rotor Framework. However, if you find this framework useful, we encourage you to include a voluntary attribution such as:
> Built with Rotor Framework
or
> Powered by Rotor Framework
This helps others discover the project and supports the open source community. Thank you for considering it.
---
Copyright © 2025-2026 Balazs Molnar
---