# frp changelog > A fast reverse proxy that exposes a local server behind NAT or a firewall to the internet. - Vendor: fatedier - Category: Developer Tools - Official site: https://github.com/fatedier/frp - Tracked by: What's New (https://whatsnew.fyi/product/frp) - Harvested from: GitHub (fatedier/frp) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v0.70.1 - Date: 2026-07-23 - Version: v0.70.1 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.70.1 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.70.1 - **fixed** — HTTP vhost servers no longer support HTTP/1.1 Upgrade: h2c requests - **fixed** — Fixed control-session replacement leaks when frpc reconnects through a half-open TCP multiplexed connection - **fixed** — Fixed an SSH tunnel gateway panic when handling malformed exec requests ##### Fixes * HTTP vhost servers no longer support HTTP/1.1 `Upgrade: h2c` requests. Cleartext HTTP/2 prior-knowledge remains supported. * Fixed control-session replacement leaks when frpc reconnects through a half-open TCP multiplexed connection. * Fixed an SSH tunnel gateway panic when handling malformed exec requests. ### v0.70.0 - Date: 2026-07-11 - Version: v0.70.0 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.70.0 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.70.0 - **added** — Expand frps dashboard API v2 migration across Clients, Proxies, Server Overview, Client Detail, and Proxy Detail with paginated users/clients/proxies, detail data, proxy traffic history, server system info, offline proxy statistics pruning, server-side pagination, search, and proxy type filtering - **fixed** — WebSocket and WSS tunnel payloads are now sent as binary frames to avoid disconnects through RFC-compliant intermediaries that validate text frames as UTF-8 - **fixed** — The tls2raw client plugin now writes the proxy protocol header to the local raw connection when proxy protocol is enabled - **fixed** — frpc now rejects duplicate proxy and visitor names in config files instead of silently overwriting earlier entries ##### Features * Expanded the frps dashboard API v2 migration across Clients, Proxies, Server Overview, Client Detail, and Proxy Detail, covering paginated users/clients/proxies, detail data, proxy traffic history, server system info, offline proxy statistics pruning, server-side pagination, search, and proxy type filtering. ##### Fixes * WebSocket and WSS tunnel payloads are now sent as binary frames, avoiding disconnects through RFC-compliant intermediaries that validate text frames as UTF-8. * The `tls2raw` client plugin now writes the proxy protocol header to the local raw connection when proxy protocol is enabled. * frpc now rejects duplicate proxy and visitor names in config files instead of silently overwriting earlier entries. ### v0.69.1 - Date: 2026-06-01 - Version: v0.69.1 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.69.1 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.69.1 - **changed** — transport.wireProtocol = "v2" now applies to UDP-based proxy payloads including ordinary UDP and SUDP for consistent payload framing - **changed** — Improved SUDP compatibility during mixed transport.wireProtocol deployments to allow frps to bridge payloads between v1/default and v2 SUDP clients - **changed** — XTCP work connection NatHoleSid messages now follow the selected transport.wireProtocol ##### Features * `transport.wireProtocol = "v2"` now also applies to UDP-based proxy payloads, including ordinary UDP and SUDP, so their payload framing is consistent with the selected wire protocol. * Improved SUDP compatibility during mixed `transport.wireProtocol` deployments, allowing frps to bridge payloads between v1/default and v2 SUDP clients. * XTCP work connection `NatHoleSid` messages now follow the selected `transport.wireProtocol`. ##### Compatibility Notes * When enabling `transport.wireProtocol = "v2"` for SUDP, upgrade both the proxy and visitor frpc instances first, or keep them on `v1` until both sides are upgraded. ### v0.69.0 - Date: 2026-05-21 - Version: v0.69.0 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.69.0 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.69.0 - **added** — Added `transport.wireProtocol` configuration option for frpc to select between wire protocol v1 and v2 - **added** — Added client protocol visibility in frps dashboard and `/api/clients` API showing negotiated protocol version - **added** — Wire protocol v2 negotiates AEAD control-channel encryption with support for xchacha20-poly1305 and aes-256-gcm algorithms - **deprecated** — Wire protocol v1 is deprecated and will be removed in v0.78.0 or later when v2 becomes the default ##### Compatibility Policy Starting with v0.69.0, each minor release is supported until there are nine newer minor releases. For example, v0.69.0 will be supported until v0.78.0 is released. Within this window, frpc v0.69.0 is guaranteed to work with any frps from v0.61.0 to v0.77.0, and vice versa. Patch releases within the same minor are always compatible. Versions outside the support window may continue to work on a best-effort basis, but compatibility is no longer guaranteed. For mixed-version deployments, upgrade frps first, then upgrade frpc. This keeps the server side ready for newer client-side protocol behavior before clients start using it. ##### Notes This release introduces wire protocol v2 as a transition path for future frpc/frps protocol changes. The existing wire protocol is difficult to extend without compatibility risk, and upcoming changes, including replacing deprecated stream encryption methods, require a versioned protocol. **The default value of `transport.wireProtocol` remains `v1` in this release.** Users can keep the default for now. To test v2 early, upgrade both frpc and frps to versions that support it, then set `transport.wireProtocol = "v2"` in frpc. A v2-enabled frpc cannot connect to an older frps. When `transport.wireProtocol = "v2"` is enabled, the control channel uses negotiated AEAD encryption after the login handshake. Both frpc and frps must be upgraded to this release to use v2. v1 will be deprecated when v2 becomes the default in a future release. It will continue to be supported until v0.78.0 is released, and may be removed in v0.78.0 or later. ##### Features * Added `transport.wireProtocol` for frpc to select the internal message protocol used between frpc and frps. Supported values are `v1` and `v2`. * Added client protocol visibility in the frps dashboard and `/api/clients` API. Online clients now report their negotiated protocol as `v1` or `v2`. * Wire protocol v2 now negotiates AEAD control-channel encryption. Supported algorithms are `xchacha20-poly1305` and `aes-256-gcm`; frpc advertises its preferred order based on local AES-GCM hardware support, and frps selects the first supported algorithm from that list. ### v0.68.1 - Date: 2026-04-13 - Version: v0.68.1 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.68.1 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.68.1 - **security** — Fixed a configuration-dependent authentication bypass in HTTP proxies when routeByHTTPUser is used together with httpUser and httpPassword for proxy-style requests - **changed** — Proxy-style authentication failures now return 407 Proxy Authentication Required ##### Fixes * Fixed a configuration-dependent authentication bypass in `type = "http"` proxies when `routeByHTTPUser` is used together with `httpUser` / `httpPassword`. This affected proxy-style requests. Proxy-style authentication failures now return `407 Proxy Authentication Required`. ### v0.68.0 - Date: 2026-03-20 - Version: v0.68.0 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.68.0 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.68.0 - **added** — Added a built-in store capability for frpc, including persisted store source, Store CRUD admin APIs with runtime reload, and Store management pages in the frpc web dashboard - **changed** — Kept proxy and visitor names as raw config names during completion, moving user-prefix handling to explicit wire-level naming logic - **added** — Added noweb build tag to allow compiling without frontend assets - **changed** — Build system now auto-detects missing web asset directories and skips embedding, allowing a fresh clone to build without running make web first - **changed** — Dashboard gracefully returns 404 when assets are not embedded - **changed** — Improved TOML config parsing errors to return immediately with parser position details including line and column numbers instead of falling through to YAML/JSON parsing - **changed** — TOML type mismatches now report field-level errors without misleading line numbers - **changed** — OIDC auth now caches the access token and refreshes it before expiry, avoiding a new token request on every heartbeat - **changed** — OIDC auth falls back to per-request token fetch when the provider omits expires_in ##### Features * Added a built-in `store` capability for frpc, including persisted store source (`[store] path = "..."`), Store CRUD admin APIs (`/api/store/proxies*`, `/api/store/visitors*`) with runtime reload, and Store management pages in the frpc web dashboard. ##### Improvements * Kept proxy/visitor names as raw config names during completion; moved user-prefix handling to explicit wire-level naming logic. * Added `noweb` build tag to allow compiling without frontend assets. `make build` now auto-detects missing `web/*/dist` directories and skips embedding, so a fresh clone can build without running `make web` first. The dashboard gracefully returns 404 when assets are not embedded. * Improved config parsing errors: for `.toml` files, syntax errors now return immediately with parser position details (line/column when available) instead of falling through to YAML/JSON parsing, and TOML type mismatches report field-level errors without misleading line numbers. * OIDC auth now caches the access token and refreshes it before expiry, avoiding a new token request on every heartbeat. Falls back to per-request fetch when the provider omits `expires_in`. ### v0.67.0 - Date: 2026-01-31 - Version: v0.67.0 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.67.0 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.67.0 - **added** — frpc now supports a clientID option to uniquely identify client instances - **added** — Server dashboard displays all connected clients with their online/offline status, connection history, and metadata - **changed** — Redesigned the frp web dashboard with a modern UI, dark mode support, and improved navigation - **fixed** — Fixed UDP proxy protocol sending header on every packet instead of only the first packet of each session ##### Features * frpc now supports a `clientID` option to uniquely identify client instances. The server dashboard displays all connected clients with their online/offline status, connection history, and metadata, making it easier to monitor and manage multiple frpc deployments. * Redesigned the frp web dashboard with a modern UI, dark mode support, and improved navigation. ##### Fixes * Fixed UDP proxy protocol sending header on every packet instead of only the first packet of each session. ### v0.66.0 - Date: 2026-01-04 - Version: v0.66.0 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.66.0 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.66.0 - **added** — HTTPS proxies now support load balancing groups with loadBalancer.group and loadBalancer.groupKey to share the same custom domain and distribute traffic across multiple backend services - **added** — Individual frpc proxies and visitors now accept an enabled flag (defaults to true) to disable specific entries without relying on the global start list - **added** — OIDC authentication now supports a tokenSource field with type = "file" to read a token from a file or type = "exec" to run an external command and capture its stdout as the token, requiring the --allow-unsafe=TokenSourceExec CLI flag - **changed** — VirtualNet implemented intelligent reconnection with exponential backoff, increasing reconnect interval from 60s to 300s max when connection errors occur repeatedly, while normal disconnections reconnect at 10s intervals - **fixed** — Fix deadlock issue when TCP connection is closed that previously caused sending messages to block forever if the connection handler had already stopped ##### Features * HTTPS proxies now support load balancing groups. Multiple HTTPS proxies can be configured with the same `loadBalancer.group` and `loadBalancer.groupKey` to share the same custom domain and distribute traffic across multiple backend services, similar to the existing TCP and HTTP load balancing capabilities. * Individual frpc proxies and visitors now accept an `enabled` flag (defaults to true), letting you disable specific entries without relying on the global `start` list—disabled blocks are skipped when client configs load. * OIDC authentication now supports a `tokenSource` field to dynamically obtain tokens from external sources. You can use `type = "file"` to read a token from a file, or `type = "exec"` to run an external command (e.g., a cloud CLI or secrets manager) and capture its stdout as the token. The `exec` type requires the `--allow-unsafe=TokenSourceExec` CLI flag for security reasons. ##### Improvements * **VirtualNet**: Implemented intelligent reconnection with exponential backoff. When connection errors occur repeatedly, the reconnect interval increases from 60s to 300s (max), reducing unnecessary reconnection attempts. Normal disconnections still reconnect quickly at 10s intervals. ##### Fixes * Fix deadlock issue when TCP connection is closed. Previously, sending messages could block forever if the connection handler had already stopped. ### v0.65.0 - Date: 2025-09-25 - Version: v0.65.0 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.65.0 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.65.0 - **added** — Add NAT traversal configuration options for XTCP proxies and visitors to support disabling assisted addresses and avoid using slow VPN connections during NAT hole punching - **added** — Add OIDC client configuration options for custom TLS certificate verification and proxy settings, including trustedCaFile, insecureSkipVerify, and proxyURL for OIDC token endpoint connections - **added** — Add proxy_counts_detailed Prometheus metric that includes proxy type and proxy name labels for monitoring individual proxy connections ##### Features * Add NAT traversal configuration options for XTCP proxies and visitors. Support disabling assisted addresses to avoid using slow VPN connections during NAT hole punching. * Enhanced OIDC client configuration with support for custom TLS certificate verification and proxy settings. Added `trustedCaFile`, `insecureSkipVerify`, and `proxyURL` options for OIDC token endpoint connections. * Added detailed Prometheus metrics with `proxy_counts_detailed` metric that includes both proxy type and proxy name labels, enabling monitoring of individual proxy connections instead of just aggregate counts. ### v0.64.0 - Date: 2025-08-10 - Version: v0.64.0 - Original notes: https://github.com/fatedier/frp/releases/tag/v0.64.0 - Permalink: https://whatsnew.fyi/product/frp/releases/v0.64.0 - **added** — Support tokenSource for loading authentication tokens from files - **fixed** — Fix SSH tunnel gateway incorrectly binding to proxyBindAddr instead of bindAddr, which caused external connections to fail when proxyBindAddr was set to 127.0.0.1 ##### Features * Support tokenSource for loading authentication tokens from files. ##### Fixes * Fix SSH tunnel gateway incorrectly binding to proxyBindAddr instead of bindAddr, which caused external connections to fail when proxyBindAddr was set to 127.0.0.1.