# What changed in appium

> 19 changes in appium 3 from its official release notes, upgrade guides and advisories: 1 breaking, 7 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/appium/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## appium 3

### Breaking changes

- Parses --webhook as a URI rather than as host:port. (3.7.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.7.0)

### New APIs and options

- Installed extension commands accept package names, allowing developers to invoke them by package name. (3.8.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.8.0)
- Adds a front router for global extension middleware. (3.7.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.7.0)
- The storage plugin adds route aliases. (3.7.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.7.0)
- Adds an option to tolerate unrecognized server CLI arguments. (3.6.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.6.0)
- Drivers and plugins can communicate through IPC channels scoped to each session. (3.5.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.5.0)
- The maximum count of topics per session is limited and can be configured. (3.5.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.5.0)
- Adds three WebDriver extension endpoints. (3.4.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.4.0)

### Behavior and default changes

- The verbose extensions list now includes repository links, helping developers identify extension source repositories. (3.2.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.2.0)

### Fixes and other changes

- A directory is no longer treated as a CLI argument file. (3.8.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.8.0)
- Insecure feature prefixes are matched by automationName, case-insensitively. (3.8.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.8.0)
- A sibling folder is no longer treated as a subpath of the root. (3.7.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.7.0)
- The delete request now uses fs.sanitizeName to sanitize names. (3.5.1) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.5.1)
- Fixes plugins caching per session. (3.3.1) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.3.1)
- Fixes normalization of CLI arguments. (3.2.1) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.2.1)
- Ensures there is a single logger instance per process. (3.2.1) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.2.1)
- Prevents plugins from being attached to a non-existing session. (3.2.1) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.2.1)
- Fixed Appium symlink behavior across driver and plugin installations. (3.2.0) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.2.0)
- Appium injects symlinks for all installed extensions. (3.1.1) — [release notes](https://github.com/appium/appium/releases/tag/appium%403.1.1)
