Version Targeting Guide
This guide explains how to target specific app versions when deploying updates through Source Push.
Understanding Version Targeting
Version targeting allows you to control which versions of your app receive specific updates. This is crucial for:
- Managing different app versions in production
- Rolling out updates gradually
- Handling version-specific features
- Maintaining backward compatibility
Basic Version Targeting
Exact Version Matching
Target a specific app version:
srcpush release-react MyApp ios --targetBinaryVersion "1.2.3"
Version Range Targeting
Target a range of versions:
# Greater than or equal to version 1.2.3
srcpush release-react MyApp ios --targetBinaryVersion ">=1.2.3"
# Specific version range
srcpush release-react MyApp ios --targetBinaryVersion ">=1.2.3 <2.0.0"
Advanced Targeting Strategies
Semver Rules
Source Push follows semantic versioning rules:
- Major Version (x.0.0): Breaking changes
- Minor Version (1.x.0): New features, backward-compatible
- Patch Version (1.0.x): Bug fixes
Complex Version Patterns
# Multiple version ranges
srcpush release-react MyApp ios --targetBinaryVersion ">=1.2.3 <2.0.0 || >=3.0.0"
# Exclude specific versions
srcpush release-react MyApp ios --targetBinaryVersion ">=1.0.0 <2.0.0 !=1.2.3"
Platform-Specific Targeting
iOS Version Targeting
srcpush release-react MyApp ios \
--targetBinaryVersion "1.2.x" \
--description "iOS stability updates"
Android Version Targeting
srcpush release-react MyApp android \
--targetBinaryVersion ">=1.2.0 <1.3.0" \
--description "Android performance improvements"
Best Practices
1. Gradual Rollout Strategy
# Initial rollout to v1.2.x
srcpush release-react MyApp ios \
--targetBinaryVersion "1.2.x" \
--rollout 25
# Expand to v1.1.x after validation
srcpush release-react MyApp ios \
--targetBinaryVersion ">=1.1.0" \
--rollout 50
2. Version-Specific Features
# Release new feature only to latest version
srcpush release-react MyApp ios \
--targetBinaryVersion "2.0.0" \
--description "New features for v2.0.0"
# Stability updates for older versions
srcpush release-react MyApp ios \
--targetBinaryVersion ">=1.0.0 <2.0.0" \
--description "Stability improvements for v1.x"
3. Testing Different Versions
# Development testing
srcpush release-react MyApp ios \
--targetBinaryVersion "2.0.0-beta" \
--deploymentName Staging
# Production release
srcpush release-react MyApp ios \
--targetBinaryVersion "2.0.0" \
--deploymentName Production
Monitoring and Metrics
Track update distribution across versions:
srcpush deployment history MyApp Production
Troubleshooting
Common Issues
-
Updates Not Reaching Users
- Verify version syntax
- Check app version in client
- Validate deployment key
-
Version Conflicts
- Review targeting rules
- Check for overlapping ranges
- Verify semver compliance
Next Steps
- Learn about Deployment Strategies
- Explore Release Management
- Set up CI/CD Integration