Changelog

Subscribe to feed
  • Invite Developers and Internal Builders without assigning a project

    You can now invite a Developer or Internal Builder to your team without assigning them to an existing project.

    Previously, the UI required every new Developer or Internal Builder to be given access to at least one existing project before you could add them. That got in the way of a common workflow: bringing someone on specifically to spin up new work, without handing them the keys to projects they don’t need to touch.

    Because both roles can create their own projects directly, this is often exactly what teams want. Invite a new teammate, let them start building right away, and keep your existing projects untouched. When they create a project, they’re automatically assigned the Developer role on it, so they own the work they start without gaining access to everything else.

    The result is cleaner, least-privilege onboarding: people get exactly the access they need to begin, and nothing more.

    To try it, head to your team’s Members page and invite a Developer or Internal Builder without selecting any existing projects. Learn more about managing project access in our project access docs.

    Permalink to Invite Developers and Internal Builders without assigning a project
  • Set AI usage limits for individual team members

    Team Owners on Pro plans can now limit Agent Runners spend for individual members in your team, giving you finer control over how AI credits are used across your team.

    Set a single credit limit that applies to every member, then customize it with overrides for specific people who need more (or less) room to work. This makes it easy to give power users a higher ceiling while keeping predictable, budget-friendly defaults for everyone else.

    You’ll find these controls in Team Settings under General > AI Enablement.

    This builds on our existing team-wide AI usage limits, so you can now manage AI spend both for an entire team and down to each individual member.

    We’ve also updated how AI inference credit usage is displayed in your dashboard, making it easier to monitor AI usage and manage your AI spend.

    Learn more about AI inference usage and how credits work.

    Permalink to Set AI usage limits for individual team members
  • Introducing Pro plan monthly credit tiers with rollovers

    Team Owners on the credit-based Pro plan can now choose how many monthly credits come with their plan, instead of a single fixed amount. Pick the tier that fits your usage, and change it whenever your needs shift.

    The new credit tiers, with rollover on higher tiers, can be especially helpful for teams with seasonal surges and teams with consistently high-credit usage and come with some per-credit cost savings.

    What’s changing

    Previously, every Pro plan included a fixed 3,000 monthly credits for $20/month.

    New amounts for monthly credits

    Now you can choose from five tiers:

    Monthly creditsPriceRollover
    3,000$20/moNo
    5,000$33/moYes
    10,000$63/moYes
    15,000$95/moYes
    20,000$126/moYes

    All tiers include the same Pro plan features: unlimited seats, password protection, and everything else that comes with Pro.

    Rollover credits on higher tiers

    Choose 5,000 monthly credits or higher and unused credits rollover an additional billing cycle so you get an extra month to use them. The base 3,000-credit tier doesn’t roll over.

    Change your tier anytime

    Team Owners can switch tiers without limits to how many times they switch. Upgrades take effect immediately with a prorated refund; downgrades take effect next billing cycle. Learn more about switching between Pro tiers.

    Learn more

    Permalink to Introducing Pro plan monthly credit tiers with rollovers
  • OpenAI GPT-5.6 Sol, Luna, and Terra Now Available in AI Gateway and Agent Runners

    OpenAI’s GPT-5.6 Sol, Luna, and Terra models are now available through Netlify’s AI Gateway and Agent Runners with zero configuration required.

    Use the OpenAI SDK directly in your Netlify Functions without managing API keys or authentication. The AI Gateway handles everything automatically. Here’s an example using the GPT-5.6 Sol model:

    import OpenAI from 'openai';
    export default async () => {
    const openai = new OpenAI();
    const response = await openai.responses.create({
    model: 'gpt-5.6-sol',
    input: 'Give a concise explanation of how AI works.',
    });
    return Response.json(response);
    };

    GPT-5.6 Sol, Luna, and Terra are available for all Function types and Agent Runners. You get automatic access to Netlify’s caching, rate limiting, and authentication infrastructure.

    Learn more in the AI Gateway documentation and Agent Runners documentation.

    Permalink to OpenAI GPT-5.6 Sol, Luna, and Terra Now Available in AI Gateway and Agent Runners
  • Node.js 24 is now the default for Builds and Functions on new sites

    New sites created on Netlify now use Node.js 24 by default for both builds and Netlify Functions.

    Existing sites aren’t affected — they keep using whatever Node.js version they’re currently pinned to, whether that’s set via a NODE_VERSION environment variable, an .nvmrc/.node-version file, or the engines.node field in package.json.

    If you want to move an existing site to Node.js 24, follow the Node.js version configuration guide for builds, and the functions runtime version guide for Netlify Functions.

    Permalink to Node.js 24 is now the default for Builds and Functions on new sites
  • Claude Fable 5 reactivated in AI Gateway

    Anthropic’s Claude Fable 5 model is once again available through Netlify’s AI Gateway with zero configuration required.

    Use the Anthropic SDK directly in your Netlify Functions without managing API keys or authentication. The AI Gateway handles everything automatically. Here’s an example using the Claude Fable 5 model:

    import Anthropic from '@anthropic-ai/sdk';
    export default async () => {
    const anthropic = new Anthropic();
    const response = await anthropic.messages.create({
    model: 'claude-fable-5',
    max_tokens: 4096,
    messages: [
    {
    role: 'user',
    content: 'How can AI improve my coding?'
    }
    ]
    });
    return new Response(JSON.stringify(response), {
    headers: { 'Content-Type': 'application/json' }
    });
    };

    Claude Fable 5 is available for all Function types. You get automatic access to Netlify’s caching, rate limiting, and authentication infrastructure.

    Learn more in the AI Gateway documentation.

    Permalink to Claude Fable 5 reactivated in AI Gateway
  • Claude Sonnet 5 now available in AI Gateway and Agent Runners

    Anthropic’s Claude Sonnet 5 model is now available through Netlify’s AI Gateway and Agent Runners with zero configuration required.

    Use the Anthropic SDK directly in your Netlify Functions without managing API keys or authentication. The AI Gateway handles everything automatically. Here’s an example using the Claude Sonnet 5 model:

    import Anthropic from '@anthropic-ai/sdk';
    export default async () => {
    const anthropic = new Anthropic();
    const response = await anthropic.messages.create({
    model: 'claude-sonnet-5',
    max_tokens: 4096,
    messages: [
    {
    role: 'user',
    content: 'How can AI improve my coding?'
    }
    ]
    });
    return Response.json(response);
    };

    Claude Sonnet 5 is available for all Function types and Agent Runners. You get automatic access to Netlify’s caching, rate limiting, and authentication infrastructure.

    Learn more in the AI Gateway documentation and Agent Runners documentation.

    Permalink to Claude Sonnet 5 now available in AI Gateway and Agent Runners
  • Nano Banana 2 Lite (Gemini 3.1 Flash-Lite Image) is now available in AI Gateway.

    Google’s Nano Banana 2 Lite (Gemini 3.1 Flash-Lite Image) is now available through AI Gateway. You can call this lightweight image generation model from Netlify Functions without configuring API keys; the AI Gateway provides the connection to Google for you.

    Example usage in a Function:

    import { GoogleGenAI } from '@google/genai';
    // Netlify Function: Generate an image with Gemini 3.1 Flash Lite Image and return it directly.
    // Usage (GET): /.netlify/functions/gemini-31-flash-lite-image?prompt=Your+prompt+here
    // Returns: binary image (PNG/JPEG/etc) with proper content-type. If no image, JSON error.
    export default async (request: Request) => {
    const url = new URL(request.url);
    const prompt = url.searchParams.get('prompt') || 'two happy bananas holding flashlights';
    const ai = new GoogleGenAI({});
    try {
    const response = await ai.models.generateContent({
    model: 'gemini-3.1-flash-lite-image',
    contents: prompt,
    config: {
    imageConfig: {
    aspectRatio: '16:9',
    imageSize: '1K'
    }
    }
    });
    let imagePart = null;
    for (const part of response.candidates[0].content.parts) {
    if (part.inlineData) {
    imagePart = part.inlineData;
    break;
    }
    }
    const bytes = Buffer.from(imagePart.data, 'base64');
    const mimeType = imagePart.mimeType || 'image/png';
    return new Response(bytes, {
    status: 200,
    headers: {
    'Content-Type': mimeType,
    'Cache-Control': 'no-store'
    }
    });
    } catch (err) {
    return new Response(JSON.stringify({ error: String(err), prompt }), {
    status: 500,
    headers: { 'Content-Type': 'application/json' }
    });
    }
    };

    Built for speed and lower cost, Gemini 3.1 Flash-Lite Image is a good fit for high-volume image generation. It works across any function type and is compatible with other Netlify primitives such as caching and rate limiting, giving you control over request behavior across your site.

    Learn more in the AI Gateway documentation.

    Permalink to Nano Banana 2 Lite (Gemini 3.1 Flash-Lite Image) is now available in AI Gateway.
  • Functions redesigned for agents

    We have redesigned Netlify functions for an improved agent experience.

    With these updates, functions are more discoverable, easier to autocomplete, update, and manage for people and agents alike. They move function configuration into code, making it type-safe and immediately visible to editors, tools, and agents, with no platform-specific naming conventions to memorize or get wrong. None of these changes are breaking, so you can adopt them on your own timeline.

    Netlify Functions are serverless functions that run on-demand in response to HTTP requests or platform events. They handle server-side logic without any infrastructure to manage, and live in your repository at netlify/functions/.

    To learn more about these updates in depth, check out our blog on redesigning Netlify functions for agent experience. See the table below for a summary.

    FeatureWhat changedWhat it means for agentsWhat you need to do
    Event handlersExport typed event handlers from the default export objectTyped handlers are discoverable like any API, with no magic filenames to guess or get wrong.Nothing required. Adopt the new syntax for new event handlers for better agent discoverability and updates.
    Background functionsDeclare with background: true in config instead of the -background filename suffixType-safe and config-driven, not name-driven. Agents can set it in code without guessing platform naming conventions, and get an error if the value is wrong.Nothing required. The -background suffix still works.
    Region selectionSet per-function via the region config property, replacing the global UI settingAgents can set region as a type-safe config property, catching invalid values before deploy rather than at runtime. Use deploy previews to test before going live.Nothing required. Optionally move region out of the UI into config for per-function control.
    Memory and vCPUSet via memory or vcpu config properties; both values scale together automaticallyAgents provisioning compute-heavy workloads (inference, large payloads) can do so in code.Nothing. Defaults unchanged. Set only if your workload needs more than 1 GB / 0.5 vCPU. Requires a credit-based Pro plan.
    getContext()Named import from @netlify/functions, replacing the Netlify.context globalNamed imports surface in autocomplete and carry type information. Globals are invisible to agents; named imports are not.Nothing required. Netlify.context still works. Switch to getContext() for better discoverability.

    Learn more in the Netlify Functions documentation, which has also been recently revamped.

    Permalink to Functions redesigned for agents
Previous page Next page