Studio
Studio
Build an App for Studio

Package web apps that run inside Studio and Player.

ScreenWay apps are normal web apps delivered from Studio storage. They are configured per instance, rendered in iframes, and can appear in the App Store, Designer projects, and screen playback.

What an app is

A Studio app is a versioned bundle with an HTML entry point, metadata, assets, optional configuration schema, and optional locale files. The app runs inside an iframe, receives window.APP_CONFIG, and adapts to the size of its Designer or Player container.

Runtime

index.html is loaded for app instances and screen playback.

Configuration

config_schema defines the fields users edit in Studio.

Store assets

icon.svg, banner.png, and featured.png make the app discoverable.

Bundle layout

zip root
index.html
config.html
app.json
icon.svg
banner.png
banner.en.png
featured.png
featured.en.png
locales/de.json
locales/en.json
  • index.html is the playback entry point
  • app.json contains technical metadata and config schema
  • locales/de.json is required once a locales folder exists
  • banner.png is 1200x400, featured.png is 1920x1080
  • localized image variants use banner.en.png and featured.en.png
  • apps without locales stay in legacy mode

app.json

Keep display copy in locale files. Use app.json for stable technical fields: name, slug, category, content language, and configuration schema.

app.json
{
  "name": "Lobby Weather",
  "slug": "lobby-weather",
  "category": "utility",
  "version": "v1.0.0",
  "content_language": ["de", "en"],
  "config_schema": {
    "fields": [
      {
        "key": "locale",
        "type": "select",
        "default": "de",
        "options": [{ "value": "de" }, { "value": "en" }]
      },
      {
        "key": "location",
        "type": "text",
        "default": "Berlin"
      }
    ]
  }
}

Runtime config

Studio injects window.APP_CONFIG before your app logic runs. Keep a URL-parameter fallback for local testing, and read runtime translations from window.APP_CONFIG.locale.strings.

index.html
<script id="app-config"></script>
<script>
  let config

  if (window.APP_CONFIG) {
    config = window.APP_CONFIG
  } else {
    const params = new URLSearchParams(window.location.search)
    config = {
      location: params.get('location') || 'Berlin',
      transparentBackground: params.get('transparentBackground') === 'true'
    }
  }

  const runtime = config.locale?.strings || {}
  document.body.dataset.transparent = String(config.transparentBackground === true)
</script>
  • Check window.APP_CONFIG before reading URL parameters
  • Use transparentBackground to support overlays
  • Use percentage sizing inside iframes, not full-page assumptions
  • Design against a stable 1920x1080 base when using the app scaler

Publish flow

Create

Admin creates the app from a ZIP through Studio. app.json is required for new apps.

Version

New versions upload to storage under {slug}/{version}/ and can become current.

Validate

Studio validates locale files, config labels, content languages, and asset variants.