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

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 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 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, 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.
  • PKARR Implementation: DNS-based address discovery via 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 shows bidirectional QUIC stream establishment:

// 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 demonstrates content-addressed blob transfer:

// 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:

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 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 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 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 benefits from these fixes through improved Endpoint address resolution, particularly when crossing network boundaries or operating in restricted Android environments.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →