Developing Twitch Extensions is currently a nontrivial process. Developers need to onboard, create their extension, set up their dev environment, design their extension, build their front end and back end, test it both locally and hosted, and then submit it for review. We are aware that significant friction exists in a number of these steps.
One of the ways we are addressing these issues, is by releasing an Extensions Developer Rig - a web app that runs locally on a developer’s machine. The Developer Rig is focused on simplifying and easing a variety of tasks during the extensions development lifecycle, including testing, getting started, and more. We believe this will enable developers to iterate more quickly and focus on building a great extension.
This RFC talks about Developer Rig V1. We are planning on regularly adding new features over the course of 2018.
Per developer feedback, we’ve identified two particular areas of pain in the process. The first is testing an extension generally. The second is easily getting started.
With this in mind, V1 of the Developer Rig focuses on the following:
Provide developers with the toolset to locally test their extension across the multiple views and roles that they will need to support on Twitch.
Provide a strong starting foundation for developers by auto generating the necessary front end scaffolding for an extension
The initial version of the Rig is a lightweight web app that runs in the browser. We will enable extension developers to test extensions end-to-end locally, leveraging Node 6+ and React. The Rig will render extension clients in a variety of contexts and views - i.e. broadcaster, viewer, linked and unlinked users, logged out users. There will be multiple anchor types supported by the Rig at launch, including support for testing and rendering overlay, panels, and mobile extensions. The Rig will also render the broadcaster configuration and live configuration views.
For mobile extensions in particular, developers will be able to set the resolution of the view to account for the different device screen sizes.
The following are mocks of the Rig showing multiple views displaying various Overlay or Panel views. Developers will also be able to output logs to a “Rig Console” during testing. Each of the views is labeled with the type of “user” in it, i.e logged in viewer, broadcaster etc. Developers will not need to be stream to test overlays in the Rig.
While the extension is running in the Rig, developers can interact with it just like an end user.
Developers will have the ability to add additional views and roles from Rig itself or from the command line. For example, developers can test how multiple viewers will experience input, in a side by side view.
Developers will be able generate “hello world” type code from the command line to get up and running quickly. We will continue to add additional samples in the future that can be easily pulled up in the Developer Rig.
The Rig will work on Windows, Mac, and Linux.
One of our tenets is to make the development process easier, but not restrictive. With that in mind, we do not intend to mandate that developers use our tools for their process. We are aware that other tools are available, and while we intend to provide a great first party experience, if other tools meet developer needs, we encourage their use.
We intend to continually update the Developer Rig with additional functionality and fixes.
Currently, the most common alternative is configuring an extension with a broadcaster whitelist and adding the developer’s twitch account to said whitelist. After that, submitting your extension and getting it into some testing state, either local or hosted. Then a developer must stream to their channel and test live on the Twitch Website. Then one is able to test their extension. Iteration time is significant with this workflow.
Other third parties have begun to build similar tools to support testing and scaffolding scenarios. While they come with a variety of trade offs, they are important contributors to the extensions development community.