Skip to content
  • Edit Git settings for all projects in a repo

    git settings (dark)git settings (dark)

    Monorepos that deploy many projects can now configure all of their project's Git settings more conveniently.

    Previously, if you wanted to consistently configure each project's settings for commit status, repository_dispatch events, etc., you had to click through to every project's settings and consistently apply the same setting. Now, you can do it all in one place.

    Try it out in project settings or visit the docs to learn more!

  • Signed URLs are now available for Vercel Blob

    You can now generate time-bound signed URLs for Vercel Blob. A signed URL is a scoped URL with an expiry that allows you to upload, download, inspect, or delete a specific object without giving access to your entire Blob store.

    Each URL is scoped to a single operation (put, get, head, or delete), a single pathname, and an expiry you choose, up to 7 days. The signature covers the operation and constraints, so a URL signed for a GET can't be reused as a PUT.

    presigned-get.ts
    import { issueSignedToken, presignUrl } from '@vercel/blob';
    const token = await issueSignedToken({
    operations: ['get'],
    });
    const { presignedUrl } = await presignUrl(token, {
    pathname: 'invoices/2026-q1.pdf',
    operation: 'get',
    validUntil: Date.now() + 5 * 60 * 1000, // 5 minutes
    });
    // On client
    <img src={presignedUrl} />

    Issue a token, mint a 5-minute read URL, and let the browser render the object directly.

    Link to headingDirect uploads from the browser

    Upload URLs (put) support multipart, so the browser can stream large files straight to Blob storage without round-tripping through your server.

    presigned-put.ts
    import { presignUrl } from '@vercel/blob';
    const { presignedUrl } = await presignUrl(token, {
    pathname: 'user-uploads/avatar.png',
    operation: 'put',
    validUntil: Date.now() + 15 * 60 * 1000,
    });
    // On client
    await fetch(presignedUrl, { method: 'PUT', body: file })

    Mint a 15-minute upload URL so the browser writes the file straight to Blob.

    Link to headingConditional deletes

    Delete URLs accept an ifMatch option so the delete only applies if the object hasn't been overwritten since you signed the URL:

    presigned-delete.ts
    import { presignUrl } from '@vercel/blob';
    const { presignedUrl } = await presignUrl(token, {
    pathname: 'tmp/session.json',
    operation: 'delete',
    validUntil: Date.now() + 60 * 1000,
    ifMatch: '"a1b2c3"', // ETag of the version you intend to remove
    });
    // On client
    await fetch(presignedUrl, { method: 'DELETE' })

    The delete no-ops if the ETag has changed since you signed the URL.

    Signed URLs work alongside OIDC. Your server authenticates to Blob via OIDC, generates a signed token, and produces narrowly scoped, time-bound URLs for the browser, so your long-lived BLOB_READ_WRITE_TOKEN never leaves the server.

    Update @vercel/blob to 2.4.0 and read the documentation to get started.

  • Elastic Build Machines now protect against out of memory builds

    Elastic build machines now monitor your build's memory usage and automatically adjust to prevent out-of-memory (OOM) failures:

    • If your build is fast but memory-intensive, we will no longer downgrade you to a smaller machine

    • If your build is close to running out of memory, we will automatically upgrade to a higher tier

    • If your build fails due to an out-of-memory error, the next deployment will automatically run on a higher tier

    Thresholds are set conservatively to balance deployment reliability and cost. Vercel only considers your build's memory usage, not the memory used by Vercel's own build infrastructure.

    Enable elastic builds in your team settings or project settings, or read the docs.

  • Qwen 3.7 Plus now available on AI Gateway

    Qwen 3.7 Plus from Alibaba is now available on Vercel AI Gateway. Both Qwen 3.7 Plus and 3.7 Max are free for paid AI Gateway users till 6/4/26 12:00pm PT.

    The model unifies vision and language into a single agent foundation, with capabilities spanning GUI and CLI operation, coding and productivity workflows with full-modality input, and visual agent tasks including perception and reasoning. It is designed to generalize across diverse agent harnesses.

    To use Qwen 3.7 Plus, set model to alibaba/qwen-3.7-plus in the AI SDK.

    import { streamText } from 'ai';
    const result = streamText({
    model: 'alibaba/qwen3.7-plus',
    prompt: `Click through the checkout flow and flag any UI bugs you find.`,
    });

    AI Gateway provides a unified API for calling models, tracking usage and cost, and configuring retries, failover, and performance optimizations for higher-than-provider uptime. It includes built-in custom reporting, Zero Data Retention support, dynamic provider sorting by latency and cost, and more. AI Gateway reflects provider pricing with no markup and does not charge a platform fee on inference, including on Bring Your Own Key (BYOK) requests.

    Learn more about AI Gateway, view the AI Gateway model leaderboard or try it in our model playground.

  • Vercel Blob now supports OIDC authentication

    Vercel Blob now supports OIDC authentication and is the default setting when connecting new projects.

    Vercel-issued OIDC tokens are short-lived and rotate automatically, so you no longer need a long-lived BLOB_READ_WRITE_TOKEN.

    To upgrade an existing store, first update your project to use the latest @vercel/blob, then navigate to the Projects tab under your Blob store and select Upgrade to OIDC from the project's context menu.

    Functions running on Vercel receive the token automatically and authenticate requests with it:

    app/upload.ts
    import { put } from '@vercel/blob';
    const { url } = await put('hello.txt', 'Hello, world!', {
    access: 'public',
    });

    Uploads a file to Blob using OIDC authentication, no long-lived token required.

    The Vercel CLI picks up the same environment variables once you update it, so you and your agents can read and write to a private store from your terminal without a long-lived token:

    vercel link
    vercel env pull
    vercel blob put hello.txt --from-file ./hello.txt
    vercel blob list
    vercel blob del hello.txt

    Links the project, pulls environment variables, then reads and writes to Blob from the terminal.

    Read the documentation to get started.

  • Chat SDK adds Lark and Feishu support

    Chat SDK now supports Lark and Feishu via a new vendor-official adapter.

    Build bots that post, edit, and delete messages, stream replies via Lark's native cardkit typewriter API, send interactive cards, and react with emojis across both Lark and Feishu conversations.

    lib/bot.ts
    import { Chat } from "chat";
    import { createLarkAdapter } from "@larksuite/vercel-chat-adapter";
    const bot = new Chat({
    userName: "mybot",
    adapters: {
    lark: createLarkAdapter(),
    },
    });
    bot.onNewMention(async (thread, message) => {
    await thread.post(`You said: ${message.text}`);
    });

    Configure the adapter to respond to @-mentions in Lark and Feishu

    The adapter connects over Lark's WebSocket transport, so bots run from any long-running Node process without exposing an HTTP webhook endpoint.

    To get started, read the Lark or Feishu documentation.

    The Complete Guide to Chat SDK

    Learn how Chat SDK works end-to-end: from core concepts to building your first bot to deploying it across Slack, Teams, and more.

    Read the guide

  • MiniMax M3 on AI Gateway

    MiniMax M3 is now available on Vercel AI Gateway.

    M3 is MiniMax's first model with a 1M-token context window and native multimodality, built around MiniMax Sparse Attention (MSA).

    M3 improves on software engineering, terminal-based tool use, and agentic web browsing, and is tuned for multi-turn collaboration.

    To use MiniMax M3, set model to minimax/minimax-m3 in the AI SDK.

    import { streamText } from 'ai';
    const result = streamText({
    model: 'minimax/minimax-m3',
    prompt: 'Reproduce the bug in this GitHub issue and submit a fix.',
    });

    Pass an image alongside a prompt to use M3's multimodal input:

    import { streamText } from 'ai';
    const result = streamText({
    model: 'minimax/minimax-m3',
    messages: [
    {
    role: 'user',
    content: [
    {
    type: 'text',
    text: 'This is a screenshot of a failing test. Identify the root cause and write the patch.',
    },
    {
    type: 'image',
    image: 'https://example.com/failing-test.png',
    },
    ],
    },
    ],
    });

    AI Gateway provides a unified API for calling models, tracking usage and cost, and configuring retries, failover, and performance optimizations for higher-than-provider uptime. It includes built-in custom reporting, Zero Data Retention support, dynamic provider sorting by latency & cost, and more. AI Gateway reflects provider pricing with no markup and does not charge a platform fee on inference, including on Bring Your Own Key (BYOK) requests.

    Learn more about AI Gateway, view the AI Gateway model leaderboard or try it in our model playground.

  • Function invocations now billed per unit

    Function invocations are moving from package-based to per-unit pricing for Pro and new Enterprise customers. You’ll continue paying the same effective rate until the end of your current billing cycle. Starting with your next billing cycle you’ll be billed per unit to align costs directly with your usage.

    The new rate is $0.0000006 per invocation (previously $0.60 per 1M invocations) for Pro customers.

    Per‑unit billing scales more smoothly across team sizes and usage patterns. It also helps teams on Pro use function invocations without immediately consuming a large portion of the included monthly usage credit.

    Get started or learn more about Vercel Functions usage and pricing.

    Pranav Kanchi, Wilson Wang