Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
netlify avatar

Netlify Blobs

  • 1.4k installs
  • 31 repo stars
  • Updated August 4, 2026
  • netlify/context-and-tools

Netlify Blobs is an agent skill that guides developers through zero-config object storage on Netlify using getStore() CRUD for images, documents, uploads, and cached binary artifacts from Functions, Edge Functions, or fr

About

Netlify Blobs is an agent skill for Netlify's zero-config object storage aimed at files and assets—images, documents, uploads, exports, and cached binary artifacts—available from any Netlify compute surface including Functions, Edge Functions, and framework server routes. The guide covers getStore(), CRUD operations, metadata, listing, deploy-scoped versus site-scoped stores, and local development patterns. Developers reach for Netlify Blobs when a Netlify-hosted app or agent needs persistent blob storage without standing up S3 or a separate object store. The skill explicitly directs dynamic record or user-data storage to Netlify Database instead of Blobs.

  • Zero-config object storage for images, documents, uploads, exports and cached binary artifacts
  • Available from Functions, Edge Functions and Framework server routes
  • Full CRUD support with set(), get(), delete() and list() plus metadata handling
  • Supports both deploy-scoped and site-scoped stores with optional strong consistency
  • Explicit guidance: use only for file/asset blobs — never for dynamic records or queryable data

Netlify Blobs by the numbers

  • 1,426 all-time installs (skills.sh)
  • +126 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #332 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/netlify/context-and-tools --skill netlify-blobs

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.4k
repo stars31
Last updatedAugust 4, 2026
Repositorynetlify/context-and-tools

How do you add file storage to a Netlify app?

Quickly add persistent file and asset storage to their Netlify-hosted app or agent without provisioning any infrastructure.

Who is it for?

Developers shipping on Netlify who need persistent file and asset storage from Functions, Edge Functions, or server routes without external object-store setup.

Skip if: Developers storing dynamic relational user records or application data that Netlify Database—not Blobs—is designed to handle.

When should I use this skill?

The user needs Netlify file storage, blob uploads, asset caching, getStore() usage, or deploy-scoped versus site-scoped blob stores.

What you get

Configured blob stores with getStore() CRUD, metadata, listings, and deploy-scoped or site-scoped storage patterns.

  • blob store configuration
  • getStore() CRUD implementation
  • deploy or site-scoped storage setup

Files

SKILL.mdMarkdownGitHub ↗

Netlify Blobs

Netlify Blobs is zero-config object storage for files and assets: images, documents, uploads, exports, cached binary artifacts. Available from any Netlify compute (functions, edge functions, framework server routes). No provisioning required.

Not for dynamic data. If the project needs to store records, user data, application state, or anything queryable, use Netlify Database instead — see netlify-database/SKILL.md. Reach for Blobs when the thing you're storing is a file or an asset blob, not a record.

npm install @netlify/blobs

Before you build

If the prompt didn't already specify, ask the user a few short questions before scaffolding any blob storage — answers shape access patterns, scoping, and how the assets are served back to clients:

  • What kind of asset? (User uploads, exported documents, cached binaries, generated images — drives the storage and serving pattern.)
  • Who should be able to read it? Public (anyone with a URL, or an unauthenticated endpoint that streams the blob) or private (only authenticated users, gated by your server code)? Blobs have no built-in access control — the serving layer is the gate. When in doubt, default to private; making something public later is easy, while pulling back data that was inadvertently exposed is not.
  • Site-scoped or deploy-scoped? Site-scoped (getStore()) persists across deploys — the right default for user data. Deploy-scoped (getDeployStore()) is tied to a single deploy and disappears when that deploy is replaced — use only when the lifecycle should match a deploy (e.g., per-deploy build artifacts).
  • Roughly how big and how many? Helps choose between a single large blob vs many small keyed blobs, and informs whether you'll need list({ prefix: ... }) patterns.

If you don't have preferences here, tell me what the assets are and I'll pick sensible defaults — typically site-scoped with private access, served through an authenticated function.

Getting a Store

import { getStore } from "@netlify/blobs";

const store = getStore({ name: "my-store" });

// Use "strong" consistency when you need immediate reads after writes
const store = getStore({ name: "my-store", consistency: "strong" });

CRUD Operations

These are the only store methods. Do not invent others.

Create / Update

// String or binary data
await store.set("key", "value");
await store.set("key", fileBuffer);

// With metadata
await store.set("key", data, {
  metadata: { contentType: "image/png", uploadedAt: new Date().toISOString() },
});

// JSON data
await store.setJSON("key", { name: "Example", count: 42 });

Read

// Text (default)
const text = await store.get("key");                    // string | null

// Typed retrieval
const json = await store.get("key", { type: "json" });  // object | null
const stream = await store.get("key", { type: "stream" });
const blob = await store.get("key", { type: "blob" });
const buffer = await store.get("key", { type: "arrayBuffer" });

// With metadata
const result = await store.getWithMetadata("key");
// { data: any, etag: string, metadata: object } | null

// Metadata only (no data download)
const meta = await store.getMetadata("key");
// { etag: string, metadata: object } | null

Delete

await store.delete("key");

List

const { blobs } = await store.list();
// blobs: [{ etag: string, key: string }, ...]

// Filter by prefix
const { blobs } = await store.list({ prefix: "uploads/" });

Store Types

  • Site-scoped (getStore()): Persist across all deploys. Use for most cases.
  • Deploy-scoped (getDeployStore()): Tied to a specific deploy lifecycle.

Limits

LimitValue
Max object size5 GB
Store name max length64 bytes
Key max length600 bytes

Local Development

Local dev uses a sandboxed store (separate from production). For Vite-based projects, install @netlify/vite-plugin to enable local Blobs access. Otherwise, use netlify dev.

Common error: "The environment has not been configured to use Netlify Blobs" — install @netlify/vite-plugin or run via netlify dev.

Related skills

How it compares

Use Netlify Blobs for binary files and asset caching on Netlify; choose Netlify Database when the workload needs structured dynamic records or user data.

FAQ

What should Netlify Blobs store?

Netlify Blobs stores files and assets such as images, documents, uploads, exports, and cached binary artifacts via getStore() from Netlify compute. The skill directs dynamic records, user data, and application state to Netlify Database instead.

Where can Netlify Blobs be accessed from?

Netlify Blobs is available from any Netlify compute path including Functions, Edge Functions, and framework server routes. The skill covers CRUD, metadata, listing, and deploy-scoped versus site-scoped store configuration.

Backend & APIsintegrationsbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.