020d79bb27
[examples] migrate cloudinary to vercel-blob ( #93762 )
...
## Summary
Replaces the Cloudinary-backed image gallery example with a Vercel
Blob–backed equivalent. The migration is driven by the broader move of
[`vercel/nextconf-image-gallery`](https://github.com/vercel/nextconf-image-gallery )
(the deployed companion to this example) off Cloudinary.
- Renamed `examples/with-cloudinary` → `examples/with-vercel-blob` via
`git mv` (history preserved).
- Images are discovered at build time via the `@vercel/blob` SDK's
`list()` API, then probed with
[`sharp`](https://github.com/lovell/sharp ) for dimensions and to
pre-generate base64 blur placeholders. `next/image` (Vercel's image
optimizer) handles resizing — no Cloudinary `c_scale,w_*` transform
URLs.
- `ImageProps` is now `{ id, url, width, height, blurDataUrl }` (was `{
public_id, format, ... }`).
- `utils/cachedImages.ts` does the listing + dimension probe + blur
placeholder generation.
- Removed `utils/cloudinary.ts` and `utils/generateBlurPlaceholder.ts`.
- `next.config.js` `remotePatterns` now allows
`*.public.blob.vercel-storage.com`.
- Deps: dropped `cloudinary`, `imagemin`, `imagemin-jpegtran`; added
`@vercel/blob` and `sharp`.
- `.env.local.example` reduced to a single `BLOB_READ_WRITE_TOKEN`.
- README rewritten: blob description, deploy-button env, setup steps,
references.
## Test plan
- [x] `npx create-next-app --example with-vercel-blob ./blob-app` clones
cleanly
- [x] After populating a blob store and `.env.local`, `npm run dev`
renders the gallery with blur placeholders
- [x] `npm run build` succeeds (sharp probe + placeholder generation
runs at build time)
- [x] Vercel deploy button flow prompts only for `BLOB_READ_WRITE_TOKEN`
---------
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected] >
Co-authored-by: Joseph <[email protected] >
2026-05-12 11:01:10 +02:00
..
2025-10-08 16:35:07 -07:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2024-12-17 01:24:53 +00:00
2025-12-12 12:51:14 -08:00
2025-09-02 12:35:42 +02:00
2025-12-23 21:02:35 +00:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-11-26 00:05:18 +01:00
2024-12-17 01:24:53 +00:00
2025-11-24 14:04:41 +01:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-11-24 14:04:41 +01:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2024-12-17 01:24:53 +00:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2024-12-17 01:24:53 +00:00
2025-09-02 12:35:42 +02:00
2025-12-09 21:22:08 +01:00
2025-11-24 14:04:41 +01:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2024-12-10 06:51:43 +00:00
2025-04-23 20:48:58 -05:00
2024-12-17 01:24:53 +00:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-11-24 14:04:41 +01:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-11-02 13:14:20 +01:00
2025-09-30 00:13:41 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-10-08 16:35:07 -07:00
2025-10-08 16:35:07 -07:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2026-05-06 18:19:56 +00:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-10-08 16:35:07 -07:00
2025-08-26 14:04:27 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-12-09 21:22:08 +01:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-11-24 14:04:41 +01:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2026-03-09 13:21:27 +01:00
2025-09-25 14:59:41 +02:00
2026-02-27 15:23:45 +01:00
2025-09-02 19:06:42 +02:00
2025-09-02 12:35:42 +02:00
2026-02-21 00:39:53 +01:00
2025-10-08 16:35:07 -07:00
2024-12-17 01:24:53 +00:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-10-08 16:35:07 -07:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-08-26 14:04:27 +02:00
2024-12-17 01:24:53 +00:00
2024-12-17 01:24:53 +00:00
2025-04-23 20:48:58 -05:00
2024-12-17 01:24:53 +00:00
2025-08-26 14:04:27 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-16 15:53:53 +02:00
2025-09-02 12:35:42 +02:00
2025-10-08 16:35:07 -07:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2024-12-17 01:24:53 +00:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2024-12-17 01:24:53 +00:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-08-26 14:04:27 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-03 09:12:33 +02:00
2025-09-16 15:53:53 +02:00
2025-09-17 08:38:49 -07:00
2025-09-08 09:11:34 +02:00
2025-09-02 12:35:42 +02:00
2026-01-20 12:16:44 +01:00
2025-08-26 14:04:27 +02:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-18 13:42:05 +02:00
2025-10-08 16:35:07 -07:00
2025-08-26 14:04:27 +02:00
2025-08-26 14:04:27 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2024-12-09 19:56:13 +00:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-08-26 14:04:27 +02:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-10-08 16:35:07 -07:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-11-24 14:04:41 +01:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-11-24 14:04:41 +01:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2025-10-08 16:35:07 -07:00
2025-08-04 18:47:26 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-11-17 22:41:21 -08:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-11-24 14:04:41 +01:00
2025-04-23 20:48:58 -05:00
2025-10-08 16:35:07 -07:00
2025-09-16 15:53:53 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-09-02 12:35:42 +02:00
2026-05-12 11:01:10 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-04-23 20:48:58 -05:00
2025-10-08 16:35:07 -07:00
2025-09-02 12:35:42 +02:00
2025-09-02 12:35:42 +02:00
2025-10-08 16:35:07 -07:00
2024-01-11 16:01:44 -07:00