Fuchsia F30 release notes

Date: April 7, 2026

Version: F30

A11y

The following platform updates have been made for A11y:

  • Accessibility logging enhancements. Expanded logging for multi-finger and multi-tap zoom actions to improve debugging of magnification features.

Audio

The following platform updates have been made for Audio:

  • PacketStream API and FIDL Improvements. Introduced the PacketStream API to support encoded audio streaming formats such as AAC and SBC. To support non-PCM audio formats, updated FIDL protocols to introduce extensible unions (Format2/SupportedFormats2) and deprecated the closed version of the Composite protocol in favor of the new open version.

  • Extensive Diagnostics and Inspect Additions. Expanded Inspect diagnostics across drivers and AudioDeviceRegistry (ADR) to include ring buffer metrics, scheduling delays, and clock domain annotations. These additions are retained on a per-session basis, and are further aggregated under a new diagnostics_summary section to significantly improve developer troubleshooting and performance triage.

  • FFX Audio CLI Tool Improvements. Enhanced the ffx audio CLI tool by displaying device names in the device info output and fixing text rendering bugs in help. Additionally, ffx audio play now correctly routes accessibility inputs to the Accessibility usage mode instead of Background.

  • Performance Optimizations and Driver Fixes. Re-enabled Link Time Optimization (LTO) for audio targets to improve performance. Additionally, fixed driver compatibility by enforcing page-rounding for contiguous VMO sizes in the aml-g12 driver to comply with stricter syscall API requirements.

Bluetooth

The following platform updates have been made for Bluetooth:

  • Configurable RFCOMM Max Packet Size. Negotiates max_packet_size on a per-DLC basis to properly align with the RFCOMM 5.5.3 specification.

  • Persist Device Class in BondingData. Adds an optional device class field to the BondingData FIDL struct, enabling bt-gap to persist it across system reboots.

  • AVRCP Connections and Volume. Improves efficiency by initiating AVRCP control and browse connections on-demand, and integrate a bt-avrcp-vol- control component to easily manage volume control for clients

  • MAP OBEX Connection Stability. Improves device compatibility by initiating an OBEX CONNECT immediately after MAS transport connection and correctly waiting for client-initiated OBEX DISCONNECTs.

  • Sapphire Autosniff Bug Fixes. Resolves critical audio skipping issues with certain headsets by suppressing autosniff behavior during active pairing and when A2DP is active.

  • Sapphire Packet Filtering Enhancements. Adds explicit delivery modes to AdvertisingPacketFilter::Config and enforces a default RSSI floor to prevent valid peers from being incorrectly ignored by the Controller.

  • Infrastructure and Observability Updates. Adds a new assembly configuration to dynamically route profile requests to bt-rfcomm and introduces diagnostic tracking for GATT profile discovery failures.

Build

The following updates have been made for Build:

  • Enabled LTO for Rust and cleaned up optimization configurations. Extended Link-Time Optimization (LTO) to the Rust codebase by default to improve runtime performance and reduce binary size. LTO was also enabled for specific core targets, and optimization levels can now be tuned independently.

  • Migrated the build system to the Rust 2024 edition. Updated the global Rust toolchain configuration to leverage the new edition and set the max- page-size link argument for Rust binaries.

  • Advanced Bazel migration and improved IDK tooling. Introduced new Bazel rules to streamline IDK prebuilts and removed the deprecated fuchsia_fidl_llcpp_library() rule from the SDK. Debug symbols are now generated during the first bazel build to save overhead.

  • Removed legacy macOS support from the build system. Dropped macOS compatibility configurations from toolchains, testing scripts, image definitions, and SDK generation wrappers.

  • Added new client commands to the Build API. Introduced affected_tests and should_file_changes_trigger_build to identify impacted tests and intelligently trigger infra builds. The file_to_test_package tool was also refined to use gn refs for better precision.

  • Improved build graph performance and remote execution stability. Optimized task scheduling by seeding Ninja edge weights with empirical build data and added error checking for duplicate GN outputs. Resolved incremental build issues with Breakpad symbol generation and supported remote fsatrace on C++ compiles via RBE.

Cobalt

The following updates have been made for Cobalt:

  • Rust 2024 Migration. Migrated the Cobalt codebase to the Rust 2024 edition.

  • STRUCT Fields Marked Experimental. Marked STRUCT metric and report fields as experimental to prevent usage confusion; developers should avoid using these fields.

  • Fixed sync script. Resolved issues with the sync_with_fuchsia.py helper script.

Component Framework

The following updates have been made for Component Framework:

  • Enhancements to fuchsia.component.sandbox. Updated DirConnector APIs to support passing flags and subdirectories, and added CreateServiceAggregate to CapabilityStore.

  • Target required for capability routing. Capability routing now explicitly requires the target (WeakInstanceToken) to ensure the initiator of a request is always accurately identified across the component graph.

  • Component Controller updates. Added OpenExposedDir to the fuchsia.component.Controller, making it possible to open a child component's exposed directory directly from its controller.

  • CML target_availability feature. Introduced target_availability in cmc to omit capability offers during compilation if their target is excluded from the assembled manifest.

  • Inspect logging for routing errors. Component Manager now exposes a routing_errors Inspect node to capture recent routing failures for better on-device diagnostics.

  • Strict bootfs entry handling. Component Manager now immediately exits if it fails to receive bootfs entries from userboot instead of continuing the bootstrap sequence.

  • StorageAdmin protocol deprecation. Moved the fuchsia.sys2.StorageAdmin protocol to the fuchsia.component.StorageAdmin protocol. This change allows fuchsia.component.StorageAdmin to be used outside of fuchsia.git.

  • Disabled tracing by default on eng builds. Disabled tracing by default in Component Manager in eng builds to prevent random boot stalls caused by blocking trace-provider IPCs. Developers who need this functionally can turn tracing back on through an assembly flag.

Diagnostics

The following updates have been made for Diagnostics:

Display

The following updates have been made for Display:

  • Fixed race condition in display engine events. Added synchronization to prevent potential driver crashes caused by concurrent access between the coordinator and engine drivers.

  • Updated page size determination for Intel Display. Removed the hardcoded PAGE_SIZE constant from the intel-display driver, replacing it with runtime page size determination to support RFC 0016.

Driver Framework

The following updates have been made for Driver Framework:

FIDL

The following updates have been made for FIDL:

Feedback

The following updates have been made for Feedback:

  • Domain configuration migration. Feedback configurations migrated to the new domain configuration (feedback_config.json), and unused flags like persisted_logs_num_files were removed.

  • Shutdown and reboot tracking enhancements. Improved reboot annotations and crash signatures by tracking all shutdown actions across boots, enabling configurable spontaneous reboot reasons via assembly, and fixing attribution of unreasoned Starnix shutdowns.

  • Optimized log fetching with FXT format. Feedback now uses the FXT format instead of JSON to fetch logs from Archivist, significantly optimizing performance and memory usage by bypassing unnecessary serialization.

  • Configurable report store size. The report store size limit is now configurable via assembly, with the limit increased to 10 MiB for large_disk products to prevent large minidumps from exceeding storage.

  • Crash snapshot refinements. Removed the unused build.snapshot.xml attachment from crash snapshots and fixed a use-after-move bug that caused log.kernel.previous_boot.txt to be incorrectly excluded.

Firmware

The following updates have been made for Firmware:

  • Recovery: BCB handling. Added support for --sideload Bootloader Control Block (BCB) argument, recovery now reads and clears the bootloader message from the /misc partition at startup to prevent consecutive accidental boots into the recovery image.

  • Recovery: remove fastboot UX. Removed fastboot from the manual menu since it is natively accessible in recovery

  • Recovery: standardized shutdown and reboot API usage. Migrated recovery reboot handling to the Shutdown API, enabling exact shutdown reason tracking to improve crash reporting and metrics.

  • Recovery: system improvements. Exposed bootfs arguments to recovery components to support boot slot identification during storage operations, and implemented robust deadlock detection.

Graphics and GPU

The following updates have been made for Graphics and GPU:

  • Supported dynamic page sizes in GPU drivers. Replaced hardcoded PAGE_SIZE macros with a runtime method across graphics drivers to support dynamically varying boot-time page sizes.

  • Improved Mali driver power management. Integrated a SuspendBlocker in the msd-arm-mali driver to properly drain task queues before entering system suspend states.

I18n

The following updates have been made for I18n:

  • Migrated ICU data synchronization to fuchsia_sync. The ICU data library now uses fuchsia_sync to improve deadlock detection and reduce memory overhead by removing lock poisoning.

IOT, Matter and Thread

The following updates have been made for IOT, Matter and Thread:

Kernel

The following updates have been made for the Zircon Kernel:

  • Enforced VMO Page Alignment (RFC-0238). Enforced strict page-aligned sizes for physical and contiguous VMO creation, and transitioned to safely zero out newly added pages.
  • Runtime Page Size Support (RFC-0016). Removed compile-time PAGE_SIZE and ZX_PAGE_SIZE macros from Zircon public headers, requiring developers to use explicit runtime page size checks.

Netstack

The following updates have been made for Netstack:

Platform Drivers

The following updates have been made for Platform Drivers:

  • Rust Driver Manager Port. Ported core Driver Manager components to Rust, introducing firmware crash reporting and memory attribution tracking across driver hosts.

  • Power-Aware Driver Topology. Registered a power element per driver and created a dedicated storage element, laying the foundation for advanced power-aware topology tracking.

  • USB DWC3 Controller Robustness. Resolved multiple DWC3 controller stability issues, fixing transfer resource assignments and ensuring continuous interrupt handling to prevent system suspend blocking.

  • Network Device FIDL Migration. Migrated underlying network device interfaces for virtio, dwmac, and gvnic drivers from Banjo to FIDL, alongside a DFv2 port for virtio.

  • Virtio Link State Fix. Fixed a virtio network driver issue where link state was not read on restart, preventing the netstack from receiving incorrect states after device suspension.

  • DWMAC Stability Enhancements. Eliminated edge-case failures by increasing device reset timeouts and fixed dispatcher crashes triggered by binding failures in the DWMAC driver.

  • SDMMC & SDIO System Hang Fixes. Corrected SDHCI bus idle logic and resolved a critical system hang in SDIO caused by an incorrect fallback to High-Speed mode.

  • Storage Partition Forwarding. Introduced a block-relay component that seamlessly forwards GPT partitions to the driver framework by generating nodes for each designated partition.

  • Platform Bus IOMMUs Support. Added a RegisterIommu API to the platform bus protocol to configure and construct multiple IOMMUs.

  • Interrupt Wake Vector Policy Change. Board drivers are now explicitly required to set interrupt wake vectors via metadata. Support for client drivers passing the ZX_INTERRUPT_WAKE_VECTOR flag is completely removed.

  • Sysmem Padding Constraints. Added pad_for_block_size and pad_beyond_image_size buffer constraints to assist participants requiring additional bytes past image boundaries for system optimizations.

Power Management

The following updates have been made for Power Management:

  • Introduced the fuchsia.power.cpu FIDL library and refactored CPU performance limits. The new DomainController protocol exposes the CPU as a cooling device in Starnix, while CPU boost logic now uses the fuchsia.hardware.cpu.ctrl:Device API to support RPPM.

  • Replaced the single SetBoost FIDL API with a multiplexed Boost API. The new protocol allows boosting the system via multiple sources simultaneously until the returned EventPair handle is dropped.

  • Removed all support for opportunistic dependencies in the Power Broker framework. Assertive dependency is now the sole supported requirement type, simplifying claim tracking and lease contingencies.

  • Improved battery percentage accuracy and charging current metrics. Battery level drops are now smoothed by a rate limiter, and the FIDL API now returns charging current in microamps (µA) with updated "Charging" field names.

  • Refactored battery telemetry and internal processing. The Battery Manager now enforces event ordering internally to prevent discarded updates and records voltage, capacity, and time-to-full estimates in Inspect only when meaningful changes occur.

  • Added hardware trippoint monitoring and enhanced thermal logging. Introduced the TrippointWatcher protocol to directly monitor hardware trippoints and updated thermal logging to accurately track maximum temperatures.

  • Migrated core power services to the unified Shutdown API. Previous reboot and power-off methods are deprecated in favor of Shutdown to ensure shutdown reasons are universally logged.

  • Added Inspect persistence and improved system observability. The power_state_recorder can now persist Inspect history to disk across reboots, while new wake lease events and health nodes improve timeline tooling and startup monitoring.

  • Made Suspender connection logic async in the System Activity Governor (SAG). This prevents SAG from blocking startup while waiting on the Suspender connection, allowing driver tokens to be fetched prior to starting drivers.

Rust

The following updates have been made for Rust:

Security

The following updates have been made for Security:

  • Scrutiny Configuration Updates. Added component_tree_config and boot args configurations to Scrutiny policies, enabling the ingestion of dynamic dictionaries and kernel arguments for accurate capability routing audits.

  • Sealing Keys API Update. Introduced the DeleteAllKeys function to Keymint sealing keys to support comprehensive key deletion operations.

  • TEE Manager Dependency Resolution. Moved tee_manager to the base package set and configured it to use the base resolver, preventing a dependency cycle where persistent storage could not be unlocked during package resolution.

  • Cryptography API and Certificate Updates. Rolled TLS root certificates and migrated codebase logic to the new fuchsia-merkle APIs, replacing deprecated MerkleTree methods.

Software Delivery

The following updates have been made for Software Delivery:

Starnix

The following updates have been made for Starnix:

Storage

The following updates have been made for Storage:

  • Block FIDL protocols unified. The Volume, Partition, and Block protocols have been unified into a single fuchsia.storage.block.Block FIDL protocol to decouple block components from the Driver Framework.

  • Blobfs stops serving blobs as files. Blobs are no longer served over fuchsia.io/File and must be accessed via BlobReader and written via BlobCreator or BlobWriter. Online compression and the VMEX capability have also been removed.

  • Blob volume flashing performance improved. Flashing a new blob volume is significantly faster (dropping from over 120s to under 40s) by having clients unsparse the payload.

  • Blobfs overwrite configuration exposed. An OverwriteConfiguration FIDL capability has been added to Blobfs and the SDK, allowing products to control blob overwrite state and formatting.

  • Fxfs 32-bit object IDs and caching. New Starnix volumes limit inode IDs to 32 bits (introducing a non-rollback Fxfs version change) and cache object keys to vastly improve GetAttributes performance.

  • Fxfs memory optimization. Fxfs reduces memory usage for merkle verification by at least 75% and now names backing VMOs for mutable files "fxfs-file" to aid memory profiling.

  • F2FS synchronization hardened. Fixed race conditions during orphan recycling and improved vnode hierarchy synchronization to reliably preserve data blocks for open orphan files.

  • Block Driver Framework improvements. A new block-relay component directly forwards system GPT partitions to the Driver Framework. Block server implementations also improved Force Unit Access (FUA) handling and moved request processing to a dedicated thread to prevent concurrency issues.

  • System-wide storage behavior updates. Unified read_dirents to consistently return ZX_ERR_BUFFER_TOO_SMALL for small buffers and removed hardcoded PAGE_SIZE assumptions in favor of dynamic checks to improve portability.

Testing

The following updates have been made for Testing:

  • fx test Timeouts, Statistics, and Reliability. fx test now delegates timeouts to test_manager to collect backtraces, disables them automatically during debugging, and adds a --pr stats flag. A bug causing the temporary package server to leak after errors was also fixed.

  • Shutdown and Reboot API Migration. Deprecated PerformReboot across testing interfaces (e.g., honeydew, sl4f) in favor of Shutdown and ShutdownOptions. This allows clients to specify explicit shutdown reasons, improving reboot reason tracking.

  • Lacewing and Honeydew Affordances. Added support for handling target IP changes during tests via device.register_for_on_device_ip_change(). The serial interface also gained a new read method to read bytes directly from the serial port.

  • Debugging and System Target Improvements. Updated test_manager to recursively attach DebugAgent, ensuring all components within a test's realm are covered. Additionally, debug_block devices can now be exposed as system test targets.

Timekeeping

The following updates have been made for Timekeeping:

  • Starnix /dev/rtc0 implementation. Added a passive /dev/rtc0 device in Starnix eliminates bogus rtc0 open errors.

  • Fine-grained alarm driver errors. Introduced fine-grained driver errors to the alarms FIDL API to improve unrecoverable error reporting.

  • Configurable Timekeeper backstop. Exposed the minimum UTC reference to backstop difference as an adjustable product assembly configuration.

Toolchain

The following updates have been made for Toolchain:

Tools

The following updates have been made for Tools:

  • fx: macOS support officially retired. The fx and related CLI tools are no longer built for macOS and now explicitly report the platform as unsupported.

  • New fx debug command. Added fx debug as a convenient wrapper around ffx debug connect that automatically starts an ephemeral package server if needed.

  • Deprecated fx unarchive-package. The fx unarchive-package devshell command has been retired and is fully superseded by ffx package archive extract.

  • New ffx target shell plugin. Introduced ffx target shell to establish an interactive shell session with the target device over RCS.

  • New ffx driver host subcommands. Introduced ffx driver host list and ffx driver host show, fully replacing the deprecated ffx driver list- hosts command.

  • Address filtering for ffx target list. Added --allow-addrs and --deny-addrs filtering options, replacing the deprecated --no-ipv4 and --no-ipv6 flags.

  • Fastboot unprovisioned device flashing. Fastboot now automatically detects unprovisioned devices with corrupt system containers during flashing, falling back to overwriting super directly or prompting for a full wipe.

  • Simplified ffx trace FIDL data. ffx trace now drops raw FIDL data by default to declutter the Perfetto UI, with a new --retain-raw-fidl flag available to override this behavior.

  • ffx doctor USB driver checks. ffx doctor now explicitly checks the ffx-usb-driver process status and warns if the socket path mismatches configured environments.

  • FDomain Client API Expansion and Synchronization Refactor. The FDomain client API gained multiple functional improvements and fixes for hanging tasks on transport death. Standard library locks were also migrated to fuchsia_sync to automatically surface lock cycle deadlocks.

  • Debugger exception handling improvements. zxdb now correctly steps over exceptions, captures full stack traces for general crashes, and includes a new exception-info verb for detailed exception printing.

Tracing

The following updates have been made for Tracing:

UI

The following updates have been made for UI:

  • Prevented GPU fallback for empty scenes. Added a default black display layer in Scenic to prevent accidental GPU fallbacks that previously degraded performance on empty scenes.

  • Removed CpuRender from Scenic. Removed the CpuRender option within Scenic to simplify and streamline rendering paths.

  • Enabled Flatland display rendering reuse. FlatlandDisplay.SetContent() can now be called repeatedly, enabling better reuse of display instances across tests and applications.

  • Optimized Scenic composition performance. Recycled SceneState and skipped ViewTree recomputations when no diff exists, significantly reducing per-frame CPU allocation overhead.

  • Fixed Escher compositor color artifacts. Corrected color premultiplication in RectangleCompositor to prevent visual double multiplication artifacts for non-premultiplied blend modes.

  • Consolidated UI input handlers. Moved all UI input handlers to a single event loop, averting CPU priority shifting and significantly improving input latency consistency.

  • Added Wake Lease support to Input Pipeline. Pointer injectors, mouse, touch, and buttons in the input pipeline now fully manage system wake leases.

  • Input pipeline and virtcon shortcuts. Resolved input pipeline racing crashes by ensuring shortcuts are registered only after the pipeline starts.

Video

The following platform updates have been made for Video:

  • Page-aligned VMO allocations and dynamic page size support. Updated camera and media components to use runtime page sizes and page-aligned allocations to comply with strict zx_vmo_create_contiguous requirements.

WLAN and Connectivity

The following platform updates have been made for WLAN and Connectivity: