Use either panel entry point:
- in-app route:
/extension/panel - standalone artifact build:
npm run build:extension:package
The in-app route is the fastest local UI path. The standalone build is the Hosted Test artifact path.
Add these values before testing the panel end to end:
TWITCH_EXTENSION_CLIENT_IDTWITCH_EXTENSION_SECRETVITE_TWITCH_EXTENSION_API_BASE_URL
VITE_TWITCH_EXTENSION_API_BASE_URL should point at the app origin that serves /api/extension/*.
Run the local app:
npm run devBuild the standalone panel artifact:
npm run build:extension:packageBuild against a deployed app origin:
VITE_TWITCH_EXTENSION_API_BASE_URL=https://your-app-host npm run build:extension:packageThe upload zip is written to:
output/twitch-extension/request-bot-panel-YYYYMMDD-HHmmss.zip
The zip contains index.html, assets, and backgrounds at the archive root for Twitch Hosted Test upload.
Without Twitch Local Test:
- open
/extension/panel - confirm the waiting state before Twitch authorization is available
- validate the local UI states and local API responses
With Twitch Local Test:
- Run the app locally or through a tunnel.
- Make
APP_URLandVITE_TWITCH_EXTENSION_API_BASE_URLmatch the origin Twitch can reach. - Point the extension panel view at the app route or the built artifact URL.
- Verify:
- unlinked viewers can read the queue
- linked viewers can search and submit requests
- blocked viewers stay read-only
- VIP token balances and request costs are shown
- edit and remove work for the linked viewer
- owner controls appear for the channel owner
- moderator controls follow the configured channel permissions
The panel identity-share flow does not create a normal website session.
The website recognizes the viewer only when the browser already has the standard RockList.Live session cookie. Otherwise the viewer still signs in through the normal website OAuth flow.