NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #836 by repository stars
Last release 6 days ago
02 Oct 2026
Release timing varies
gaps range from 8 days to 2 months
Rarely documented
notes for 10 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
479 releases · first in 2019
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
accessibility: the AX inspector no longer deadlocks the DTX connection. hostInspectorMonitoredEventTypeChanged events are now consumed continuously, s
hostInspectorMonitoredEventTypeChanged events are now consumed continuously, so registering the inspector can't block the connection's single reader goroutine (which would silently stall every channel on that connection). Also adds DisableSelectionMode(). Thanks to @sakhisheikh for the fix (#823).browseApps (BrowseAllApps / BrowseUserApps) now bounds its receive loop. It aborts with a clear error after a sane maximum number of chunks instead of accumulating unbounded memory when a device never returns Status: "Complete", fixing a potential multi-gigabyte heap growth on misbehaving devices. Thanks to @UMR-Haozi for the thorough report (#818).Nothing published for this version
Nothing published for this version
syslog: ios syslog now decodes BSD vis escapes, so non-ASCII log text (e.g. CJK/Chinese) renders correctly instead of appearing as \M- escape sequence
ios syslog now decodes BSD vis escapes, so non-ASCII log text (e.g. CJK/Chinese) renders correctly instead of appearing as \M- escape sequences (#687).ios image auto resolves an already-downloaded developer disk image from the base directory before making any network request, so it works fully offline; DDI selection is now deterministic and cached image paths are contained within the base directory (#644).VendDocuments when VendContainer is denied, so ios fsync --app=<bundleID> now works on App Store apps that previously failed with InstallationLookupFailed (#593).netsh/ifconfig output, the command that was run, and its exit status, plus an elevation hint and a suggestion to use --userspace (#545).ios webinspector launch <url> now runs the webinspector launcher instead of being misrouted to ios launch; related command-dispatch collisions were also hardened (#769).ios help pcap now includes practical usage examples, and the help catalog gained an examples field. Thanks to @sssppp-cooled for the contribution (#816).proxy.mobileconfig files from the repository root so they no longer leak into release assets (#731).Nothing published for this version
Two rounds of hardening against malformed/hostile input ( #791 , #792 ): eliminated panics, unbounded allocations, and hangs across the untrusted-inpu
GO_IOS_API_KEY=<token> (enforced as a bearer token on /api/v1) or pass --disable-auth to run without it. If neither is provided, the server refuses to start.basedir path traversal, capped image uploads, and fixed a single-request server kill (/notifications) and a 100% CPU streaming busy-loop.RsdPortForService; hint at outdated DDIs (#787).Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
fix(imagemounter): derive EPRO/ESEC from RestoreRequestRules for TSS #781
Nothing published for this version
New ios ui run (wda | devicekit) — bring up a WebDriverAgent or DeviceKit UI-automation runner and forward its port, the run counterpart to ui downloa
ios ui run (wda | devicekit) — bring up a WebDriverAgent or DeviceKit UI-automation runner and forward its port, the run counterpart to ui download/ui install (#761).ios ax audit runs the on-device accessibility audit on iOS 14–18, with structured output (#618).runtest / runxctest now emit test results as JSON to stdout, always (#573).devicestate / resetlocation / setlocationgpx (#756).TunnelManager — skip network devices and back off failed ones (#682).forward: stop logging normal connection teardown as errors (#754, #639) and make teardown race-free (#762).instruments: retry transient device launch failures (NSError code 2), fixing flaky ios launch (#763).--pair-record-path=default is TCC-blocked on macOS 26+ (#747).This release was made possible by a fantastic group of contributors — thank you all:
ios ax audit (#618). 🎉forward logging normal connection teardown as errors, with a clean half-duplex refactor (#754).TunnelManager, complete with overnight lsof evidence (#682). Excellent debugging.runtest/runxctest emit machine-readable JSON results, so test output is finally pipeable (#573, #574).…and @danielpaulus for the WebInspector/CDP bridge, ios ui run, the tunnel and signing work, and shepherding it all in. 🚀
Several of these PRs had been waiting a while and were rebased onto current main with the contributors' original authorship preserved. Thank you for your patience and your excellent work — go-ios is better because of you.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Performance instrumentation ( #365 , @kissfu )
New instruments-backed services for live device telemetry: network statistics, battery, sysmontap system monitoring, and FPS / OpenGL graphics metrics. Useful for profiling app performance and resource usage directly from the CLI/library, with configurable network timeouts.
New wallpaper and icon-layout commands to read the device's home-screen wallpaper and springboard icon arrangement.
Add and remove Wi-Fi connection profiles on a device. Inputs are validated up front, and the command clearly reports when the device must be supervised for the operation to succeed rather than failing obscurely.
New support for shutting a device down programmatically.
ConnectionType in device details (#698, @Harrilee)ios list now reports each device's ConnectionType (USB or Network), so devices reachable over the network are distinguishable from USB-attached ones. Covered by the e2e device suite.
The tunnel-info HTTP API's bind host is now configurable instead of being hard-coded, making it easier to run the tunnel daemon in containerized or remote setups.
resetaccessibility endpoint (#637, @iSevenDays)New endpoint to reset a device's iOS accessibility settings (including font size and related options) back to defaults.
GetUsbmuxdSocket / USBMUXD_SOCKET_ADDRESS handling was rewritten: an explicit scheme (unix://, tcp://) is honored as-is (and case-insensitively), a bare host:port is treated as TCP, and a bare path is treated as a unix socket — without the previous panic on unscheme'd host:port values.
go-ios no longer depends on logrus. All library logging now flows through a thin ios/golog slog seam with consistent, filterable attributes (module, udid, and instance identifiers). Library embedders can route go-ios's logs into their own handler with ios.SetLogger(*slog.Logger); if you do nothing, standard slog.Default() behavior applies.
⚠️ Embedder-facing change: the logrus dependency has been removed and
debugproxy's logger-typed signatures changed accordingly. CLI users are unaffected.
e2e suite (#735, @danielpaulus)AGENTS.md documenting build/test, real-device CI, the logging convention, and the dispatch-only release process (#734, @danielpaulus)Thanks to everyone who contributed to this release: @kissfu, @aluedeke, @gbalduzzi, @Harrilee, @iSevenDays, and @Ylarod. 🎉
Nothing published for this version
Redesigned help output — ios --help now shows a clean, sectioned layout (global options + a full command table with one-line descriptions) instead of
ios --help now shows a clean, sectioned layout (global options + a full command table with one-line descriptions) instead of the raw docopt usage block. ios help <command>, ios <command> --help, and ios <command> -h are all equivalent, including nested subcommands like ios help tunnel start. (#716)KillApp — fixed kill-by-bundle-ID, which stopped matching after CFBundleIdentifier/CFBundleExecutable became method calls on the app model. (#729)First release published to npm since 1.0.213 — npm publishing broke when npm revoked legacy tokens, and is now restored on secure OIDC trusted publish
First release published to npm since 1.0.213 — npm publishing broke when npm
revoked legacy tokens, and is now restored on secure OIDC trusted publishing.
This release also makes the npm package install correctly on Windows for the
first time.
ostrace --follow — persistent log streaming that survives process restarts. Auto-reconnects when the target process exits/restarts: with --process=<name> it re-resolves the new PID, with an explicit --pid it exits cleanly when that PID ends. (#719)ostrace plain-text output — --nojson now prints structured, human-readable lines [timestamp] PID:##### <Level> [subsystem:category] message instead of raw JSON, with ANSI color coding (Info=cyan, Debug=gray, Error=red, Fault=bold red). Colors are emitted only when stdout is a TTY, so pipes and files stay clean. (#718)identity-not-found failures on newer chips (e.g. A19 Pro) and adds a manifest fast-path that skips the nonce + Apple TSS round-trip on re-mounts when a valid personalization manifest already exists. (#720, #723)npm i -g go-ios previously installed a binary that wasn't on PATH (the postinstall placed it in a non-PATH bin subfolder), so ios was uncallable on Windows. The binary is now installed to the correct location. (#730)LC_UUID load command; without it, macOS 26's dyld rejects them with abort trap. (#723)NODE_AUTH_TOKEN; releases authenticate per-run via GitHub OIDC, with provenance attestations. (#727)go-ios-canary package to validate the full release flow without shipping. (#727)make-release label. (#726)/test-devices comment. (#723, #725, #726)Nothing published for this version
Merge pull request #725 from danielpaulus/daniel/ci-gate-real-device
Merge pull request #725 from danielpaulus/daniel/ci-gate-real-device
ci: run real-device e2e only after unit tests pass
Merge pull request #720 from zt-luo/imagemounter-ddi-fix
Merge pull request #720 from zt-luo/imagemounter-ddi-fix
imagemounter: fetch DDI from Deviceboxhq and improve mount reliability
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →