Neon now has realtime: Live SQL with full reactivity. Try it in Beta today
/Changelog

Changelog

The latest product updates from Neon

Subscribe to our changelog. No spam, guaranteed.

All AI Gateway models now available with prepaid credits

You don't need to request access to frontier models in the Neon AI Gateway anymore. If you're on a paid plan and have prepaid credits, you can call every model in the catalog, including models from OpenAI, Anthropic, Google, Meta, and Moonshot AI. We also just added Claude Opus 5.5 (claude-opus-5-5). The Models page has the full list.

The AI Gateway page in the Neon Console showing the model catalog

To try it, buy some prepaid credits, then follow the AI Gateway quickstart to make your first request.

Try Neon's backend features with your coding agent

If you haven't tried Functions, Object Storage, or the AI Gateway yet, your coding agent is a good place to start. First, install Neon's agent skills in your project so your agent (Cursor, Claude Code, Codex, or another) knows how these services work:

npx neon@latest skills -y

Then give it something to build. Here are a few ideas:

Add file uploads to my app with Neon Object Storage, and save each file's metadata in Postgres.
Create a Neon Function that uses the AI Gateway to summarize support tickets.
Schedule a Neon Function to run every night and delete files older than 30 days from my Object Storage bucket.

If you'd rather see the bigger picture first, How a Neon backend fits together walks through how these services work with Lakebase Postgres and Managed Better Auth.

Send feedback from the CLI and MCP Server

You can now send us feedback straight from your terminal or your coding agent.

  • Neon MCP Server: Ask your agent to send it with the new send_feedback tool. For example: "send Neon feedback that I'd love a TypeScript example for branching in the docs." See Neon MCP Server.
  • Neon CLI: Run neon feedback --message "<your feedback>". See neon feedback.

Either way, we only get your message. No account, project, or connection details come with it.

You can also use the Feedback form in the Neon Console, or join the conversation in the feedback channel on our Discord.

Fixes & improvements

Here are the smaller updates and fixes we shipped this week.

Console
  • Managed Better Auth plugin settings (Organizations, Magic Link, and Phone Authentication) now live under Settings > Better Auth with the rest of your auth configuration, instead of on the Plugins tab. See Plugins.
  • You can now see your project's Object Storage usage in the Project panel on the branch Overview page. It covers all branches in the project. See Limits.
  • Fixed an issue in the create-project flow where your region reset to US East (Ohio) when you turned on Object Storage or added a bucket.
  • When you delete a project, we now remind you that its custom domains stay reserved, so you can remove any you want to reuse first. See Delete a custom domain.
Neon CLI
  • neon.ts and .env.local now come from the directory that holds your project's .neon file. A neon.ts in a parent directory no longer applies, and if your repo root has a .neon, a subdirectory's own neon.ts is ignored. Run neon link --context-file ./.neon where your neon.ts lives, or pass --config <path>.
  • neon deploy and neon config apply now ask before applying to a protected branch or overriding settings the branch already has. Without a terminal, they stop before changing anything unless you pass --allow-protected, --update-existing, or -y (--yes) for both. If your CI deploys to a protected branch, add one of these flags.
  • To sign in, run neon login. neon auth still works too, and sign-in now tells you which profile it saved to.
  • neon me shows which credential it's using, for example OAuth (profile DEFAULT) or API key (NEON_API_KEY). If you're signed out, it now just tells you so instead of opening a browser to sign you in.
  • neon orgs list marks the organization your directory is linked to with [current] and shows each organization's plan.
  • neon connection-string and neon inspect db no longer ask for --role-name on branches with the Data API or Managed Better Auth enabled. They connect as neondb_owner.
  • neon init --services postgres and neon config init --services postgres create a Postgres-only neon.ts. We removed the none option.
  • neon roles create --no-login now creates a role that can't log in. Before, the flag was ignored. roles create also shows the generated password, which Neon returns only once.
  • neon psql starts faster and shows which database and role it's connecting to.
  • If the CLI fails because of a problem on our side, it now sends us an error report so we can fix it. Reports don't include your arguments, environment variables, or file contents. To turn them off, along with usage analytics, pass --no-analytics.

To get these changes, upgrade to the latest Neon CLI.

Managed Better Auth
  • Fixed an issue where you couldn't create a user without a display name.
New NAT gateway IPs and Private Networking endpoints in eu-central-1
  • We added NAT gateway IP addresses and Private Networking VPC endpoint service names in AWS Europe (Frankfurt) (eu-central-1). If you allowlist Neon's outbound IPs, add the new addresses from the Regions page so outbound connections don't fail intermittently. If you use Private Networking in this region, add the new service names from the Private Networking guide.

More storage on the Free plan

1 GB of storage per project on the Neon Free plan

The Neon Free plan now gives you 1 GB of database storage per project, up from 0.5 GB. Existing projects pick up the new limit automatically. It was one of the most requested Free plan changes.

The extra storage builds on an already-generous plan: you get up to 100 projects on the Free plan, each with its own compute, storage, and egress. Spin up a new project for every app idea, experiment, or client demo, without paying for each project separately.

Read more in the blog post: Neon gives you 100 projects for free, with 1 GB of Postgres storage each, or see Neon plans for the full breakdown.

Embedding models in the Neon AI Gateway

The Neon AI Gateway now supports embedding models, so you can turn text into vectors through the same OpenAI-compatible endpoint and Neon credential you already use for chat. Call /v1/embeddings with either model:

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: process.env.NEON_AI_GATEWAY_TOKEN,
  baseURL: `${process.env.NEON_AI_GATEWAY_BASE_URL}/v1`,
});

const { data } = await client.embeddings.create({
  model: 'qwen3-embedding-0-6b', // or 'gte-large-en'
  input: 'The quick brown fox jumps over the lazy dog.',
  encoding_format: 'float',
});
// data[0].embedding is a 1024-dimension vector

Both models (qwen3-embedding-0-6b and gte-large-en) return 1024-dimension vectors and are billed on input tokens only. Store and search the vectors on the same branch as your data with Lakebase Search or pgvector. For the full reference, including the dimensions parameter and response format, see the Embeddings guide.

Effect bindings for the Neon SDK

Effect is a TypeScript library for building resilient apps, with typed errors, retries, timeouts, and cancellation built in. The new @neon/effect package wraps the Neon Management SDK in Effect v4, so managing your Neon projects fits that model: every API call returns an Effect, paginated lists return a Stream, and SDK errors are tagged for Effect.catchTag. Interrupting a fiber cancels the in-flight request and readiness polling, so retries, timeouts, and cancellation compose with the rest of your program.

import { Neon, layerConfig } from '@neon/effect';
import { Effect, Stream } from 'effect';

const program = Effect.gen(function* () {
  const neon = yield* Neon;
  return yield* neon.projects.list().pipe(Stream.take(10), Stream.runCollect);
});

Effect.runPromise(program.pipe(Effect.provide(layerConfig)));

Install @neon/effect alongside effect v4. Read more in the blog post: Announcing @neon/effect, or see the Effect bindings reference.

Fixes & improvements

Postgres extension updates
  • Updated PostGIS and its related geospatial extensions (postgis, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder, postgis_topology, address_standardizer, and address_standardizer_data_us) to newer versions: 3.3.10 on Postgres 14 through 16, 3.5.7 on Postgres 17, and 3.6.4 on Postgres 18. To upgrade an existing installation, see Update an extension version.
  • Updated the hll extension (HyperLogLog data type) to version 2.21 across all supported Postgres versions.
AI Gateway enhancements
  • The @neon/ai-sdk-provider (1.0.0) now supports embeddings. neon.embeddingModel('qwen3-embedding-0-6b') works with the Vercel AI SDK's embed() and embedMany(), routed through the AI Gateway with your Neon credential, so you no longer have to call the endpoint outside the provider. See Embeddings.
  • AI Gateway error responses are now consistent and safe to parse: every upstream (non-2xx) error returns a flat {"error_code","message"} envelope with the upstream status preserved, and upstream internal details are no longer passed through. Rate-limit and spend-limit errors now state which limit was hit and how to recover. See AI Gateway troubleshooting.
Neon Functions improvements
  • You can now delete an inherited function on a child branch. Deletion is branch-local: it removes the function from that branch only, leaving the parent and sibling branches untouched. Previously this returned a 404. See Delete a function.
Serverless driver
  • Connection parameters (@neondatabase/serverless 1.2.0). The Neon serverless driver's neon(), query, and transaction functions now accept individual connection parameters, user, password, host, port, database, and connectionString, that supplement, override, or fully replace a connection string. Each can be a string or a sync/async function resolved on every query, so you can supply short-lived credentials (such as an OIDC token used as the password) without rebuilding the connection string. Upgrade with npm install @neondatabase/serverless@latest. See Connection parameters.
  • The JavaScript Registry (JSR) publication of the Neon serverless driver (@neon/serverless) is deprecated and no longer updated. The driver itself is unchanged and fully supported: install it from npm as @neondatabase/serverless. Runtimes that consume JSR packages, including Deno, can install the npm package directly (for example, deno add npm:@neondatabase/serverless). See the Neon serverless driver docs.
Neon Console Tables page updates
  • The Tables page in the Neon Console, where you browse and edit your data, is powered by a Drizzle Studio integration. That integration has been updated to version 1.6.0. For the improvements and fixes in this version, see the Neon Drizzle Studio Integration Changelog.
Neon MCP server updates
  • The explain_sql_statement tool is now safe by default. Its analyze option defaults to false, so a plain EXPLAIN returns the query plan without running your statement. To get real execution metrics, you can pass analyze: true to run EXPLAIN ANALYZE, which executes the statement and can have side effects, so writes persist if your query modifies data. See Neon MCP server.
  • Project tools now work on project-scoped MCP connections. You can connect the MCP server to your whole Neon account or scope it to a single project (for example, ChatGPT and Codex connect to one project at a time). Tools that act on a project, such as run_sql, previously failed on a project-scoped connection. Now they all take the same optional project_id: on a project-scoped connection it's filled in for you, and on an account-wide connection you pass it as before. See Neon MCP server.
  • We refreshed the tools the Neon MCP server gives to AI agents. The create_trigger and update_trigger tools can now set up object-upload triggers (storage_object_created) that run a Neon Function whenever a file is uploaded to Object Storage. And create_storage_bucket is now flagged as potentially public-facing: because a bucket's access_level can make its contents readable by anyone, an agent treats creating one as something to be careful with rather than a routine internal action. See Object Storage and Function Triggers.
Neon CLI and agent skill updates
  • neon link now writes a complete context to the .neon file: the organization (when the project has one), the project, and the branch. Org-only, unpinned, or --no-checks links without --branch now fail, so a linked directory always resolves to a specific branch. See neon link. To pick up this and other recent changes, upgrade your Neon CLI client.
  • The Neon agent skills now include a neon-auth skill, so coding agents can set up and work with Neon Auth alongside the existing Postgres, Functions, Object Storage, and AI Gateway skills.
  • neon.ts is Neon's config-as-code file, where you declare the services a project uses, such as Auth, the Data API, and Functions. The new neon config add command adds one of those services to an existing neon.ts for you (for example, neon config add auth), so you don't have to edit the file by hand. See neon config.

Reset a branch's Object Storage from its parent

Reset from parent now rolls back a branch's Object Storage along with its Postgres data. When you reset a branch, its buckets and objects return to the parent's current state, so any object storage uploads, overwrites, and deletes you made on the branch are also reverted.

You can reset a branch from the Neon Console, CLI, or API. See Reset from parent for the steps.

Resetting Object Storage is available now in AWS US East (Ohio) (aws-us-east-2) and AWS Europe (Frankfurt) (aws-eu-central-1), with support for additional regions rolling out soon.

Lakebase Search extensions updated

The Lakebase Search extensions are updated: lakebase_vector to 1.1.1 and lakebase_text to 0.1.3, with performance improvements and fixes. If you have them installed, upgrade when convenient with ALTER EXTENSION <name> UPDATE; see Upgrade the extension and indexes.

note

Building search with an AI coding assistant? The neon-postgres agent skill now includes Lakebase Search guidance for vector, full-text, and hybrid queries. Install it with:

neon skills -s neon-postgres

Automating workloads with Neon Functions

Last week we announced that the Neon backend is generally available, with Functions running next to your database. This week, a new guide shows how to use Neon Functions to automate workloads with Function Triggers: run a Function on a UTC cron schedule or when a file lands in an Object Storage bucket.

Learn how to declare a function in code using a neon.ts file and apply it with neon deploy.

// neon.ts
functions: {
  reports: { name: 'Reports', source: './functions/reports.ts' },
},
triggers: {
  nightly: {
    type: 'schedule',
    function: 'reports',
    cron: '0 6 * * *',
  },
},

Realtime is coming to Neon

Realtime sync is coming to Neon. The team behind Electric, the Postgres sync engine, joined Neon at Databricks and is building native realtime and end-to-end reactivity into the platform, designed to work with branching and scale to zero. Read our Q&A with Electric co-founder James Arthur.

Was this page helpful?
Edit on GitHub