There are several features from the BrightScript language and components that are still not supported, or just partially supported, some are planned to be implemented, others will stay as mock objects (for compatibility), and some are considered out of scope of this project. Below is the current list of those limitations:
- RSG (Roku SceneGraph) SDK components are not currently supported.
- The following components are also not implemented yet:
roAudioGuide
roDataGramSocket
roDSA
roHdmiStatus
roHttpAgent
roMicrophone
roRSA
roSocketAddress
roStreamSocket
roTextToSpeech
roTextureManager
roTextureRequest
- Audio playback via
roAudioResources
androAudioPlayer
is implemented, but with some limitations:- Only one instance of
roAudioPlayer
is supported, if more are created those will share the content playlist. - If the
roAudioPlayer
instance is destroyed the audio keeps playing, make sure to call.stop()
before discarding the object. - No
Timed Metadata
support.
- Only one instance of
- The component
roAudioMetadata
only supports MP3 (for now) and the manifest entryrequires_audiometadata=1
needs to be used. - The component
roImageMetadata
only supports JPEG images (for now). - Video playback via
roVideoPlayer
is implemented, but with some limitations:- If the
roVideoPlayer
instance is destroyed the video keeps playing, make sure to call.stop()
before discarding the object. - The following methods are not supported, implemented as mock:
setCGMS
,setMaxVideoDecodeResolution
,setTimedMetadataForKeys
,getCaptionRenderer
- Check what formats (container and codec) can be used on each browser, using
roDeviceInfo.canDecodeVideo()
, to make sure your video can be played. - DASH streams are not yet supported.
- If the
- The component
roUrlTransfer
is implemented with basic functionality but with the following limitations:- To make a web app access urls from domains other than the one it is hosted, requires the server called to respond with the header
Access-Control-Allow-Origin
, read more. - The async methods are actually synchronous and evaluated when
WaitMessage
orGetMessage
are called. - Custom/Self-Signed SSL certificates are not supported, the engine will use default browser client certificate database.
- As custom certificates are not supported these methods are just mocked and do nothing:
EnablePeerVerification
,EnableHostVerification
,SetCertificatesDepth
. - Cookies are only partially supported, if
EnableCookies
is called andEnableFreshConnection
is set tofalse
, then Cookies from previous calls will be preserved. - The other Cookies related methods are just mocked and do nothing:
GetCookies
,AddCookies
,ClearCookies
. - The following methods are also only mocked but do nothing:
EnableResume
,SetHttpVersion
andSetMinimumTransferRate
. - The method
GetTargetIpAddress
fromroUrlEvent
always returns an empty string.
- To make a web app access urls from domains other than the one it is hosted, requires the server called to respond with the header
- The component
roAppMemoryMonitor
will only return measured data in Node.JS and Chromium browsers. For browsers the memory heap info only accounts for the main thread, as WebWorkers do not have support forperformance.memory
API. - The
roInput
deep link events are supported, but the events related to Voice Commands are not. - The
roFileSystem
events are not yet implemented. - The global functions
Eval()
,GetLastRunCompileError()
andGetLastRunRuntimeError()
are not available. - The string
mod
cannot be used as variable or function parameter name, because it conflicts with remainder operatorMod
(Roku devices allows that). - SDK 1.0 deprecated components are not supported, but will be implemented in the future as a legacy apps preservation initiative.
- RAF (Roku Ads Framework) object
Roku_Ads
is mocked with the most common methods available returning static values. - Channel Store components (
roChannelStore
androChannelStoreEvent
) are mocked with support for thefakeServer()
feature. - Several components have their methods and events mocked, they return constant values to prevent crash. Those are mostly related to device behaviors that are not possible to replicate in a browser environment or simply not applicable to the engine.
- Roku OS User Interface.
- Roku Channel Store features.
- Video playback with Ads.