Last updated on : 09 Jan 2026
Pcloudy Appium Versions
Pcloudy supports multiple versions of Appium to ensure compatibility with your existing test automation infrastructure while enabling you to adopt the latest features.
Why Multiple Appium Versions?
- Flexibility: Choose the version that works best for your project
- Backward Compatibility: Continue using older versions while planning migration
- Latest Features: Access new capabilities in Appium 2.x and 3.x
- Stable Testing: Pin to specific versions for consistent test execution
Appium Evolution on Pcloudy
Appium 1.x (Legacy) → Appium 2.x (Current) → Appium 3.x (Future)
2. Supported Appium Versions
Currently Supported Versions
| Appium Version | Status | Recommended | Android Support | iOS Support | EOL Date |
|---|---|---|---|---|---|
| 3.x | ✅ Stable | ⭐ Yes | ✅ All | ✅ All | - |
| 2.0.0 | ✅ Stable | ⭐ Yes | ✅ All | ✅ All | - |
| 1.22.3 | ⚠️ Legacy | - | ✅ All | Not Supported | Dec 31, 2025 |
| 1.22.2 | ⚠️ Legacy | - | ✅ All | Not Supported | Dec 31, 2025 |
Version Recommendations
For New Projects:
- Use Appium 2.0.0 or 3.x for best compatibility and features
For Existing Projects:
- Appium 1.x: Plan migration to 2.0.0 before EOL
- Appium 2.0.0: Stable and recommended
- Appium 3.x: Latest features, fully supported
3. Selecting Appium Versions
Method 1: Using Pcloudy:options (Recommended)
This is the recommended way to specify Appium version on Pcloudy:
- Java
- Python
- Javascript (Node.Js)
- C#
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import java.util.HashMap;
public class AppiumVersionExample {
public static void main(String[] args) throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
// Standard Appium capabilities
capabilities.setCapability("appium:newCommandTimeout", 600);
capabilities.setCapability("appium:launchTimeout", 90000);
capabilities.setCapability("appium:platformVersion", "16.0.0");
capabilities.setCapability("appium:platformName", "Android");
capabilities.setCapability("appium:automationName", "uiautomator2");
// Pcloudy-specific options
HashMap<String, Object> PcloudyOptions = new HashMap<String, Object>();
PcloudyOptions.put("Pcloudy_Username", "your.email@example.com");
PcloudyOptions.put("Pcloudy_ApiKey", "your_api_key_here");
PcloudyOptions.put("Pcloudy_DeviceFullName", "GOOGLE_Pixel10_Android_16.0.0_8fcb5");
PcloudyOptions.put("Pcloudy_WildNet", false);
PcloudyOptions.put("Pcloudy_EnableVideo", true);
PcloudyOptions.put("Pcloudy_EnablePerformanceData", true);
PcloudyOptions.put("Pcloudy_EnableDeviceLogs", false);
// Specify Appium version
PcloudyOptions.put("appiumVersion", "2.0.0"); // or "3.0.0", "1.22.3", etc.
capabilities.setCapability("Pcloudy:options", PcloudyOptions);
// Connect to Pcloudy Appium hub
AndroidDriver driver = new AndroidDriver(
new URL("https://device.Pcloudy.com/appiumcloud/wd/hub"),
capabilities
);
// Your test code here
driver.quit();
}
}
from appium import webdriver
from appium.options.android import UiAutomator2Options
def create_driver():
options = UiAutomator2Options()
# Standard Appium capabilities
options.new_command_timeout = 600
options.platform_name = 'Android'
options.platform_version = '16.0.0'
options.automation_name = 'uiautomator2'
# Pcloudy-specific options
Pcloudy_options = {
'Pcloudy_Username': 'your.email@example.com',
'Pcloudy_ApiKey': 'your_api_key_here',
'Pcloudy_DeviceFullName': 'GOOGLE_Pixel10_Android_16.0.0_8fcb5',
'Pcloudy_WildNet': False,
'Pcloudy_EnableVideo': True,
'Pcloudy_EnablePerformanceData': True,
'Pcloudy_EnableDeviceLogs': False,
'appiumVersion': '2.0.0' # Specify version
}
options.set_capability('Pcloudy:options', Pcloudy_options)
# Connect to Pcloudy
driver = webdriver.Remote(
'https://device.Pcloudy.com/appiumcloud/wd/hub',
options=options
)
return driver
# Use the driver
driver = create_driver()
# Your test code
driver.quit()
const { remote } = require('webdriverio');
const options = {
protocol: 'https',
hostname: 'device.Pcloudy.com',
port: 443,
path: '/appiumcloud/wd/hub',
capabilities: {
// Standard Appium capabilities
'appium:newCommandTimeout': 600,
'appium:platformName': 'Android',
'appium:platformVersion': '16.0.0',
'appium:automationName': 'uiautomator2',
// Pcloudy-specific options
'Pcloudy:options': {
Pcloudy_Username: 'your.email@example.com',
Pcloudy_ApiKey: 'your_api_key_here',
Pcloudy_DeviceFullName: 'GOOGLE_Pixel10_Android_16.0.0_8fcb5',
Pcloudy_WildNet: false,
Pcloudy_EnableVideo: true,
Pcloudy_EnablePerformanceData: true,
Pcloudy_EnableDeviceLogs: false,
appiumVersion: '2.0.0' // Specify version
}
}
};
(async () => {
const driver = await remote(options);
// Your test code here
await driver.deleteSession();
})();
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import java.util.HashMap;
public class AppiumVersionExample {
public static void main(String[] args) throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
// Standard Appium capabilities
capabilities.setCapability("appium:newCommandTimeout", 600);
capabilities.setCapability("appium:launchTimeout", 90000);
capabilities.setCapability("appium:platformVersion", "16.0.0");
capabilities.setCapability("appium:platformName", "Android");
capabilities.setCapability("appium:automationName", "uiautomator2");
// Pcloudy-specific options
HashMap<String, Object> PcloudyOptions = new HashMap<String, Object>();
PcloudyOptions.put("Pcloudy_Username", "your.email@example.com");
PcloudyOptions.put("Pcloudy_ApiKey", "your_api_key_here");
PcloudyOptions.put("Pcloudy_DeviceFullName", "GOOGLE_Pixel10_Android_16.0.0_8fcb5");
PcloudyOptions.put("Pcloudy_WildNet", false);
PcloudyOptions.put("Pcloudy_EnableVideo", true);
PcloudyOptions.put("Pcloudy_EnablePerformanceData", true);
PcloudyOptions.put("Pcloudy_EnableDeviceLogs", false);
// Specify Appium version
PcloudyOptions.put("appiumVersion", "2.0.0"); // or "3.0.0", "1.22.3", etc.
capabilities.setCapability("Pcloudy:options", PcloudyOptions);
// Connect to Pcloudy Appium hub
AndroidDriver driver = new AndroidDriver(
new URL("https://device.Pcloudy.com/appiumcloud/wd/hub"),
capabilities
);
// Your test code here
driver.quit();
}
}
Appium 2.x
| Version | Release Date | EOL Date | Android Driver | iOS Driver | Notes |
|---|---|---|---|---|---|
| 2.0.0 | ⭐ Stable | - | UiAutomator2 3.x | XCUITest 7.x | Recommended for production |
| 2.0.0-beta.71 | Sep 2024 | - | UiAutomator2 3.x | XCUITest 7.x | Latest beta features |
| 2.0.0-beta.66 | Apr 2023 | - | UiAutomator2 2.24.x | XCUITest 4.27.x | Older beta |
Appium 2.0.0 (Recommended)
Included Drivers:
- appium-uiautomator2-driver: 3.9.6
- appium-xcuitest-driver: 7.35.0
- appium-flutter-driver: 2.11.0
- appium-flutter-integration-driver: 1.1.3
Platform Support:
- ✅ Android 5.0 - 16.0
- ✅ iOS 10.0 - 18.0
Key Features:
- ✅ Plugin architecture
- ✅ Simplified setup
- ✅ Better performance
- ✅ Improved stability
- ✅ Modern automation patterns
Appium 1.x (Legacy)
| Version | Release Date | EOL Date | Android Support | iOS Support | Notes |
|---|---|---|---|---|---|
| 1.22.3 | Apr 2022 | Dec 31, 2025 | ✅ Up to Android 12 | ✅ Up to iOS 15 | Final 1.x version |
| 1.22.2 | Jan 2022 | Dec 31, 2025 | ✅ Up to Android 12 | ✅ Up to iOS 15 | Legacy support |
⚠️ Important: Appium 1.x is end-of-life. Please migrate to Appium 2.0.0 or 3.x.
Limitations:
- ❌ Limited Android 13+ support
- ❌ Limited iOS 16+ support
- ❌ No new features
- ❌ No bug fixes
5. Platform Support Matrix
Android Support
| Android Version | Appium 3.x | Appium 2.0.0 | Appium 1.22.x | Automation Name |
|---|---|---|---|---|
| Android 16.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 15.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 14.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 13.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 12.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 11.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 10.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 9.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 8.1 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 8.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 7.1 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 7.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 6.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator2 |
| Android 5.1 | ✅ Full | ✅ Full | ✅ Full | UiAutomator1 |
| Android 5.0 | ✅ Full | ✅ Full | ✅ Full | UiAutomator1 |
iOS Support
| iOS Version | Appium 3.x | Appium 2.0.0 | Appium 1.22.x | Automation Name |
|---|---|---|---|---|
| iOS 18.0 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 17.5 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 17.0 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 16.6 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 16.0 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 15.7 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 15.0 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 14.8 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 14.0 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 13.7 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 13.0 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 12.5 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
| iOS 11.4 | ✅ Full | ✅ Full | ✅ Full | XCUITest |
6. Capabilities Reference
Complete Capability Example
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import java.util.HashMap;
DesiredCapabilities capabilities = new DesiredCapabilities();
// ============================================
// STANDARD APPIUM CAPABILITIES
// ============================================
// Platform Capabilities
capabilities.setCapability("appium:platformName", "Android"); // or "iOS"
capabilities.setCapability("appium:platformVersion", "16.0.0");
capabilities.setCapability("appium:deviceName", "Google Pixel 10");
capabilities.setCapability("appium:automationName", "uiautomator2"); // or "XCUITest" for iOS
// App Capabilities
capabilities.setCapability("appium:app", "cloud://APP_ID"); // App uploaded to Pcloudy
// OR
capabilities.setCapability("appium:appPackage", "com.example.app");
capabilities.setCapability("appium:appActivity", ".MainActivity");
// Timeout Capabilities
capabilities.setCapability("appium:newCommandTimeout", 600); // seconds
capabilities.setCapability("appium:launchTimeout", 90000); // milliseconds
// ============================================
// PCLOUDY-SPECIFIC OPTIONS
// ============================================
HashMap<String, Object> PcloudyOptions = new HashMap<String, Object>();
// Authentication (Required)
PcloudyOptions.put("Pcloudy_Username", "your.email@example.com");
PcloudyOptions.put("Pcloudy_ApiKey", "your_api_key_here");
// Device Selection (Required)
PcloudyOptions.put("Pcloudy_DeviceFullName", "GOOGLE_Pixel10_Android_16.0.0_8fcb5");
// OR use device selection criteria
PcloudyOptions.put("Pcloudy_DeviceName", "Pixel 10");
PcloudyOptions.put("Pcloudy_PlatformName", "Android");
PcloudyOptions.put("Pcloudy_PlatformVersion", "16.0.0");
// Appium Version (Recommended)
PcloudyOptions.put("appiumVersion", "2.0.0"); // "2.0.0", "3.0.0", "1.22.3", etc.
// Test Configuration
PcloudyOptions.put("Pcloudy_BuildName", "MyApp_Build_123");
PcloudyOptions.put("Pcloudy_ProjectName", "MyApp_Tests");
PcloudyOptions.put("Pcloudy_TestName", "Login_Test");
PcloudyOptions.put("Pcloudy_Tags", "smoke,regression");
// Media Recording
PcloudyOptions.put("Pcloudy_EnableVideo", true); // Record session video
PcloudyOptions.put("Pcloudy_EnableScreenshots", true); // Take screenshots
// Logging & Debugging
PcloudyOptions.put("Pcloudy_EnableDeviceLogs", true); // Device logs
PcloudyOptions.put("Pcloudy_EnableNetworkLogs", true); // Network traffic logs
PcloudyOptions.put("Pcloudy_EnablePerformanceData", true); // CPU, memory, battery
// Network Simulation
PcloudyOptions.put("Pcloudy_WildNet", false); // Set true for network simulation
PcloudyOptions.put("Pcloudy_NetworkProfile", "4G"); // 2G, 3G, 4G, 5G, LTE
// Device Settings
PcloudyOptions.put("Pcloudy_DeviceOrientation", "portrait"); // portrait, landscape
PcloudyOptions.put("Pcloudy_Language", "en");
PcloudyOptions.put("Pcloudy_Timezone", "America/New_York");
// Advanced Options
PcloudyOptions.put("Pcloudy_AutoWebView", true); // Auto-switch to WebView
PcloudyOptions.put("Pcloudy_AutoAcceptAlerts", true); // Auto-accept system alerts
PcloudyOptions.put("Pcloudy_SkipUninstall", false); // Keep app after test
// Apply Pcloudy options
capabilities.setCapability("Pcloudy:options", PcloudyOptions);
// ============================================
// CREATE DRIVER
// ============================================
AndroidDriver driver = new AndroidDriver(
new URL("https://device.Pcloudy.com/appiumcloud/wd/hub"),
capabilities
);
7. Version-Specific Features
Appium 3.x Features
New in 3.x:
- ✅ Enhanced driver architecture
- ✅ Improved plugin system
- ✅ Better error messages
- ✅ Performance optimizations
- ✅ Simplified configuration
Example:
PcloudyOptions.put("appiumVersion", "3.0.0");
capabilities.setCapability("appium:settings[ignoreUnimportantViews]", true);
Appium 2.x Features
New in 2.x:
- ✅ Plugin architecture
- ✅ Driver extensions
- ✅ Simplified setup
- ✅ Better logging
- ✅ Improved stability
Example:
PcloudyOptions.put("appiumVersion", "2.0.0");
capabilities.setCapability("appium:settings[allowInvisibleElements]", false);
Appium 1.x Features
Legacy features:
- ⚠️ Basic automation
- ⚠️ Limited OS support
- ⚠️ Older driver versions
Example:
PcloudyOptions.put("appiumVersion", "1.22.3");
// Limited to Android 12 and iOS 15
8. Migration Guides
Migrating from Appium 1.x to 2.x
Key Changes
- Driver Installation: Drivers are now separate packages
- Capabilities: Use appium: prefix for W3C compliance
- Server: Appium server runs differently
Migration Steps
Step 1: Update Appium Version
// OLD (Appium 1.x)
PcloudyOptions.put("appiumVersion", "1.22.3");
// NEW (Appium 2.x)
PcloudyOptions.put("appiumVersion", "2.0.0");
Step 2: Update Capabilities
// OLD (Appium 1.x) - No prefix
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Pixel 10");
// NEW (Appium 2.x) - Use appium: prefix
capabilities.setCapability("appium:platformName", "Android");
capabilities.setCapability("appium:deviceName", "Pixel 10");
Step 3: Update Automation Name
// Ensure you're using modern automation names
capabilities.setCapability("appium:automationName", "uiautomator2"); // Android
capabilities.setCapability("appium:automationName", "XCUITest"); // iOS
Step 4: Test Thoroughly
- Run your test suite
- Check for deprecation warnings
- Verify all functionality works
Migrating from Appium 2.x to 3.x
Key Changes
- Driver versions: Updated to latest
- Better performance: Improved speed
- Enhanced features: New capabilities
Migration Steps
Step 1: Update Version
PcloudyOptions.put("appiumVersion", "3.0.0");
Step 2: Review Capabilities
- Most Appium 2.x capabilities work in 3.x
- Check release notes for any deprecations
Step 3: Test & Validate
- Run tests on both versions
- Compare results
- Update as needed
9. Best Practices
Version Selection
✅ DO:
- Use Appium 2.0.0 or 3.x for new projects
- Pin to specific version for stability
- Test new versions before production use
- Keep versions consistent across team
❌ DON'T:
- Use Appium 1.x for new projects
- Use beta versions in production
- Mix versions randomly
- Forget to update regularly
Capability Configuration
// Good: Organized with comments
HashMap<String, Object> PcloudyOptions = new HashMap<String, Object>();
// Authentication
PcloudyOptions.put("Pcloudy_Username", "user@example.com");
PcloudyOptions.put("Pcloudy_ApiKey", "api_key");
// Device & Version
PcloudyOptions.put("Pcloudy_DeviceFullName", "device_name");
PcloudyOptions.put("appiumVersion", "2.0.0");
// Features
PcloudyOptions.put("Pcloudy_EnableVideo", true);
PcloudyOptions.put("Pcloudy_EnablePerformanceData", true);
Testing Strategy
- Start with latest stable (Appium 2.0.0)
- Pin version in capabilities
- Monitor changelogs for updates
- Test before upgrading in production
- Have fallback plan to previous version
FAQ
Q1: Which Appium version should I use?
A: For new projects, use Appium 2.0.0 or 3.x. They provide the best compatibility and features.
Q2: How do I know which version I'm using?
A: Check the appiumVersion capability in your test configuration, or check the Pcloudy dashboard session details.
Q3: Can I use different versions for different tests?
A: Yes, specify appiumVersion in each test's capabilities.
Q4: What happens if I don't specify appiumVersion?
A: Pcloudy uses the latest stable version (currently 2.0.0).
Q5: When should I upgrade from Appium 1.x?
A: As soon as possible. Appium 1.x reaches EOL on December 31, 2025, and doesn't support Android 13+/iOS 16+ properly.
Q6: Do I need to install Appium locally?
A: No, Pcloudy provides Appium servers in the cloud. Just specify the version in capabilities.
Q7: Can I use custom Appium drivers?
A: Standard drivers (UiAutomator2, XCUITest, Flutter) are available. Contact support for custom drivers.
Q8: How do I report issues with specific Appium versions?
A: Contact Pcloudy support with:
- Appium version used
- Error message
- Test code snippet
- Device details
Did this page help you?