Free Screenly Player with every Business or Enterprise yearly plan. How it works →

September 21, 2026

Stage and production both deploy from screenly.yml

initialize and update read screenly.yml in stage and production alike. screenly_qc.yml isn’t read anymore, whether or not you pass edge_app_id.

That also means an app with only screenly.yml can run its first initialize in stage. Leave edge_app_id out for that first run, then set the environment’s variable to the id of the app it created. Every run after that passes the id:

- uses: Screenly/edge-apps-actions/[email protected]
  with:
    screenly_api_token: ${{ secrets.SCREENLY_API_TOKEN }}
    environment: stage
    edge_app_id: ${{ vars.STAGE_EDGE_APP_ID }}

The id you pass wins over any id in screenly.yml, so 1 manifest serves both environments.

If this affects you: if your repo has a screenly_qc.yml, move to 1 manifest before you bump your pin to v26.9.1. Copy anything that differs into screenly.yml and delete screenly_qc.yml. Add the repository variables STAGE_EDGE_APP_ID (the id from screenly_qc.yml) and PRODUCTION_EDGE_APP_ID (the id from screenly.yml), and pass edge_app_id: ${{ vars.STAGE_EDGE_APP_ID }} to your stage steps and edge_app_id: ${{ vars.PRODUCTION_EDGE_APP_ID }} to your production steps.