---
title: "h2 Breaking Changes on crates.io | Since.dev"
description: "What each h2 release removed, renamed or changed: 8 breaking changes in 4 versions on crates.io, each with its source."
canonical_url: https://since.dev/packages/crates/h2
last_updated: 2026-08-17
---

# h2 breaking changes

Every breaking API change we have recorded in h2 on crates.io: 8 breaking changes in 4 versions. Below are its newest 4 versions, removals and renames first, each with its source.

Newest change August 17, 2026

## 0.4.16

1 breaking change, first published August 17, 2026.

- **Behavior changed** `send_trailers`  

send_trailers now returns an error when the trailers contain connection-specific header fields, as RFC 9113 requires. Code that sends such headers in trailers must remove them. [github.com](https://github.com/hyperium/h2/releases/tag/v0.4.16)

## 0.4.3

1 breaking change, first published March 15, 2024.

- **Behavior changed**  

The library now returns an error when the underlying IO ends without a close_notify message, where it previously did not. Code that relied on silently ignoring this end of stream may now see an error. [github.com](https://github.com/hyperium/h2/releases/tag/v0.4.3)

## 0.4.2

1 breaking change, first published January 17, 2024.

- **Behavior changed**  

The release limits how many error resets a misbehaving connection may send, so such connections can now be closed. Code that relies on unlimited resets on one connection must handle this. [github.com](https://github.com/hyperium/h2/releases/tag/v0.4.2)

## 0.4.0

5 breaking changes, first published November 15, 2023.

- **Removed** `h2::client::Builder::max_local_error_reset_streams`  

h2::client::Builder::max_local_error_reset_streams was removed in h2 0.4.0 [crates.io](https://crates.io/crates/h2/0.4.0)
- **Removed** `h2::proto::DEFAULT_LOCAL_RESET_COUNT_MAX`  

h2::proto::DEFAULT_LOCAL_RESET_COUNT_MAX was removed in h2 0.4.0 [crates.io](https://crates.io/crates/h2/0.4.0)
- **Removed** `h2::server::Builder::max_local_error_reset_streams`  

h2::server::Builder::max_local_error_reset_streams was removed in h2 0.4.0 [crates.io](https://crates.io/crates/h2/0.4.0)
- **Removed** `Server.poll_close`  

The deprecated Server::poll_close method was removed in this release. Code that calls it must be updated before upgrading. [github.com](https://github.com/hyperium/h2/releases/tag/v0.4.0)
- **Configuration changed**  

The crate now depends on http 1.0, so http types it exposes or accepts change with that version. Code using http types must be checked against http 1.0. [github.com](https://github.com/hyperium/h2/releases/tag/v0.4.0)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
