Bundle requirements
Your submission is a zip of a static web app. These are the rules it is checked against when you upload it.
What the zip must contain
- An
index.htmlat the top level of the zip. If your zip contains a single wrapping folder (for exampledist/), the folder is removed for you. - Only static files: HTML, JavaScript, CSS, images, fonts, JSON, WebAssembly and similar. There is no server-side code.
Limits
| Limit | Value |
|---|---|
| Zip file size | 25 MB |
| Unpacked size | 60 MB |
| Number of files | 2000 |
| Apps per account | 5 |
Paths that are rejected
A bundle is refused if it contains:
- paths with
.., absolute paths, or backslashes in file names; - a top-level
_next,_vercelor_dgfolder. These paths belong to the platform on every address, so your app could never load them (_dgis where sign-in and the database live). If your framework outputs assets to_next/, configure it to use another folder such asassets/.
Files such as __MACOSX/ and .DS_Store are ignored.
Choosing a subdomain
The subdomain is the address of your app and is fixed once you claim it. To change it, delete the app and submit it again.
- 3 to 30 characters, using lowercase letters
a-z, digits and hyphens. - It can't start or end with a hyphen, and it can't contain two hyphens in a row.
- Some names are reserved, such as
www,api,admin,docsandlogin. - It must not already be taken.
How your files are served
- Only
GETandHEADrequests are answered. Your app is static. - A path without a file extension that doesn't match a file serves
index.html, so client-side routing works. - Files in an
assets/folder are cached for a year as immutable. Use hashed file names there, which bundlers such as Vite do by default. - Every other file, including
index.html,sw.jsand the manifest, is revalidated on each load so that updates reach your users.
Your app runs at the root of its own address
Each app is served from the root of its own subdomain, never from a sub-path. Set your build's base path to / (in Vite, base: '/'), and use absolute paths like /assets/app.js or relative paths.
dg.run