node-idevice is a Node.js wrapper for the `ideviceinstaller` command-line utility, designed to programmatically manage applications on iOS devices. It allows developers to install, remove, and list applications on a connected physical iOS device. The current stable version is `0.1.6`, published in 2017, indicating it is likely abandoned and no longer actively maintained. Its release cadence was irregular prior to cessation of development. A key differentiator is its ability to integrate iOS app management directly into Node.js workflows, such as CI/CD pipelines or automated testing setups, leveraging the robust `libimobiledevice` ecosystem. However, it relies heavily on the `ideviceinstaller` binary being pre-installed on the host system, typically via Homebrew, and exclusively uses a callback-based API, predating modern async/await patterns.
npm install node-ideviceVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates how to install an IPA package on a connected iOS device, wait for the installation to complete, list all installed applications, and then remove the newly installed app. It highlights the callback-based API and the dependency on the `ideviceinstaller` binary.
Install `ideviceinstaller` using your system's package manager (e.g., `brew install ideviceinstaller` on macOS) or specify its full path during `IDevice` instantiation.
Wrap callback-based functions in `Promise` constructors or use utility libraries (e.g., `util.promisify` for Node.js built-ins, or custom wrappers) to convert them to Promise-based APIs for `async/await` usage.
Ensure your `ideviceinstaller` binary is up-to-date and compatible with the target iOS device's version. You might need to build `libimobiledevice` tools from source for bleeding-edge compatibility, or consider alternative, more actively maintained tools for recent iOS versions.
Verify the `appBundleId` argument precisely matches the bundle identifier specified in the IPA's `Info.plist`. You can often inspect this by unzipping the IPA and checking the `Payload/*.app/Info.plist`.
Ensure a physical iOS device is connected, unlocked, trusted by the computer, and has Developer Mode enabled in its settings. Disconnect and reconnect the device if issues persist.
Install `ideviceinstaller` via Homebrew: `brew install ideviceinstaller`. If installed, ensure its directory is included in your system's PATH environment variable, or specify the full path to `ideviceinstaller` when instantiating `IDevice` (e.g., `new IDevice(false, { cmd: '/usr/local/bin/ideviceinstaller' })`).Ensure an iOS device is physically connected via USB, unlocked, has 'Trust This Computer' accepted, and Developer Mode is enabled in its settings. Try reconnecting the device or restarting the `ideviceinstaller` process.
Verify the integrity of the IPA file. Ensure it's a valid, signed application package compatible with the target device's iOS version and processor architecture. Check `ideviceinstaller`'s verbose output (if available) for more specific errors. Rebuild the IPA if necessary.