Updating the Appium server changes the npm package that owns the appium command. Mobile test suites can keep pointing at an older server binary after client libraries, CI images, or extension documentation have moved on, and the core package update should stay separate from driver and plugin maintenance.

The Appium server package is installed with npm. The update must run in the shell environment that owns the current global appium command, especially on machines that use nvm, Volta, Homebrew, or another Node.js manager.

Drivers and plugins live under the active APPIUM_HOME and are not replaced by reinstalling the server package. After the server package reports the target version, start the server once and query its status endpoint before moving on to extension updates or test-suite smoke checks.

Steps to update the Appium server package:

  1. Stop any running Appium server process.

    A running server keeps the package code it loaded at startup. Stop it before replacing the global appium package, then start it again after the version check passes.

  2. Check the active Node.js version.
    $ node --version
    v22.22.1

    Appium 3 requires Node.js in the range ^20.19.0 || ^22.12.0 || >=24.0.0. Install a current Node.js release before updating Appium if this command prints an older version.

  3. Check the active npm version.
    $ npm --version
    11.17.0

    The current Appium server package declares npm version 10 or newer. Upgrade npm or install a newer Node.js distribution before continuing if this command prints 9.x or older.

  4. Check the installed Appium server version.
    $ appium --version
    3.4.2
  5. Check whether the global Appium package is behind the latest npm tag.
    $ npm outdated --global appium
    Package  Current  Wanted  Latest  Location             Depended by
    appium     3.4.2   3.5.0   3.5.0  node_modules/appium  lib

    No output means the selected global npm prefix does not have an older appium package to report.

  6. Update the Appium server package from npm.
    $ npm install --global appium@latest
    
    added 3 packages, removed 38 packages, and changed 321 packages in 3s

    This replaces the core appium package only. It does not update drivers or plugins stored in APPIUM_HOME.

  7. Confirm that the appium command now reports the target server version.
    $ appium --version
    3.5.0
  8. Start the updated server on the local loopback address.
    $ appium --address 127.0.0.1 --port 4723 --log-level info
    [Appium] Welcome to Appium v3.5.0
    [Appium] Non-default server args:
    [Appium] { address: '127.0.0.1', loglevel: 'info' }
    [Appium] Appium REST http interface listener started on http://127.0.0.1:4723
    [Appium] No drivers have been installed in ~/.appium. Use the "appium driver" command to install the one(s) you want to use.
    [Appium] No plugins have been installed. Use the "appium plugin" command to install the one(s) you want to use.

    The no-drivers and no-plugins lines are expected in a server-only check. A project with installed extensions should start the server with the same APPIUM_HOME used by its tests.
    Related: How to start the Appium server

  9. Query the status endpoint from another terminal.
    $ curl --silent http://127.0.0.1:4723/status
    {"value":{"ready":true,"message":"The server is ready to accept new connections","build":{"version":"3.5.0"}}}

    ready set to true proves the updated server can accept WebDriver requests. Run a driver or plugin smoke test separately when the maintenance window also changes extensions.

  10. Stop the verification server in the original terminal with Ctrl-C.