> ## Documentation Index
> Fetch the complete documentation index at: https://docs.uptopia.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Versioning

> How versioning works in UptopiaKit: upload requirements, states (Development, Testing, Production, Released), transitions, submissions, access, and security.

# Versioning in UptopiaKit

Versioning helps you move safely from internal builds to public releases while keeping access and quality under control. This page explains the version lifecycle, upload requirements, who can access which versions, and how submissions lead to a public release.

## Upload requirements

To create a new version, upload your build as a single archive from the dashboard. Requirements:

* **Accepted file type:** .zip
* **Maximum file size:** 100 MB
* **Root must include:** an **index.html** file (case-sensitive)
* **Not accepted:** password-protected archives
* **Only one file** can be uploaded at a time
* **Do not include sensitive information** in the uploaded file

If any requirement is not met, the system will **reject the file and the version will not be created**.

## Version states

UptopiaKit uses four states in the version lifecycle:

* **Development** — Default state for every new upload. Accessible to team members with the **Developer** role.
* **Testing** — Optional state. When set, accessible to team members with the **Tester** role.
* **Production** — The "production-ready" candidate for public release. There can be **only one Production version** at any time. You must have a **Production** version to create a **Submission** for going public. While a Submission for this version is **in review**, you **cannot change** its Production state.
* **Released** — Final state once the version is approved and made public. There can be **only one Released version** at any time.

Notes:

* When you want to submit a new version to go public, set that version to **Production** and then create a **new Submission**. After approval, that version becomes **Released**, ensuring there is still **only one Released** version.
* Only **Active Apps** can run versions and progress through states. If the App is **Inactive**, version execution and submissions are disabled.

## Typical lifecycle

1. Upload a new build — it starts in **Development** by default.
2. Optionally move to **Testing** for broader internal verification (Testers).
3. Promote to **Production** when the build is ready to be proposed for public release.
4. Create a **Submission** to request going public. While in review, the Production state of that version is locked.
5. Upon approval, the version transitions to **Released** (the sole public version).

## Access and visibility

* **Released**: public users can access the app and this version. This is the only state visible to the public.
* **Production/Testing/Development**: restricted to the **App Owner** and **Team Members** with appropriate roles.

By default, newly created apps and their non-Released versions are private to the Owner and Team Members.

## Storage and security of assets

All version assets and files are stored by UptopiaKit in secure cloud storage. **Only team members with the correct permissions can access them.** Everything else remains private and non-public. This means you can confidently upload your app builds without worrying about leakage or exposure — **your uploads are protected and only accessible to your team based on roles.**

## Constraints and safeguards

* **Single Production candidate**: only one version can be in Production at a time.
* **Single public release**: only one version can be in Released at a time.
* **Submission lock**: when a version’s Submission is in review, its Production state cannot be changed.
* **Public access**: only versions in Released are accessible by the public; all others remain internal.
* **App status dependency**: if the App is Inactive, versions cannot run and cannot be submitted.

## Related topics

* Apps overview: [/kit/core-concepts/apps](/kit/core-concepts/apps)
* Submissions: [/kit/core-concepts/submissions](/kit/core-concepts/submissions)
* Teams and permissions: [/kit/core-concepts/teams](/kit/core-concepts/teams)
