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-dnswhere 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.rsthat could cause double-spawning ofRemoteStateActorsduring 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:
CaRootsConfigis nowCaTlsConfigin the endpoint configuration. - Feature Flags: New
unstable-net-reportfeature flag for experimental network reporting APIs. - Path Selection: Redesigned path selection using
FourTuplestructures 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.rsfor thedns.iroh.linkservice.
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
CaTlsConfigrenaming,FourTuplepath selection, and custom TLS verifiers for relay infrastructure. - All release notes are maintained in
CHANGELOG.mdat the repository root, covering workspace cratesiroh,iroh-relay,iroh-dns, andiroh-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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →