> Full Neon documentation index: https://neon.com/docs/llms.txt

# Postgres 18 GA, organization spending limits API, US East NAT gateway and PrivateLink updates, plv8 deprecated, k6 load testing

## Postgres 18 is generally available

Postgres 18 is now generally available on Neon. The preview limitations have been lifted, and Postgres 18 is fully supported for production workloads. To get started, [create a new project](https://neon.com/docs/manage/projects#create-a-project) and select **18** as the **Postgres version**.

To learn more about the new features and improvements in Postgres 18:

- Read our blog post: [Postgres 18 Is Out: Try it on Neon](https://neon.com/blog/postgres-18)
- Review the official [Postgres 18 release notes](https://www.postgresql.org/docs/18/release-18.html)

For Neon's Postgres version support policy, see [Postgres version support](https://neon.com/docs/postgresql/postgres-version-policy).

## Manage organization spending limits via the API

[Last week](https://neon.com/docs/changelog/2026-04-24#organization-spend-limits-and-email-alerts) we introduced **organization spending limits** in the Neon Console. From the **Billing** page, org admins can set a monthly cap, and Neon emails admins when spend reaches **80%** and **100%** of that limit.

This week the same functionality is available through the [Neon API](https://api-docs.neon.tech/reference/getting-started-with-neon-api) so you can manage your spend limit programmatically.

- [View monthly spend limit](https://api-docs.neon.tech/reference/getorganizationspendinglimit)

  ```bash
  curl "https://console.neon.tech/api/v2/organizations/${ORG_ID}/billing/spending_limit" \
    -H "Authorization: Bearer ${NEON_API_KEY}" \
    -H "Accept: application/json"
  ```

- [Set monthly spend limit](https://api-docs.neon.tech/reference/setorganizationspendinglimit)

  ```bash
  curl -X PUT "https://console.neon.tech/api/v2/organizations/${ORG_ID}/billing/spending_limit" \
    -H "Authorization: Bearer ${NEON_API_KEY}" \
    -H "Content-Type: application/json" \
    -d '{"spending_limit_cents":10000}'
  ```

- [Delete monthly spend limit](https://api-docs.neon.tech/reference/deleteorganizationspendinglimit)

  ```bash
  curl -X DELETE "https://console.neon.tech/api/v2/organizations/${ORG_ID}/billing/spending_limit" \
    -H "Authorization: Bearer ${NEON_API_KEY}" \
    -H "Accept: application/json"
  ```

For details, see [Spending limits](https://neon.com/docs/introduction/spending-limit) and the [April 24 changelog](https://neon.com/docs/changelog/2026-04-24#organization-spend-limits-and-email-alerts).

## New NAT gateway IPs and VPC endpoint services in US East (N. Virginia)

We've expanded infrastructure capacity in the AWS US East (N. Virginia) region (`us-east-1`) with new NAT gateway IP addresses and new VPC endpoint service addresses for Private Networking.

**Tip: Update your IP allowlists**

If you have IP allowlists on external systems that Neon connects to, **update those allowlists to include the new NAT gateway addresses**. Connections may be affected intermittently if traffic routes through non-allowlisted NAT gateways.

If you use Private Networking in `us-east-1`, you can now use the additional VPC endpoint service addresses for enhanced capacity and reliability. See the [Regions documentation](https://neon.com/docs/introduction/regions#aws-nat-gateway-ip-addresses) for the complete list of NAT gateway IPs and the [Private Networking guide](https://neon.com/docs/guides/neon-private-networking) for VPC endpoint service addresses by region.

## Load test at Grafana k6 and Neon branches

**Neon branching** gives you an isolated copy of your database with production-like data and separate compute, so you can run **Grafana k6** against your application without hammering production or relying on an undersized staging database. Create a branch from your production branch, point your app at the branch connection string, exercise realistic concurrency with k6, then tune queries and indexes on the branch and validate improvements before you ship changes.

The guide [Simulate production load using Neon branching and k6](https://neon.com/guides/k6-load-test-neon-branching) walks through the full flow. It uses a branch named **`load-test-branch`** in the examples; with the [Neon CLI](https://neon.com/docs/reference/cli-install), a minimal create from your real data branch looks like this:

```bash
neon branches create \
  --name load-test-branch \
  --parent main \
  --project-id "$NEON_PROJECT_ID"
```

Use the new branch's connection URI in **`DATABASE_URL`**, then run your app and k6 against that database.

The guide's **`load-test.js`** centers on **`options`**: **stages** ramp virtual users up and down, and **thresholds** fail the run if latency or errors cross the line. A tiny **`export default`** is still required so k6 knows what each virtual user does. The full guide adds category mix, **`check`**, and **`sleep`** for realism:

```javascript
const http = require('k6/http');

export const options = {
  stages: [
    { duration: '10s', target: 20 },
    { duration: '30s', target: 50 },
    { duration: '10s', target: 0 },
  ],
  thresholds: {
    http_req_duration: ['p(95)<50'],
    http_req_failed: ['rate<0.01'],
  },
};

export default function () {
  http.get('http://localhost:3000/api/products?category=Electronics');
}
```

<details>

<summary>**plv8 Postgres extension deprecation**</summary>

The **`plv8`** extension (JavaScript in Postgres via V8) is **deprecated** on Neon. `CREATE EXTENSION plv8` is now **rejected** with a deprecation message. If you still rely on **plv8**, migrate functions to **`plpgsql`** or application code and remove the extension; see [The plv8 extension](https://neon.com/docs/extensions/plv8) and [Supported Postgres extensions](https://neon.com/docs/extensions/pg-extensions).

</details>

<details>

<summary>Neon API **pooler_mode and pgbouncer_settings deprecation**</summary>

**`pooler_mode`** and **`pgbouncer_settings`** on compute endpoints in the [Neon Management API](https://api-docs.neon.tech/reference/getting-started-with-neon-api) are **deprecated**, with sunset after **June 20, 2026**. The **`pooler_mode`** option was maintained for legacy setups only. Neon supports connection pooling via a pooled connection URI from the **Connect** modal. Custom `pgbouncer_settings` configurations must be requested through [Neon support](https://neon.com/docs/introduction/support). For Neon's default PgBouncer settings, see [Neon PgBouncer configuration](https://neon.com/docs/connect/connection-pooling#neon-pgbouncer-configuration). If you pass **`pooler_mode`** or **`pgbouncer_settings`** on Neon API create or update requests, those values are now **ignored**.

</details>
