|
| 1 | +--- |
| 2 | +title: "Release Apache APISIX 3.12.0" |
| 3 | +authors: |
| 4 | + - name: "Ashish Tiwari" |
| 5 | + title: "Author" |
| 6 | + url: "https://github.com/Revolyssup" |
| 7 | + image_url: "https://github.com/Revolyssup.png" |
| 8 | + - name: "Traky Deng" |
| 9 | + title: "Technical Writer" |
| 10 | + url: "https://github.com/kayx23" |
| 11 | + image_url: "https://github.com/kayx23.png" |
| 12 | +keywords: |
| 13 | + - Apache APISIX |
| 14 | + - API Gateway |
| 15 | + - API Management Platform |
| 16 | + - New Release |
| 17 | + - Cloud Native |
| 18 | +description: The Apache APISIX 3.13.0 version is released on June 27, 2025. This release includes a few changes, new features, bug fixes, and other improvements to user experiences. |
| 19 | +tags: [Community] |
| 20 | +--- |
| 21 | + |
| 22 | +We are glad to present Apache APISIX 3.13.0 with exciting new features, bug fixes, and other improvements to user experiences. |
| 23 | + |
| 24 | +<!--truncate--> |
| 25 | + |
| 26 | +This release introduces a number of new features, including the `mcp-bridge` and `lago` plugins, the standalone Admin API, status health check endpoint, L4 proxy health check, and more. |
| 27 | + |
| 28 | +While there are no breaking changes, a few features have been marked for deprecation for future releases. Please review the deprecation notes to stay informed about future changes. |
| 29 | + |
| 30 | +## Deprecations |
| 31 | + |
| 32 | +### Mark the `server-info` plugin as deprecated |
| 33 | + |
| 34 | +The `server-info` plugin is now marked for deprecation and will be removed in a future release. It periodically writes server info to etcd, which can cause performance issues in large clusters due to excessive etcd writes during startup. |
| 35 | + |
| 36 | +For more information, see the [mailing list proposal](https://lists.apache.org/thread/nrwqo1gbc0z4z48fkb8dd4rn0trnfnz9) and [PR #12244](https://github.com/apache/apisix/pull/12244). |
| 37 | + |
| 38 | +### Warn on etcd write operations in decoupled `data_plane` mode |
| 39 | + |
| 40 | +When APISIX is running in the decoupled mode as the data plane instance, it now logs warnings if the data plane instance performs etcd write operations via core.etcd functions or the CLI. Writes will be deprecated in future releases, where such operations will be disallowed. |
| 41 | + |
| 42 | +For more information, see the [mailing list proposal](https://lists.apache.org/thread/gfsooqm4cz6cx2sh7htmqgwlml5kggm2) outlining the future enforcement plan and [PR #12241](https://github.com/apache/apisix/pull/12241) for change in this release. |
| 43 | + |
| 44 | +## New Features |
| 45 | + |
| 46 | +### Add standalone Admin API |
| 47 | + |
| 48 | +This release introduces a new Admin API for standalone mode, allowing users to manage in-memory configurations via HTTP PUT (to update) and GET (to retrieve). Configurations can be submitted in JSON or YAML, validated, and broadcast to all workers within the same APISIX instance—making the mode fully stateless. This feature improves support for use cases such as the Ingress Controller. |
| 49 | + |
| 50 | +For more information, see relevant PRs [#12179](https://github.com/apache/apisix/pull/12179), [#12214](https://github.com/apache/apisix/pull/12214), [#12256](https://github.com/apache/apisix/pull/12256), [#12295](https://github.com/apache/apisix/pull/12295), [#12317](https://github.com/apache/apisix/pull/12317), and [#12333](https://github.com/apache/apisix/pull/12333). |
| 51 | + |
| 52 | +### Support health check for L4 proxy |
| 53 | + |
| 54 | +APISIX now supports upstream health checks when operating as an L4 proxy, enabling improved reliability and automatic failover for TCP/UDP traffic. |
| 55 | + |
| 56 | +For more information, see PR [#12180](https://github.com/apache/apisix/pull/12180). |
| 57 | + |
| 58 | +### Add status health check endpoint |
| 59 | + |
| 60 | +This release introduces a health check endpoint that indicates when APISIX is ready to serve traffic. In standalone mode, it reports readiness after configuration is loaded from external clients (e.g., Ingress Controller). When using etcd, the endpoint remains unhealthy until all workers have completed the initial configuration load. This helps external systems perform accurate readiness checks. |
| 61 | + |
| 62 | +For more information, see [#12200](https://github.com/apache/apisix/pull/12200). |
| 63 | + |
| 64 | +### Add `mcp-bridge` plugin |
| 65 | + |
| 66 | +This release introduces the `mcp-bridge` plugin, which converts stdio-based MCP servers to HTTP SSE-based interfaces, with support for subprocess management and prototype session handling across NGINX workers. To support broader use cases, the MCP server has been refactored into a standalone module, replacing the original mcp-bridge implementation with a more flexible framework while preserving backward compatibility through existing tests. |
| 67 | + |
| 68 | +For more information, see [#12168](https://github.com/apache/apisix/pull/12168) and [#12151](https://github.com/apache/apisix/pull/12151). |
| 69 | + |
| 70 | +### Add `lago` plugin |
| 71 | + |
| 72 | +This release introduces the lago plugin, enabling integration with Lago for API monetization. The plugin logs API calls and charges consumers based on configured billing metrics and subscriptions. It supports flexible use cases such as token-based billing for AI services or per-call billing for APIs, and allows multiple routes to be linked to different pricing models for pay-as-you-go scenarios. |
| 73 | + |
| 74 | +For more information, see [#12196](https://github.com/apache/apisix/pull/12196). |
| 75 | + |
| 76 | +### Add `headers` attribute to the `loki-logger` plugin |
| 77 | + |
| 78 | +This release adds a `headers` attribute to the `loki-logger` plugin. This allows, for example, setting an authorization header when sending logs to a remote Loki service. |
| 79 | + |
| 80 | +For more information, see [#12243](https://github.com/apache/apisix/pull/12243). |
| 81 | + |
| 82 | +### Add metadata fields to core resource schemas |
| 83 | + |
| 84 | +This release adds standardized metadata for core resources, including name, description, and labels. The addition improves resource consistency and addresses issues in downstream projects. |
| 85 | + |
| 86 | +For more information, see PR [#12224](https://github.com/apache/apisix/pull/12224). |
| 87 | + |
| 88 | +### Add `max_pending_entries` attribute to batch processor |
| 89 | + |
| 90 | +This release introduces a new `max_pending_entries` option to the batch processor to prevent memory spikes when the log server is slow or unresponsive. This option allows dropping new entries if too many pending callbacks are waiting to be processed. |
| 91 | + |
| 92 | +For more information, see PR [#12338](https://github.com/apache/apisix/pull/12338). |
| 93 | + |
| 94 | +### Enhance Admin API filtering |
| 95 | + |
| 96 | +The Admin API now supports filtering routes and stream routes by `service_id` and `upstream_id`, making it easier to query and manage related resources, especially for the APISIX Dashboard project. |
| 97 | + |
| 98 | +For more information, see PR [#12291](https://github.com/apache/apisix/pull/12291). |
| 99 | + |
| 100 | +### Expose APISIX version in Prometheus `node_info` metric |
| 101 | + |
| 102 | +This release enhances the Prometheus `node_info` metric by adding a version label to expose the current APISIX version, improving observability and version tracking. |
| 103 | + |
| 104 | +For more information, see PR [#12367](https://github.com/apache/apisix/pull/12367). |
| 105 | + |
| 106 | +### Support dash (-) in consumer usernames |
| 107 | + |
| 108 | +This release allows the use of dashes (-) in consumer usernames. This is useful for scenarios such as namespacing in Kubernetes, where consumer names like namespace-username are needed for resource isolation. |
| 109 | + |
| 110 | +For more information, see PR [#12296](https://github.com/apache/apisix/pull/12296). |
| 111 | + |
| 112 | +## Dependencies |
| 113 | + |
| 114 | +Upgraded core dependencies for improved stability, compatibility, and to address known issues: |
| 115 | + |
| 116 | +- Bumped OpenResty to v1.27.1.2 (PR [#12307](https://github.com/apache/apisix/pull/12307)) |
| 117 | +- Bumped LuaRocks to v3.12.0 (PR [#12305](https://github.com/apache/apisix/pull/12305)) |
| 118 | + |
| 119 | +## Other Updates |
| 120 | + |
| 121 | +- Compare service discovery nodes by address to improve performance (PR [#12258](https://github.com/apache/apisix/pull/12258)) |
| 122 | +- Change log level to `debug` to reduce unnecessary logs (PR [#12361](https://github.com/apache/apisix/pull/12361)) |
| 123 | +- Adjust log level from `warn` to `info` when removing stale batch processors (PR [#12297](https://github.com/apache/apisix/pull/12297)) |
| 124 | +- Refactor `ai-proxy` plugin to move `read_response` into the `ai_driver.request` function (PR [#12101](https://github.com/apache/apisix/pull/12101)) |
| 125 | +- Prevent stale health checker from running when the number of new nodes is less than or equal to one (PR [#12118](https://github.com/apache/apisix/pull/12118)) |
| 126 | +- Release health checker when there are zero nodes (PR [#12126](https://github.com/apache/apisix/pull/12126)) |
| 127 | +- Parse and validate `apisix.yaml` in the CLI only during startup (PR [#12216](https://github.com/apache/apisix/pull/12216)) |
| 128 | +- Restrict TLSv1.3 cross-SNI session resumption (PR [#12366](https://github.com/apache/apisix/pull/12366)) |
| 129 | +- Fix data dump issue in Kubernetes service discovery single mode (PR [#12284](https://github.com/apache/apisix/pull/12284)) |
| 130 | +- Handle `nil` port cases in Consul by defaulting to port 80 (PR [#12304](https://github.com/apache/apisix/pull/12304)) |
| 131 | + |
| 132 | +## Changelog |
| 133 | + |
| 134 | +For a complete list of changes in this release, please see [CHANGELOG](https://github.com/apache/apisix/blob/master/CHANGELOG.md#3130). |
0 commit comments