bun add sonuslab-storage

What's in the box

Server SDK

Mint presigned URLs, manage files, abort multiparts. Node, Bun, edge runtimes.

Browser uploads

Upload helper that streams bytes from the browser via a short-lived upload URL.

Reading files

Stable CDN URLs on public apps, short-lived presigned GETs on private ones.

Framework adapters

Reactive bindings over the core client — same upload flow, idiomatic to each framework.

Vue

useUpload composable + StorageUpload component.

Svelte

Upload class with runes-based reactive state.

Next.js

useUpload hook + createUploadRoute for App Router.

What you'll need

  • A storage app created in the dashboard — provisions a bucket scoped to your account.
  • An API key (the sl_... token) from the app's Keys tab.
  • Your own backend server — any Node, Bun, or edge runtime. The API key lives there, not in the browser.
Never ship the storage-api key to the browser. Always proxy uploads through your own backend so the key stays server-side. The browser helper is designed around this pattern.

Five-minute walk through from zero to a finished upload: Start the quickstart.

Copyright © 2026