Upgrade Guide
July 9, 2026 ยท View on GitHub
Last modified: 2026-07-09
Upgrading between versions
From v0.x to v1.0
Breaking changes
- Security headers policy now uses
headers: [{name, value}]array format instead of flatx_frame_optionsfields. session_configrenamed tosession. The old name still works for now.serde_yamlreplaced withyaml_serdeinternally. No user-facing impact.
New features
- JavaScript engine (QuickJS) for transforms and WAF rules via
js_scriptfields in request/response modifiers. - ACME auto-cert (Let's Encrypt) via
proxy.acmeconfig block. - HTTP/3 (QUIC) support via
proxy.http3config block (temporarily disabled pending native Pingora HTTP/3 support). - Per-origin metrics with 21 metric families and configurable cardinality limiting.
- W3C and B3 distributed tracing header propagation.
- Webhook alerting with configurable channels via
proxy.alerting. - Admin stats SPA via
proxy.admin. - Per-origin connection pool tuning via
connection_pool.
Config additions
The following top-level proxy: sub-keys are new in v1.0:
| Key | Description |
|---|---|
proxy.acme | ACME auto-cert configuration (Let's Encrypt). |
proxy.http3 | HTTP/3 QUIC configuration (temporarily disabled pending native Pingora HTTP/3 support). |
proxy.metrics | Metrics cardinality limits. |
proxy.alerting | Alert notification channels (webhook, log). |
proxy.admin | Embedded stats/logs SPA. |
The following per-origin keys are new in v1.0:
| Key | Description |
|---|---|
connection_pool | Per-origin connection pool tuning. |
on_request | Event hook plugins (alpha). |
on_response | Event hook plugins (alpha). |
bot_detection | Bot traffic detection (alpha). |
threat_protection | Dynamic blocklist integration (alpha). |
rate_limit_headers | Rate limit response header control. |
traffic_capture | Request mirroring (alpha). |
message_signatures | HTTP message signature verification (alpha). |
Migration steps
-
If you use
session_config:, rename it tosession:. The alias still works but will be removed in a future release. -
If you use security headers via flat fields (e.g.
x_frame_options), move to theresponse_modifiersheaders format:Before:
x_frame_options: DENY x_content_type_options: nosniffAfter:
response_modifiers: - headers: set: X-Frame-Options: DENY X-Content-Type-Options: nosniff -
Validate the config before deploying:
sbproxy validate sb.ymlThe flag form
sbproxy --check -f sb.ymldispatches to the same handler, which is handy in CI pipelines that only pass flags. -
Deploy with zero downtime via config hot reload. Send
SIGHUPto the running process, or use the admin API.