mrkeyoor.com_
Wed 30 Sept 13:01 UTC
Automationevaluationupdated 30 Sept 2026

appium review

Appium is a test-automation server that lets one style of test control native, hybrid, mobile-web, and desktop apps through installable platform drivers. It gives teams a common interface across device families while letting each driver handle the platform-specific work.

Verdict

Our Appium run passed all 416 tests after a 61-second install, but it left 573 MB of dependencies and 14 high-severity audit findings, so it earns its keep only when one automation protocol must cover several app platforms. Use it for mixed Android and iOS estates, multi-language test teams, or device-cloud infrastructure. For one native platform or mobile web alone, a narrower tool removes a server and a driver from the path.

We ran it

Lab card: what happened when we ran appiumScreenshot of appium (appium.io)
Install✓ · 61s1173 packages · 573 MB
Build✓ · 7s
Tests✓ · 63s416 passed · 0 failed of 416 (node:test)
Known vulns210 critical · 14 high · 1 moderate · 6 low (npm audit)
Repo960 files~66,921 lines of source · 12.1 MB · 16 CI workflows

Answers from our run

Does appium build from source?

Dependencies installed in 61 seconds (1173 packages), and the build succeeded in 7 seconds. We cloned commit bbf8493 into a clean Debian container with 3 CPUs and no project-specific setup.

Do appium's tests pass?

Yes: 416 of 416 passed when we ran the project's own test command (node:test). Some failures need services or credentials a bare container does not have.

Does appium have known vulnerabilities in its dependencies?

npm audit flagged 21 known advisories in the dependency tree at the time of our run.

Who should not use appium?

Android-only or iOS-only teams happy with vendor tools: Appium adds an HTTP server, a client, and a driver between the test and the platform API.

What are the alternatives to appium?

Detox, Maestro, Playwright. Our Appium run passed all 416 tests after a 61-second install, but it left 573 MB of dependencies and 14 high-severity audit findings, so it earns its keep only when one automation protocol must cover several app platforms.

Setup3/5Green core checks; drivers and platform SDKs stay separate
Docs5/5Clear install, architecture, driver, client, and migration guides
Community5/522,036 stars, a September 30 push, and active issue work
Maturity4/5Stable 3.8 release, with 21 audit findings in our install

Who it’s for

QA teams maintaining the same user journeys across Android and iOS.
Organizations that want Java, Python, Ruby, or .NET test clients to share one automation server.
Tooling teams that need installable drivers and plugins for several app platforms.

Who it’s NOT for

Android-only or iOS-only teams happy with vendor tools: Appium adds an HTTP server, a client, and a driver between the test and the platform API.
Developers expecting npm install to produce a working device test: the README says the core server cannot automate anything until a driver is installed, and Android also needs its SDK, a JDK, and a device or emulator.
Linux or Windows teams that must run iOS automation locally: Appium's own quick start says the iOS driver requires macOS.
Operators required to terminate TLS inside Appium on Node 24 today: open issue #22683 reports a startup failure with certificate and key paths on Node 24.20.0, while Node 22.23.2 worked for the reporter.

Setup reality

Our sandbox installed commit bbf8493 in 61 seconds, adding 1,173 packages and using 573 MB on disk. The build passed in 7 seconds, then all 416 node:test cases passed in 63 seconds. Npm audit still reported 21 known vulnerabilities: 14 high, 1 moderate, and 6 low. Our measurement setup was an unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets.

Appium 3.8.0 requires Node ^20.19.0, ^22.12.0, or 24 and newer, plus npm 10 or newer. The local server path names no account or API key, but the core package ships without a platform driver. Android adds the SDK, a JDK, environment variables, and a connected device or emulator.

The server listens on port 4723 by default, and clients connect over HTTP. iOS automation requires macOS, while parallel-session support and the best process layout depend on the chosen driver. Installing the core is therefore the short part; proving the driver, device, and host combination is the real setup.

One WebDriver protocol reaches several app platforms

Appium 3.8.0 gives native, hybrid, mobile-web, and desktop automation the same basic conversation. A test client sends WebDriver commands to an Appium server. An installed driver translates those commands into the platform's own automation system, such as XCUITest on iOS.

The common interface has boundaries. Appium's architecture guide says some WebDriver commands do not make sense on every platform, with cookies in native mobile apps as its example. Official client libraries cover Java, Python, Ruby, and .NET C#, while other languages depend on third-party clients. You gain a shared vocabulary, not identical platform behavior.

The core install stops before the first device command

Our 61-second npm install produced an Appium server that could not automate a device by itself. You must add a driver, select it through capabilities, run the server, and point a client at it. That modularity keeps unused platforms out of the core, but it moves the working setup across several packages.

Appium 3.8.0 requires npm 10 or newer and Node ^20.19.0, ^22.12.0, or at least 24.0.0. The basic server runs on macOS, Linux, or Windows. The official requirements warn that platform drivers usually need the matching developer toolchain and SDKs.

What happened when we ran it

In our sandbox, we measured a 61-second install at commit bbf8493, which added 1,173 packages. The dependency tree occupied 573 MB. The build completed in 7 seconds, and the node:test run finished in 63 seconds with 416 passed and 0 failed. The container had 3 CPUs, 8 GB of RAM, Node 22, and no secrets.

The checkout contained 960 files, about 66,921 lines of source, and 12.1 MB before installation. We found 16 CI workflow files, a workspace monorepo, no Dockerfile, and no top-level tests directory. Npm audit reported 21 known vulnerabilities: 14 high, 1 moderate, and 6 low. We did not attach an Android device, boot an iOS simulator, or measure session speed, so the 416 passes say nothing about a real app flow.

Drivers widen coverage and split the upgrade surface

Appium 3.8.0's extension CLI installs, lists, updates, and removes drivers independently. Ordinary updates avoid a new major version unless you pass --unsafe. The server, driver, client, and platform SDK can therefore move on different schedules. Reproducing a failure requires recording every one of those versions.

The project supports only the most recent Appium release, according to its upgrade section. Appium 3.8.0 shipped on September 24, 2026, while 4.0.0-beta.2 followed on September 27. Teams on Appium 1 or 2 get migration guides, but long-lived device labs still need planned upgrade work. The stable core is mature; the surrounding extension graph needs ownership.

Android needs an SDK and JDK, while iOS needs macOS

Appium 3.8.0's Android quick start asks for an Android SDK platform, Platform-Tools, ANDROID_HOME, a Java JDK, JAVA_HOME, and either an emulator or a USB-debuggable device. It then installs the UiAutomator2 driver separately. appium driver doctor uiautomator2 checks those prerequisites and aims for 0 required fixes.

The same guide chooses Android because iOS automation requires macOS. Parallel execution is possible through multiple server processes or driver sessions, but the README sends you back to each driver's documentation for the right mode. Appium starts on 0.0.0.0:4723 by default, so a shared lab must also decide where the server binds and how remote clients reach it.

The HTTP server permits mixed client languages

In Appium 3.8.0, the server runs separately from the test process and accepts WebDriver requests over HTTP. That is why a Python suite can drive the same server architecture as a Java or C# suite. It also suits device-cloud providers: the client can live on one machine while the server, driver, and device live elsewhere.

The network boundary adds one current wrinkle. Open issue #22683 reports that Appium 3.7.0 failed to start with TLS certificate paths on Node 24.20.0, although the reporter's Node 22.23.2 setup worked. The issue remained open after an update on September 8, 2026. Teams that terminate TLS inside Appium should reproduce that exact path before choosing Node 24.

September activity is strong, while the audit needs attention

The repository was pushed on September 30, 2026, the day of this review. GitHub showed 22,036 stars and 46 combined open issues and pull requests, which split into 37 issues and 9 pull requests. Stable Appium 3.8.0 was six days old, and the latest beta was three days old. Those dates and the active queue show current maintenance rather than a project coasting on its name.

Maturity does not cancel dependency maintenance. Our fresh install's 14 high-severity findings need triage against actual runtime paths before a shared server goes live. The lab result establishes their presence, not exploitability. It also weighs against treating the core as a tiny coordinator: 1,173 packages and 573 MB are material costs before any driver, SDK, simulator, or app enters the system.

Pick Appium when platform breadth pays for the extra layers

With all 416 core tests passing, Appium makes sense when Android and iOS tests must share conventions, or when a device service needs a language-neutral protocol. Detox is more focused for React Native gray-box testing. Maestro offers flatter YAML flows across mobile and web. Playwright is cleaner when every target is a browser.

The deciding evidence is concrete: our core build passed, all 416 tests passed, and the repository moved on September 30. The cost is equally concrete: the core alone automates nothing, the install used 573 MB, and Android still asks for its SDK and JDK. Choose Appium when one protocol will replace several test stacks. For a single platform, those layers arrive before the first useful assertion.

Alternatives

ProjectWhat it isPick it when
DetoxA gray-box end-to-end framework built around React Native apps.pick this instead when your app is React Native and automatic synchronization matters more than broad client-language support.
MaestroA YAML-based UI testing framework for Android, iOS, and web apps.pick this instead when readable flows and a smaller authoring surface matter more than WebDriver compatibility.
Playwright gh↗A browser automation framework for Chromium, Firefox, and WebKit.pick this instead when the target is mobile web and you do not need native app controls.

What people are saying

  1. [velocity-scout] appium/appium

Sources

  1. Appium repository and README
  2. Appium system requirements at tested commit
  3. How Appium works
  4. UiAutomator2 quick start
  5. Appium 3.8.0 release
  6. Node 24 TLS startup issue

More automation reviews

huashu-mac-use · cloudflare-turnstile-solver · stop-stutter · warp-masque-actions · ansible · ffmpeg-skill · the whole board →