# What changed in svix

> 16 changes in svix 2 from its official release notes, upgrade guides and advisories: 3 breaking, 1 security, 2 new APIs and options. Each one cited. Sources checked 2026-10-28. HTML: https://unstale.sh/npm/svix/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## svix 2

### Breaking changes

- For 4xx responses with non-JSON bodies, the JavaScript library throws ApiException with the raw response text as body instead of throwing SyntaxError. (2.9.1) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.1)
- Go, Java, Kotlin, PHP, and Ruby default to a 15-second request timeout, matching the other SDKs. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)
- JavaScript requests now time out after 15 seconds by default; previously there was no timeout unless requestTimeout was set. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)

### Security

- The CLI Docker image was rebuilt for CVE-2026-111497. (2.9.1) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.1)

### New APIs and options

- Advanced Destinations add ElasticSearch support through the latest Svix Cloud API. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)
- CLI commands can populate a request body from a file using cURL-style @filename syntax. (2.8.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.8.0)

### Behavior and default changes

- Python retries on HTTP 423 responses and I/O errors. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)
- C#, Go, Java, JavaScript, Kotlin, PHP, Ruby, and Rust retry requests that fail due to timeouts or other network errors, not just 5xx responses. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)

### Fixes and other changes

- The Go default retry schedule uses 50ms, 100ms, and 200ms instead of 50µs, 100µs, and 200µs. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)
- Java and Kotlin libraries strip trailing slashes from server URLs. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)
- PHP reuses the same svix-req-id across retries of a request. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)
- PHP sends the svix-retry-count header on retries. (2.9.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.9.0)
- C# Async methods honor cancellation duration while waiting to retry by using Task.Delay instead of Thread.Sleep. (2.8.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.8.0)
- The Ruby method now accepts raw key bytes instead of base64 encoded bytes. (2.8.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.8.0)
- The Go method now uses a value receiver, consistent with other methods, so it works as expected. (2.8.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.8.0)
- The Go method now allows passing nil for options. (2.8.0) — [release notes](https://github.com/svix/svix-webhooks/releases/tag/v2.8.0)
