# Release Notes for Iroh: v1.0.1 Bug Fixes and v1.0.0 Features Explained

> Explore Iroh v1.0.1 release notes for bug fixes and v1.0.0 features including API changes, custom TLS, and hole-punching. Update your P2P applications today.

- Repository: [number zero/iroh](https://github.com/n0-computer/iroh)
- Tags: release-notes
- Published: 2026-07-03

---

**Iroh v1.0.1 (2026-06-29) delivers critical bug fixes for DNS fallback nameservers and race conditions alongside documentation improvements, while v1.0.0 introduced breaking API changes, custom TLS verifiers, and enhanced hole-punching capabilities.**

Iroh is a Rust-based framework providing a **public-key-driven API** for establishing fast, resilient QUIC connections and content-addressed blob transfers. The project maintains comprehensive release notes in the [`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md) file at the repository root, tracking changes across workspace crates including `iroh`, `iroh-relay`, and `iroh-dns`.

## Iroh v1.0.1 Release Notes (Latest Stable)

The v1.0.1 release focuses on stability fixes, Android compatibility, and documentation clarifications. This patch release addresses critical runtime issues discovered after the v1.0.0 launch while maintaining full backwards compatibility for stable APIs.

### Critical Bug Fixes and Stability

This release resolves several production issues:

- **DNS Fallback Nameserver**: Fixed a bug in `iroh-dns` where the client failed to properly fallback to alternative nameservers when the JNI context was not initialized, significantly improving Android support.
- **Race Condition**: Eliminated a race condition in [`iroh/src/lib.rs`](https://github.com/n0-computer/iroh/blob/main/iroh/src/lib.rs) that could cause double-spawning of `RemoteStateActors` during connection teardown.
- **Logging and Testing**: Corrected logging level inconsistencies and extended test timeouts to accommodate slower CI environments.

### Documentation and Dependency Updates

Version 1.0.1 includes documentation improvements for keep-alive configurations and port-mapping setup. The release updates core dependencies to `noq` 1.0.1 and `net-tools` 0.19.1, and refreshes license links to use HTTPS. Bearer-token access control documentation was also added for relay operators.

### Testing Infrastructure

The CI pipeline now includes a 16-interface hole-punch test and extended Windows overflow runners to validate network resilience across complex NAT scenarios.

## Iroh v1.0.0 Release Notes (Major Release)

Released on 2026-06-15, v1.0.0 marked the first stable major release with significant architectural enhancements and breaking API changes.

### Relay Infrastructure Enhancements

The `iroh-relay` crate received major upgrades:

- **Custom TLS Verifier**: Implemented in [`iroh-relay/src/tls/verifier.rs`](https://github.com/n0-computer/iroh/blob/main/iroh-relay/src/tls/verifier.rs), allowing applications to define custom certificate validation logic for relay connections.
- **Bearer-Token Access Control**: New authentication mechanism for relay servers supporting multiple hostnames with Let's Encrypt TLS.
- **Protocol Improvements**: Introduction of relay protocol v2 with faster health checks and QLog support for debugging.

### Breaking API Changes

Version 1.0.0 introduced several breaking changes requiring code updates:

- **Renamed Configuration**: `CaRootsConfig` is now `CaTlsConfig` in the endpoint configuration.
- **Feature Flags**: New `unstable-net-report` feature flag for experimental network reporting APIs.
- **Path Selection**: Redesigned path selection using `FourTuple` structures for improved connection migration handling.

### Hole-Punching and Connectivity

The release implements **Happy Eyeballs** for concurrent IPv4/IPv6 connection attempts, reducing connection establishment time. Latency-based path selection now automatically prioritizes the lowest-latency route when multiple paths exist between endpoints.

### Metrics and Observability

New connection latency tracking and health-z routes provide runtime visibility into connection quality. The metrics system now exposes detailed bucket rate-limit primitives for advanced traffic shaping.

## Pre-1.0 Release Highlights

Earlier releases (0.98.x, 0.97.x, and prior) established the foundation of the current architecture:

- **Pluggable Crypto Backends**: Support for multiple cryptographic implementations and IP transports.
- **EndpointHooks System**: Customizable connection lifecycle events exposed in [`iroh/src/endpoint.rs`](https://github.com/n0-computer/iroh/blob/main/iroh/src/endpoint.rs).
- **PKARR Implementation**: DNS-based address discovery via [`iroh-dns-server/src/main.rs`](https://github.com/n0-computer/iroh/blob/main/iroh-dns-server/src/main.rs) for the `dns.iroh.link` service.

These features stabilized the public-key-driven API that defines the iroh networking model.

## Code Examples from the Latest Release

The following examples demonstrate the core API surface as stabilized in v1.0.x.

### Basic Echo Server and Client

This example in [`iroh/examples/echo.rs`](https://github.com/n0-computer/iroh/blob/main/iroh/examples/echo.rs) shows bidirectional QUIC stream establishment:

```rust
// server – bind a new endpoint and register an Echo handler
let endpoint = iroh::Endpoint::bind().await?;
let router = iroh::Router::builder(endpoint)
    .accept(b"iroh-example/echo/0".to_vec(), Arc::new(Echo))
    .spawn()
    .await?;

// client – connect to the server and exchange data
let endpoint = iroh::Endpoint::bind().await?;
let conn = endpoint.connect(server_addr, b"iroh-example/echo/0").await?;
let (mut send, mut recv) = conn.open_bi().await?;
send.write_all(b"Hello, iroh!").await?;
send.finish()?;
let response = recv.read_to_end(1024).await?;
assert_eq!(response, b"Hello, iroh!");

```

### File Transfer with QLog

The transfer example in [`iroh/examples/transfer.rs`](https://github.com/n0-computer/iroh/blob/main/iroh/examples/transfer.rs) demonstrates content-addressed blob transfer:

```rust
// Transfer a file using the built‑in iroh‑blobs protocol
let endpoint = iroh::Endpoint::bind().await?;
iroh::examples::transfer::run(endpoint, "myfile.bin", /*qlog=*/ true).await?;

```

### Custom TLS Verifier Configuration

For relay clients requiring custom certificate validation:

```rust
use iroh_relay::client::RelayClient;
use iroh_relay::tls::verifier::CustomVerifier;

let verifier = CustomVerifier::builder()
    .add_root_cert(my_ca_cert)
    .build()?;
let client = RelayClient::builder()
    .tls_verifier(verifier)
    .connect(relay_url)
    .await?;

```

## Summary

- **Iroh v1.0.1** (2026-06-29) provides critical DNS fallback fixes, race condition patches, and Android compatibility improvements while maintaining API stability.
- **Iroh v1.0.0** introduced breaking changes including `CaTlsConfig` renaming, `FourTuple` path selection, and custom TLS verifiers for relay infrastructure.
- All release notes are maintained in [`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md) at the repository root, covering workspace crates `iroh`, `iroh-relay`, `iroh-dns`, and `iroh-base`.
- The framework provides a public-key-driven API for hole-punched QUIC streams with comprehensive examples in the `iroh/examples/` directory.

## Frequently Asked Questions

### Where are the official release notes for iroh?

The authoritative release notes live in [`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md) at the root of the `n0-computer/iroh` repository. This file contains chronological listings of all changes across the workspace crates, including bug fixes, feature additions, and breaking API modifications for every version from pre-1.0 through the latest v1.0.1 release.

### What breaking changes were introduced in iroh v1.0.0?

Version 1.0.0 renamed `CaRootsConfig` to `CaTlsConfig`, introduced the `unstable-net-report` feature flag, and redesigned path selection using `FourTuple` structures. Applications upgrading from 0.98.x must update their configuration imports and endpoint setup code to accommodate these API changes.

### How do I upgrade from iroh 0.98.x to v1.0.1?

First, update your [`Cargo.toml`](https://github.com/n0-computer/iroh/blob/main/Cargo.toml) dependencies to specify `iroh = "1.0.1"`. Then address the v1.0.0 breaking changes by replacing `CaRootsConfig` with `CaTlsConfig` and updating any path selection logic. Finally, test your application using the v1.0.1 DNS client improvements, particularly if targeting Android platforms where the JNI context fallback now functions correctly.

### What crates are affected by the v1.0.1 DNS fixes?

The v1.0.1 DNS fallback fixes primarily affect the `iroh-dns` crate (client-side resolution) and `iroh-dns-server` (the `dns.iroh.link` service implementation). The core `iroh` crate in [`iroh/src/lib.rs`](https://github.com/n0-computer/iroh/blob/main/iroh/src/lib.rs) benefits from these fixes through improved `Endpoint` address resolution, particularly when crossing network boundaries or operating in restricted Android environments.