dg.run

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.html at the top level of the zip. If your zip contains a single wrapping folder (for example dist/), 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, _vercel or _dg folder. These paths belong to the platform on every address, so your app could never load them (_dg is where sign-in and the database live). If your framework outputs assets to _next/, configure it to use another folder such as assets/.

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, docs and login.
  • It must not already be taken.

How your files are served

  • Only GET and HEAD requests 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.js and 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.