# Files SDK > A unified storage SDK for object and blob backends. One small, honest API. Web-standards I/O. An escape hatch when you need the native client. ## Changelog - [files-sdk@2.2.0](https://files-sdk.dev/changelog/files-sdk-2-2-0) - [files-sdk@2.1.0](https://files-sdk.dev/changelog/files-sdk-2-1-0) - [files-sdk@2.0.0](https://files-sdk.dev/changelog/files-sdk-2-0-0) - [files-sdk@1.9.0](https://files-sdk.dev/changelog/files-sdk-1-9-0) - [files-sdk@1.8.0](https://files-sdk.dev/changelog/files-sdk-1-8-0) - [files-sdk@1.7.0](https://files-sdk.dev/changelog/files-sdk-1-7-0) - [files-sdk@1.6.0](https://files-sdk.dev/changelog/files-sdk-1-6-0) - [files-sdk@1.5.0](https://files-sdk.dev/changelog/files-sdk-1-5-0) - [files-sdk@1.4.0](https://files-sdk.dev/changelog/files-sdk-1-4-0) - [files-sdk@1.3.0](https://files-sdk.dev/changelog/files-sdk-1-3-0) - [files-sdk@1.2.0](https://files-sdk.dev/changelog/files-sdk-1-2-0) - [files-sdk@1.1.2](https://files-sdk.dev/changelog/files-sdk-1-1-2) - [files-sdk@1.1.1](https://files-sdk.dev/changelog/files-sdk-1-1-1) - [files-sdk@1.1.0](https://files-sdk.dev/changelog/files-sdk-1-1-0) - [files-sdk@1.0.0](https://files-sdk.dev/changelog/files-sdk-1-0-0) ## Docs - [Introduction](https://files-sdk.dev/docs): Files SDK is a unified storage API for 40+ providers - one class, ten methods, a typed escape hatch, and an agent-friendly CLI. - [FAQ](https://files-sdk.dev/docs/faq): Common questions about supported providers, bundling and peer dependencies, switching backends, browser uploads, error handling, and the CLI. - [Installation](https://files-sdk.dev/docs/installation): Install files-sdk and the optional peer dependencies for the adapter you're using - anything you don't import is never bundled. ESM only, Node 18+ and Bun. - [Providers](https://files-sdk.dev/docs/providers): A zero-dependency catalog of every provider the SDK ships and the env vars each one reads - for building config UIs, sync engines, and onboarding flows. - [Troubleshooting](https://files-sdk.dev/docs/troubleshooting): Common errors, the normalized FilesError code model, adapter-specific gotchas, and debugging tips for resolving issues across every Files SDK backend. - [Usage](https://files-sdk.dev/docs/usage): Construct a Files instance with an adapter, then call the same ten methods on it - swap the adapter to switch backends. ### Adapters #### System Adapters - [Filesystem](https://files-sdk.dev/docs/adapters/fs): Local filesystem - the dev/test adapter. Uses node:fs/promises with a sidecar .meta.json per file. Not for production. - [FTP](https://files-sdk.dev/docs/adapters/ftp): FTP / FTPS via basic-ftp. Node-only. Connect-per-operation with an injectable client for batch work; url() needs an HTTP front. - [In-Memory](https://files-sdk.dev/docs/adapters/memory): In-memory store backed by a Map - the test/reference adapter. Zero dependencies, isomorphic, and non-persistent. Ideal for unit tests; not for production. - [SFTP](https://files-sdk.dev/docs/adapters/sftp): SFTP (SSH File Transfer Protocol) via ssh2-sftp-client. Node-only. Connect-per-operation with an injectable client for batch work; url() needs an HTTP front. - [WebDAV](https://files-sdk.dev/docs/adapters/webdav): WebDAV (Nextcloud, ownCloud, Apache mod_dav, …) via the webdav client. HTTP-based, with native server-side copy/move; url() needs an HTTP front. #### Vendor Adapters - [Akamai Cloud Object Storage](https://files-sdk.dev/docs/adapters/akamai): Akamai Cloud Object Storage (formerly Linode) via the S3-compatible API. Endpoint derived from the region/cluster code. - [Alibaba Cloud OSS](https://files-sdk.dev/docs/adapters/alibaba): Alibaba Cloud Object Storage Service (OSS) via the S3-compatible API. Endpoint derived from the region code (cn-hangzhou, ap-southeast-1, ...). - [Amazon S3](https://files-sdk.dev/docs/adapters/s3): AWS S3 (and any S3-compatible bucket). Uses the standard AWS credential chain - environment, IAM role, shared profile. - [Appwrite](https://files-sdk.dev/docs/adapters/appwrite): Appwrite Storage via the official node-appwrite SDK. Auto-loads APPWRITE_ENDPOINT, APPWRITE_PROJECT_ID, and APPWRITE_API_KEY, or pass an existing client. - [Archil](https://files-sdk.dev/docs/adapters/archil): Archil disks via the S3-compatible API. The disk id is the bucket and the endpoint is derived from the Archil region. Supports branch-scoped access. - [Azure Blob Storage](https://files-sdk.dev/docs/adapters/azure): Azure Blob Storage via @azure/storage-blob. Five credential modes - connection string, account key, token credential, SAS token, or anonymous. - [Backblaze B2](https://files-sdk.dev/docs/adapters/backblaze-b2): Backblaze B2 via the S3-compatible API. Endpoint derived from the cluster code (us-west-002, us-east-005, eu-central-003, ...). - [Box](https://files-sdk.dev/docs/adapters/box): Box via the official typed SDK. Translates virtual keys into nested folders under a configurable rootFolderId. - [Bun S3](https://files-sdk.dev/docs/adapters/bun-s3): AWS S3 (and any S3-compatible bucket) via Bun's native Bun.S3Client instead of @aws-sdk/client-s3 - Bun-only, with no extra peer dependencies. - [Bunny Storage](https://files-sdk.dev/docs/adapters/bunny-storage): Bunny Storage via @bunny.net/storage-sdk. Connects to a Storage Zone with its zone password / access key, auto-loading the BUNNY_STORAGE_* env vars. - [Cloudflare R2](https://files-sdk.dev/docs/adapters/r2): Cloudflare R2 over the S3-compatible HTTP API. Auto-loads R2_* env vars or accepts an R2Bucket binding inside Workers. - [Cloudinary](https://files-sdk.dev/docs/adapters/cloudinary): Cloudinary asset CDN via the official Node SDK. Defaults to resource_type: raw for arbitrary-bytes storage; switch to image/video for transforms. - [Convex](https://files-sdk.dev/docs/adapters/convex): Convex file storage via the function context (ctx.storage). Runs inside Convex actions/mutations/queries; the Convex-assigned storage id is the key. - [DigitalOcean Spaces](https://files-sdk.dev/docs/adapters/digitalocean-spaces): DigitalOcean Spaces via the S3-compatible API. Endpoint derived from the region, virtual-hosted addressing, keys auto-loaded from DO_SPACES_KEY/SECRET. - [Dropbox](https://files-sdk.dev/docs/adapters/dropbox): Dropbox via the official SDK. Path-addressable, so virtual keys map directly to Dropbox paths - no cache, with OAuth refresh-token and access-token auth. - [Exoscale Object Storage](https://files-sdk.dev/docs/adapters/exoscale): Exoscale Object Storage (SOS) via the S3-compatible API. Endpoint derived from the zone code (ch-gva-2, de-fra-1, ...). - [Filebase](https://files-sdk.dev/docs/adapters/filebase): Filebase via the S3-compatible API. Fronts decentralized storage networks (IPFS, Sia, Storj) chosen per-bucket in the dashboard, not per-request. - [Firebase Storage](https://files-sdk.dev/docs/adapters/firebase-storage): Firebase Cloud Storage via the official firebase-admin SDK. Underlying client is @google-cloud/storage, so V4 signed URLs and POST policy uploads come for free. - [Google Cloud Storage](https://files-sdk.dev/docs/adapters/gcs): Google Cloud Storage via the official @google-cloud/storage SDK. Application Default Credentials by default, resumable uploads when onProgress is passed. - [Google Drive](https://files-sdk.dev/docs/adapters/google-drive): Google Drive via the official Drive v3 client. Maps unified string keys onto Drive's appProperties with a per-instance LRU cache. - [Hetzner Object Storage](https://files-sdk.dev/docs/adapters/hetzner): Hetzner Object Storage via the S3-compatible API. Endpoint derived from the location code (fsn1, nbg1, hel1), keys auto-loaded from HCLOUD_* env vars. - [IBM Cloud Object Storage](https://files-sdk.dev/docs/adapters/ibm-cos): IBM Cloud Object Storage via the S3-compatible API. Endpoint derived from the region code, auth uses IBM Cloud HMAC credentials, not IAM API keys. - [iDrive e2](https://files-sdk.dev/docs/adapters/idrive-e2): iDrive e2 via the S3-compatible API. Endpoint required (iDrive hostnames are tied to the cluster your bucket lives in). - [MinIO](https://files-sdk.dev/docs/adapters/minio): MinIO and other self-hosted S3-compatible servers. Path-style addressing on by default; region defaulted; errors relabelled. - [Neon](https://files-sdk.dev/docs/adapters/neon): Neon branchable object storage via the S3-compatible API. neon dev / neon env pull inject the AWS_* env vars; path-style addressing is required. - [Netlify Blobs](https://files-sdk.dev/docs/adapters/netlify-blobs): Netlify Blobs via @netlify/blobs. Auto-detects siteID and token on Netlify runtimes; falls back to env vars elsewhere. - [OneDrive](https://files-sdk.dev/docs/adapters/onedrive): OneDrive and SharePoint document libraries via Microsoft Graph. Path-addressable with no virtual-key bookkeeping, chunked upload sessions past 250 MB. - [Oracle Cloud Object Storage](https://files-sdk.dev/docs/adapters/oracle-cloud): Oracle Cloud Infrastructure Object Storage via the S3 compatibility layer. Auth uses HMAC Customer Secret Keys, not regular API keys. - [OVHcloud Object Storage](https://files-sdk.dev/docs/adapters/ovhcloud): OVHcloud Object Storage (High Performance S3) via the S3-compatible API. Endpoint derived from the region code. - [PocketBase](https://files-sdk.dev/docs/adapters/pocketbase): PocketBase via the official JS SDK. Maps the unified key/blob API onto a dedicated collection with a unique key field and a single-file body field. - [Scaleway Object Storage](https://files-sdk.dev/docs/adapters/scaleway): Scaleway Object Storage via the S3-compatible API. Endpoint derived from the region code (fr-par, nl-ams, pl-waw). - [SharePoint](https://files-sdk.dev/docs/adapters/sharepoint): SharePoint document libraries via Microsoft Graph. Resolves siteUrl and library names; delegates to the OneDrive adapter for the file operations. - [Storj](https://files-sdk.dev/docs/adapters/storj): Storj DCS via the S3-compatible Gateway. Defaults to the hosted Gateway MT with path-style addressing, keys auto-loaded from STORJ_* env vars. - [Supabase Storage](https://files-sdk.dev/docs/adapters/supabase): Supabase Storage via @supabase/storage-js. Pass an existing SupabaseClient to share auth/postgrest with the rest of your app. - [Tencent Cloud Object Storage](https://files-sdk.dev/docs/adapters/tencent): Tencent Cloud Object Storage (COS) via the S3-compatible API. Endpoint derived from the region code; bucket name must include the - suffix. - [Tigris](https://files-sdk.dev/docs/adapters/tigris): Tigris globally-distributed object storage via the S3-compatible API. Fixed global endpoint, region defaults to auto. - [UploadThing](https://files-sdk.dev/docs/adapters/uploadthing): UploadThing via the uploadthing/server SDK. Auto-loads UPLOADTHING_TOKEN and maps your keys onto UploadThing's customId so operations route by your key. - [Vercel Blob](https://files-sdk.dev/docs/adapters/vercel-blob): Vercel Blob. Prefers auto-rotating Vercel OIDC (VERCEL_OIDC_TOKEN + BLOB_STORE_ID), falls back to BLOB_READ_WRITE_TOKEN, or pass credentials manually. - [Vultr Object Storage](https://files-sdk.dev/docs/adapters/vultr): Vultr Object Storage via the S3-compatible API. Endpoint derived from the region code (ewr, sjc, ams, blr, ...). - [Wasabi](https://files-sdk.dev/docs/adapters/wasabi): Wasabi Hot Cloud Storage via its S3-compatible API - a thin wrapper around the S3 adapter with AWS-style region names mapped to Wasabi's own endpoints. - [Yandex Object Storage](https://files-sdk.dev/docs/adapters/yandex): Yandex Object Storage via the S3-compatible API. Fixed global endpoint, region defaults to ru-central1, keys auto-loaded from YANDEX_* env vars. ### AI - [Claude Agent SDK](https://files-sdk.dev/docs/ai/claude): Expose a configured Files instance to the Claude Agent SDK as an in-process MCP server with allowedTools and canUseTool wired up. - [OpenAI](https://files-sdk.dev/docs/ai/openai): Factories for the OpenAI Responses API and the OpenAI Agents SDK - same eight operations, Zod-validated, approval-gated by default. - [Vercel AI SDK](https://files-sdk.dev/docs/ai/vercel): Drop the files-sdk tools straight into generateText, streamText, or any Vercel AI SDK agent - same eight operations, Zod-validated, approval-gated by default. ### API - [API reference](https://files-sdk.dev/docs/api): The full Files SDK API - ten unified methods plus a key-bound handle, the shared per-operation options, and the StoredFile return type. - [Errors](https://files-sdk.dev/docs/api/errors): Every method throws a single FilesError with a normalized code, the original provider error on cause, and an aborted flag for timeouts and cancellations. - [StoredFile](https://files-sdk.dev/docs/api/stored-file): The type returned by download, head, and list - File's name/size/type/lastModified, plus the key, etag, and metadata that storage adds. #### Global Methods - [sync](https://files-sdk.dev/docs/api/sync): Mirror one Files instance onto another - skip unchanged keys, prune extraneous ones, and dry-run the plan first. The incremental sibling of transfer. - [transfer](https://files-sdk.dev/docs/api/transfer): Stream every object under a prefix from one Files instance to another - the cross-provider migration built entirely on listAll, download, and upload. #### Hooks - [onAction](https://files-sdk.dev/docs/api/onaction): Runs once when a public call settles, on success and on failure - the constructor hook for audit logs, activity feeds, and per-action metrics. - [onError](https://files-sdk.dev/docs/api/onerror): Runs only when a public call rejects - the constructor hook to wire to Sentry or Datadog when you want only true call failures. - [onProgress](https://files-sdk.dev/docs/api/onprogress): A per-call upload callback, modeled on the constructor hooks - called as bytes go out so you can drive a progress bar. - [onRetry](https://files-sdk.dev/docs/api/onretry): Runs each time the SDK schedules a retry for a single-operation call, with the upcoming attempt, its delay, and the triggering error. #### Instance Methods - [copy](https://files-sdk.dev/docs/api/copy): Copy an object from one key to another - server-side where the provider supports it, with a streaming read + write fallback otherwise. - [delete](https://files-sdk.dev/docs/api/delete): Remove an object - a single key resolving to void, or an array returning a structured result that never throws on partial failure. - [download](https://files-sdk.dev/docs/api/download): Read an object - a Blob-backed StoredFile by default, or a ReadableStream for large objects - one key or many. - [exists](https://files-sdk.dev/docs/api/exists): Check whether an object exists without fetching its body - one key returns a boolean, an array splits into existing and missing. - [file](https://files-sdk.dev/docs/api/file): A FileHandle bound to one key - upload, download, head, exists, delete, url, signedUploadUrl, copyTo, and copyFrom without re-passing the key. - [head](https://files-sdk.dev/docs/api/head): Fetch an object's metadata without materializing its body - one key or many. Body accessors lazy-fetch on call. - [list](https://files-sdk.dev/docs/api/list): Cursor-paginated listing with a prefix filter; each item is a StoredFile with a lazy body accessor. listAll walks every page; a delimiter returns folders. - [move](https://files-sdk.dev/docs/api/move): Rename a key - a native, atomic rename where the provider has one, with a copy + delete fallback everywhere else. - [search](https://files-sdk.dev/docs/api/search): Find objects whose key matches a glob (default), regex, substring, or exact pattern - a streaming async iterable that walks every page like listAll. - [signedUploadUrl](https://files-sdk.dev/docs/api/signed-upload-url): A presigned PUT-or-POST contract so a browser can upload straight to the bucket - bandwidth and CPU stay off your server. - [upload](https://files-sdk.dev/docs/api/upload): Write a body to a key - a single object or many in one call, with optional progress tracking and multipart uploads. - [url](https://files-sdk.dev/docs/api/url): Return a URL to fetch a key - a signed GetObject where the adapter can sign, or a direct CDN/public URL where one is configured. ### CLI - [CLI overview](https://files-sdk.dev/docs/cli): Agent-friendly CLI for files-sdk. One binary, every provider, JSON-by-default output, stdin/stdout streaming, and a built-in MCP server. #### Agents - [MCP server](https://files-sdk.dev/docs/cli/mcp): Boot a built-in read-only MCP server on stdio, with provider and credentials bound at startup so the agent passes only operation arguments, never secrets. - [Wiring agents](https://files-sdk.dev/docs/cli/agents): Three patterns for handing storage access to an agent - CLI exploration, programmatic JSON loops, and the MCP server - ordered by trust extended. #### Usage - [Commands](https://files-sdk.dev/docs/cli/commands): Each CLI command maps to an SDK method - upload, download, head, exists, delete, copy, move, list, url, sign-upload, and transfer. - [JSON output](https://files-sdk.dev/docs/cli/output): JSON-by-default output on stdout, a stable error envelope on stderr, and meaningful exit codes for scripting - pipe straight to jq. - [Streaming & dry-run](https://files-sdk.dev/docs/cli/streaming): Stream bodies through stdin/stdout with no temp files, and use --dry-run to preview an operation before it runs. ### Concepts - [Bulk actions](https://files-sdk.dev/docs/bulk): Pass an array instead of a key to act on many objects at once - a bounded fan-out that keeps successes and failures separate, never failing the whole batch. - [Cancellation](https://files-sdk.dev/docs/cancellations): An AbortSignal always fails the call fast at the Files layer; whether the underlying provider request is also cancelled depends on the adapter. - [Capabilities](https://files-sdk.dev/docs/capabilities): Query what an adapter can do up front with files.capabilities - branch on range reads, signed URLs, and server-side copy instead of catching a throw. - [Escape hatch](https://files-sdk.dev/docs/escape-hatch): Drop down to the native, per-adapter client for any feature outside the unified surface — versioning, lifecycle rules, ACLs, object tags, and more. - [Multipart uploads](https://files-sdk.dev/docs/multipart): Upload a large body in parallel parts instead of one request - the robust path past the single-request size limit and for streams of unknown length. - [Prefixes](https://files-sdk.dev/docs/prefixes): Pass a prefix to the constructor and every key resolves relative to it - prepended going in, stripped coming out - so your code stays in its own namespace. - [Provider gaps](https://files-sdk.dev/docs/provider-gaps): A register of per-adapter quirks that don't fit the capability matrix - signed-URL caps, ignored expiries, copy costs, Content-Disposition support. - [Read-only](https://files-sdk.dev/docs/readonly): Lock a Files instance to reads only with the readonly option or files.readonly(), so every write surface fails consistently with a ReadOnly FilesError. - [Receipts](https://files-sdk.dev/docs/receipts): Opt into a provenance Receipt for every mutating call - op, provider, key, bytes, etag, timing, optional SHA-256 - delivered on the onAction hook. - [Resumable uploads](https://files-sdk.dev/docs/resumable): Pause, resume, and abort a large upload via a control handle, or resume it in a later process from a serializable session token. A per-call option on upload. - [Retries](https://files-sdk.dev/docs/retries): Automatic retries for transient provider failures, with a configurable backoff curve and clear rules for what is and isn't retried. - [Timeouts](https://files-sdk.dev/docs/timeouts): A per-attempt timeout that aborts the call when it fires — it ends the operation rather than triggering another attempt. ### Plugins - [Plugins overview](https://files-sdk.dev/docs/plugins): Wrap every operation on a Files instance in an ordered pipeline - transform, veto, or observe - and contribute new namespaced methods. - [API](https://files-sdk.dev/docs/plugins/api): The plugin contract types and helpers - FilesPlugin, FilesOperation, handlers, and createFiles. See the overview for how they compose. - [audit](https://files-sdk.dev/docs/plugins/audit): Write a structured who/what/when record of every mutation to an awaited sink - the durable, awaitable counterpart to the fire-and-forget onAction hook. - [cache](https://files-sdk.dev/docs/plugins/cache): An LRU or KV cache in front of head(), url(), and small download()s - repeat reads of an unchanged key are served from memory, writes invalidate the key. - [compression](https://files-sdk.dev/docs/plugins/compression): Transparently compress object bodies at rest with gzip, deflate, or deflate-raw - reads decompress automatically, no native dependencies. - [contentType](https://files-sdk.dev/docs/plugins/content-type): Decide each upload's Content-Type from its bytes, not the client's claim - magic-byte sniffing stops mislabeled HTML or SVG being stored as an image. - [dedup](https://files-sdk.dev/docs/plugins/dedup): Content-address object bodies by SHA-256 hash so identical content is stored only once - re-uploads skip the byte upload and copies share one blob. - [encryption](https://files-sdk.dev/docs/plugins/encryption): Envelope-encrypt object bodies at rest with AES-256-GCM - your master key wraps a per-object data key into metadata, decrypted transparently on download. - [failover](https://files-sdk.dev/docs/plugins/failover): Read and write the primary adapter and fall back to one or more secondary adapters when a backend is down - a live, per-operation failover chain. - [signed-url-policy](https://files-sdk.dev/docs/plugins/signed-url-policy): A fail-safe guard that enforces safe defaults on url() and signedUploadUrl() - force a download disposition, cap expiry, and cap the signed upload size. - [soft-delete](https://files-sdk.dev/docs/plugins/soft-delete): Turn delete into a recoverable move into a hidden trash prefix, with trashed(), restore(), and purge() - body-transparent, works on any adapter. - [tiering](https://files-sdk.dev/docs/plugins/tiering): Route operations between a hot and a cold adapter by size, prefix, or age - reads transparently find objects and tier() moves them between stores. - [tracing](https://files-sdk.dev/docs/plugins/tracing): Open an OpenTelemetry span named files. around every operation, with key, size, and outcome attributes - optional @opentelemetry/api peer dependency. - [usage](https://files-sdk.dev/docs/plugins/usage): Meter operation counts and bytes up/down across a Files instance, with lazy stream-level download counting - read totals back with files.usage(). - [validation](https://files-sdk.dev/docs/plugins/validation): A fail-closed guard that vets every upload before any bytes move - enforce a max/min size, an allowed-MIME-type list, and a key-naming rule. - [versioning](https://files-sdk.dev/docs/plugins/versioning): Snapshot an object's prior bytes before every overwrite or delete and roll a key back with versions() and restore() - server-side, body-transparent. - [zip](https://files-sdk.dev/docs/plugins/zip): Stream many stored objects as one ZIP archive, store archives back as objects, and extract archives into individual keys - no native dependencies. ### UI - [UI overview](https://files-sdk.dev/docs/ui): The whole Files API in the browser, over one endpoint — a React hook, a Vue composable, or Svelte stores, backed by a server gateway you mount in minutes. #### Client - [React](https://files-sdk.dev/docs/ui/client/react): One hook, every Files verb. Imperative methods with upload progress and ambient error state, plus optional reactive useList / useFile / useSearch. - [React Native](https://files-sdk.dev/docs/ui/client/react-native): The same useFiles hook in React Native / Expo — absolute endpoint, picker-descriptor uploads with real progress, buffered downloads. - [Svelte](https://files-sdk.dev/docs/ui/client/svelte): The full Files API in the browser, idiomatic Svelte - useFiles returns the verbs plus Svelte stores for ambient state, with useList / useFile / useSearch. - [Vue](https://files-sdk.dev/docs/ui/client/vue): The full Files API in the browser as a Vue 3 composable - useFiles returns the verbs plus refs for ambient state, with reactive useList / useFile / useSearch. #### Components - [Capabilities Badges](https://files-sdk.dev/docs/ui/components/capabilities-badges): Renders each adapter capability from capabilities() as a supported or unsupported badge - driven by useFiles, with a supportedOnly filter. - [Dropzone](https://files-sdk.dev/docs/ui/components/dropzone): A drag-and-drop (or click) upload area wired to useFiles - streams bytes straight to your gateway, with composable empty and uploaded states. - [File Actions](https://files-sdk.dev/docs/ui/components/file-actions): A per-file actions menu - download, copy, rename, move and delete - driven by useFiles, with destination prompts and delete confirmation. - [File Browser](https://files-sdk.dev/docs/ui/components/file-browser): A folder-aware browser that descends into common prefixes via list({ delimiter }), with a breadcrumb trail and cursor-based load more - driven by useFiles. - [File List](https://files-sdk.dev/docs/ui/components/file-list): A reactive list of stored files with thumbnails, size and type, plus download and delete — driven by useFiles. - [File Preview](https://files-sdk.dev/docs/ui/components/file-preview): A lazy preview of a single stored file — image, PDF or text — with metadata, resolving bytes only when it mounts. - [File Search](https://files-sdk.dev/docs/ui/components/file-search): A search box that streams matching keys with substring, glob, regex and exact match modes plus a case-sensitivity toggle - driven by useFiles. - [Multipart Uploader](https://files-sdk.dev/docs/ui/components/multipart-uploader): A multi-file queue uploader with bounded concurrency, live per-file progress and cancel — large files chunk into a multipart upload automatically. - [Share Dialog](https://files-sdk.dev/docs/ui/components/share-dialog): A dialog that mints a shareable download or upload link with expiry presets clamped to the adapter's signed URL cap - driven by useFiles. - [Trash Bin](https://files-sdk.dev/docs/ui/components/trash-bin): A recycle bin that lists, restores and permanently purges soft-deleted files — driven by useFiles and the softDelete plugin. - [Upload Progress](https://files-sdk.dev/docs/ui/components/upload-progress): Per-file and aggregate progress bars for in-flight uploads, reading the ambient uploads and progress state a useFiles instance exposes. - [Version History](https://files-sdk.dev/docs/ui/components/version-history): A version timeline for one key with one-click restore - driven by useFiles and the versioning plugin; restore snapshots the current bytes first. #### Server - [Astro](https://files-sdk.dev/docs/ui/server/astro): Mount the Files gateway in an Astro endpoint. createRouteHandler returns { GET, POST, PUT } over the Web Request - runs on Node and edge adapters. - [Authorization](https://files-sdk.dev/docs/ui/server/authorization): The gateway is deny-by-default. One authorize hook decides who can do what, and scopes every key - the single most important thing to get right. - [Bun](https://files-sdk.dev/docs/ui/server/bun): Serve the Files gateway from Bun.serve. The gateway's handle(req) is already a Web fetch handler, so it drops straight into a route - no adapter needed. - [Deno](https://files-sdk.dev/docs/ui/server/deno): Serve the Files gateway from Deno.serve. The gateway is a Web fetch handler, so it drops in with no adapter - import the SDK with the npm specifier. - [Elysia](https://files-sdk.dev/docs/ui/server/elysia): Mount the Files gateway in an Elysia app. Web-native on Bun - forward the raw Request with parse:'none' so the gateway reads the body itself. - [Express](https://files-sdk.dev/docs/ui/server/express): Mount the Files gateway on a Node server. Bridges IncomingMessage/ServerResponse to Web Request/Response - also serves Connect and a raw http server. - [Fastify](https://files-sdk.dev/docs/ui/server/fastify): Mount the Files gateway on a Fastify server. Hijacks the reply and bridges IncomingMessage/ServerResponse to the Web Request/Response the gateway speaks. - [Gateway](https://files-sdk.dev/docs/ui/server/gateway): createFilesRouter exposes the whole Files API over one HTTP endpoint. Mount it in Next (or any Web-Request runtime) and the browser bindings talk to it. - [Hono](https://files-sdk.dev/docs/ui/server/hono): Mount the Files gateway in a Hono app. Web-native, so it runs anywhere Hono does - Cloudflare Workers, Bun, Deno, and Node. - [Koa](https://files-sdk.dev/docs/ui/server/koa): Mount the Files gateway on a Koa app. Sets ctx.respond = false and bridges ctx.req/ctx.res to the Web Request/Response the gateway speaks. - [NestJS](https://files-sdk.dev/docs/ui/server/nestjs): First-class NestJS integration - a dynamic FilesModule that mounts the gateway, plus InjectFiles() for sharing the Files instance through DI. - [Next.js](https://files-sdk.dev/docs/ui/server/next): Mount the Files gateway in the Next.js App Router. createRouteHandler returns { GET, POST, PUT }, and the same handler runs on Node and the Edge runtime. - [Nitro](https://files-sdk.dev/docs/ui/server/nitro): Mount the Files gateway in a Nitro (or Nuxt server) route. Marshals the h3 event into a Web Request and returns the Response for Nitro to flush. - [SvelteKit](https://files-sdk.dev/docs/ui/server/sveltekit): Mount the Files gateway in a SvelteKit +server.ts endpoint. createRouteHandler returns { GET, POST, PUT } over the Web Request, on Node and edge alike. - [TanStack Start](https://files-sdk.dev/docs/ui/server/tanstack-start): Mount the Files gateway in a TanStack Start server route. createRouteHandler returns { GET, POST, PUT } over the Web Request - runs on every deploy target. ## RSS Feeds - [Files SDK — Changelog](https://files-sdk.dev/changelog/rss.xml)