Quality assurance

Security

When we imagined the plugins SDK, security was a requirement from the beginning.
We ensure plugins and users security at multiple levels :

Core

As detailed in the how it works section, a plugin is simply Javascript code executed inside of a sandboxed iframe.

This means that plugins inherit from iframe security and more specifically their sandbox attribute.

Scope

Plugins are scoped to a Room and cannot access information outside of the Room context.
They cannot interact with other plugins or other events.

Publication

The entire plugins publication is restricted by an API key that is specific to your organization and following the JWT security standard. That, on top of SSL protocol ensures the integrity of the plugins you publish.

Code

As stated above, your code is executed inside a sandbox. That means that it is not shared with Livestorm core and therefore its scope and variables are not altered.

Furthemore, the origin of the iframe is null, meaning that you cannot directly call Livestorm HTTP endpoints. This prevents developers from accessing data we do not intend to share with plugins.

Plugins being executed by a browser, keep in mind that the code of a plugin can obviously be retrieved and read by the client, via the console of your browser (just like any website you visit).

Data consent

Just like an app would on a phone, plugins have the ability to access some information such as (user list, messages, event name, and potentially streams if a camera effect is activated).

Of course, all the data accessible by a plugin is data users consented to share with Livestorm.

Plugins installed from the marketplace are verified by Livestorm and we are responsible for their actions in the room.

However, when installing an open source plugin, you become responsible for its code and actions inside the room. For instance, you should always make sure that plugins do not share unwanted data to third parties by making outside network calls.

Performance

Since a plugin executes Javascript code on the browser of clients, you should pay attention to performance in order to ensure that plugins have a limited impact to the user CPU and GPU.

For instance, Streams API may be doing some GPU intensive tasks to detect things inside streams, or add filters : this is something that should be heavily monitored and tested on multiple browsers.

UX and UI guidelines

When developing a plugin, you are given access to APIs that allow you to completely customize some parts of the Room (streams, modals, chat, etc).

Even though we willingly allow developers to customize their Livestorm events, it remains mandatory that plugins respect Livestorm's UI and guidelines.
These guidelines will be verified whenever you want to publish your plugin to the marketplace.
Here are a few tips that we advise you to follow:

  • We strongly recommend you to use our UI kit when building HTML components like buttons, messages, typos etc.
  • Use Livetorm's colors provided in the UI Kit. Unless you're building a plugin that interacts with another app and you'd like to use this app's colors, avoid using other colors that aren't part of Livestorm's branding.
  • Don't use images that are hosted on other websites. If these images are taken down by the website, they will eventually be broken in Livestorm. Upload them beforehand using Livestorm's asset command.