UploadKit
Guides

CLI — create-uploadkit-app

Scaffold a new UploadKit project with create-uploadkit-app. Templates for Next.js, SvelteKit, Remix, and Vite.

Already have a project?

create-uploadkit-app scaffolds new projects. If you're adding UploadKit to an existing codebase, follow the Quickstart — it's a 5-minute install.

create-uploadkit-app is the official scaffolder for brand-new UploadKit projects. It picks a framework template, wires up a working upload page, detects your package manager, and optionally initializes git and installs dependencies.

30-second start

pnpm create uploadkit-app my-app
npm create uploadkit-app@latest my-app
yarn create uploadkit-app my-app
bun create uploadkit-app my-app

Then:

cd my-app
# drop UPLOADKIT_API_KEY into .env.local
pnpm dev

Grab a free API key from dashboard.uploadkit.dev.

What it does

  1. Picks a template — interactive prompt (or --template <id>).
  2. Picks a package manager — auto-detected from the npm_config_user_agent that invoked the scaffolder, overridable with --pm.
  3. Copies the template into your target directory, rewriting the project name in package.json.
  4. Pins workspace dependencies to the latest published versions.
  5. Runs install (opt out with --no-install).
  6. Initializes git with an initial commit (opt out with --no-git).

Every template ships a single working upload page — no auth, no database, no Docker. Add what you need from there.

Templates

TemplateFrameworkStackWhat you get
nextNext.js 16 (App Router)React 19, Tailwind v4, @uploadkitdev/nextRoute handler at app/api/uploadkit/[...uploadkit]/route.ts, UploadKitProvider wired in the root layout, <UploadDropzone> on the home page.
sveltekitSvelteKitSvelte 5Presigned-URL endpoint, single upload page.
remixReact Router v7 (framework mode)React 19, @uploadkitdev/reactRoute handler + upload page using the managed proxy client.
viteVite SPAReact 19BYOS demo with a minimal backend stub.

Flags

FlagDescription
--template <id> / -tSkip the template prompt. One of next, sveltekit, remix, vite.
--pm <name>Skip the package-manager prompt. One of pnpm, npm, yarn, bun.
--yes / -yAccept all defaults non-interactively. Useful in CI.
--no-installSkip dependency install. You'll run it yourself.
--no-gitSkip git init and the initial commit.
--forceScaffold into a non-empty target directory (overwrites).
--version / -vPrint the CLI version.
--help / -hPrint usage.

Non-interactive example

npx create-uploadkit-app my-app \
  --template next \
  --pm pnpm \
  --no-git \
  --yes

Requirements

  • Node.js 20 or later — check with node -v.
  • An internet connection during install (unless you pass --no-install).

Troubleshooting

"Target directory is not empty" — pass --force to overwrite, or pick a new directory name.

Wrong package manager detected — pass --pm <name> explicitly. The scaffolder reads npm_config_user_agent, which some CI shells don't set.

Install hangs or fails — re-run with --no-install, then run the install command yourself inside the new directory.

See also

On this page