Skip to main content

WebGL build structure

The zip must contain index.html and a *.loader.js file:
A single wrapping folder is fine — if Unity exports to WebGLBuild/, the upload strips that prefix for you. What fails is a zip with several top-level folders and no index.html inside any single one. __MACOSX/ and ._ entries created by macOS are ignored automatically.
Missing either index.html or a *.loader.js file is rejected with Invalid build: missing index.html or loader file.

Archive limits

These are checked before extraction, so an oversized build fails fast rather than part-way.

Upload via Developer Portal

  1. Developer Portal → your game → Builds → Upload Build
  2. Select platform (WebGL, iOS, Android)
  3. Set version ID — use semantic versioning (1.0.0) or dates (2026-08-01)
  4. Add release notes — describe what changed and how to test
  5. Upload zip

Upload via CI/CD

Your pipeline uses the same three steps the portal uses, authenticated with your developer API key. The zip goes straight to storage, so its size is not limited by the API.

1. Ask for a signed upload URL

The URL is valid for 20 minutes. This call fails early if the version already exists or you are at the review cap, so you find out before uploading anything.

2. Upload the zip

3. Register the build

SusaPlay validates the archive, extracts it, and creates the version in pending_review.
The old single-call POST /catalog/publish endpoint has been removed. It sent the zip in the request body, which caps at 32 MiB — smaller than most WebGL builds. Move any pipeline still calling it to the three steps above.
Remote content ships separately — see Addressables for updating levels or art without a new build.

Build retention

SusaPlay keeps a limited number of builds per platform and deletes older ones automatically, along with their files. Never deleted automatically: the live build, a build waiting for review, and anything uploaded within the grace period. Subscribe to the BUILD_PRUNED webhook if your pipeline needs to know when a version was removed. Uploading past the review cap is rejected with 409 until one of your pending builds is reviewed or deleted, so ask for a review rather than queueing more builds.

Version states

A passing review moves a version straight to live. There is no separate approved-but-not-live state.

Release notes checklist

Good release notes help reviewers pass builds faster:
  • What changed since last version
  • Known issues or workarounds
  • Test account credentials if auth is required
  • Which platforms were tested