Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Good practices for iOS releases
Search
Adrien Humilière
June 21, 2017
Programming
0
210
Good practices for iOS releases
Adrien Humilière
June 21, 2017
Tweet
Share
More Decks by Adrien Humilière
See All by Adrien Humilière
Attention to details
adhumi
0
1
Build an iOS app from an iPad
adhumi
0
31
Something about Xcode ^^
adhumi
0
120
Inside Brut.
adhumi
0
88
Localization done bien
adhumi
1
250
Test and distribute an iOS app with Gitlab CI
adhumi
0
360
Pushing Forward iOS Notifications
adhumi
0
190
What's new in iOS 9
adhumi
0
310
Rebranding an iOS app
adhumi
0
250
Other Decks in Programming
See All in Programming
Building Scalable Mobile Projects: Fast Builds, High Reusability and Clear Ownership
cyrilmottier
2
310
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
250
iOSアプリで測る!名古屋駅までの 方向と距離
ryunakayama
0
110
メモリウォールを超えて:キャッシュメモリ技術の進歩
kawayu
0
1.9k
スモールスタートで始めるためのLambda×モノリス(Lambdalith)
akihisaikeda
2
300
파급효과: From AI to Android Development
l2hyunwoo
0
120
実践Webフロントパフォーマンスチューニング
cp20
33
7.3k
音声プラットフォームのアーキテクチャ変遷から学ぶ、クラウドネイティブなバッチ処理 (20250422_CNDS2025_Batch_Architecture)
thousanda
0
300
fieldalignmentから見るGoの構造体
kuro_kurorrr
0
110
generative-ai-use-cases(GenU)の推しポイント ~2025年4月版~
hideg
1
300
Ruby's Line Breaks
yui_knk
2
1.6k
Exit 8 for SwiftUI
ojun9
0
140
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
7
400
The Cost Of JavaScript in 2023
addyosmani
49
7.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
We Have a Design System, Now What?
morganepeng
52
7.5k
A better future with KSS
kneath
239
17k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
135
33k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
670
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Agile that works and the tools we love
rasmusluckow
328
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Transcript
Good practices for iOS releases @adhumi, Bonsaï, Paris Trainline Engineering Summit, June 2017
Release
? Release
Release early, release often →
Release early, release often → Painless releases → Test your
release → Take care of it → Market it →
Release early, release often
time based Release cycles are usually feature based or
Feature based Group features in a single release – Unified
set of features – Unknown frequency – Delay risks
Time based Calendar schedule Frequency depends on your needs –
Expected by all parties – Set schedules – Pushes iterative development – Risk of too much/little time – Risk of too much/little features
None
Release Train
vn vn+1
A vn vn+1
A B vn vn+1
A B C vn vn+1
A B C D vn vn+1
D vn vn+1 A B C
D vn vn+1 A B C
D E vn vn+1 A B C
D E F vn vn+1 A B C
G D E F vn vn+1 A B C
G vn vn+1 A B C D E F
⏰?
Week1 vn
Week1 Week2 Weekn-1 vn
Week1 Week2 Weekn-1 Feature freeze, beta release, QA vn
Week1 Week2 Weekn Weekn-1 vn
Week1 Week2 Weekn Weekn-1 Submission vn
Week1 Week2 Weekn Weekn+1 Weekn-1 Public release vn
Week1 Week2 Weekn Weekn+1 Weekn-1 Feature freeze, beta release, QA
Submission Public release vn
Week1 Week2 Weekn Weekn+1 Weekn-1 vn Week1 Week2 vn+1
Weekn Weekn+1 Week1 Week2 Weekn Weekn+1 Weekn-1 vn+1 Week1 Week2
vn+2
Weekn Weekn+1 Week1 Week2 Weekn Weekn+1 Weekn-1 vn+2 Week1 Week2
vn+3
Kickoff Developm ent QA, beta test & polishing Subm ission
Public release w1 w1 → wn-1 wn wn wn+1
Painless releases
Classical release process Code
Classical release process Code
Classical release process Code Archive
Classical release process Code Archive
Classical release process Code Archive Binary
Classical release process Code Archive Binary
Classical release process Code Archive Binary iTunes Connect
Classical release process All assets (promotional screenshots and texts) uploaded
manually
Classical release process All assets (promotional screenshots and texts) uploaded
manually 5 images 5 languages 6 devices → 150 screenshots Title Description Release notes… → ×5 languages
Classical release process All assets (promotional screenshots and texts) uploaded
manually Clic. clic. 5 images 5 languages 6 devices → 150 screenshots Title Description Release notes… → ×5 languages + tons of copy paste
Classical release process ❌ Nope
Script all the things!
Script all the things! fastlane → Everything needed exists hidden
with Xcode → Fastlane is good, if you like sugar
Code Archive Binary iTunes Connect
Code Archive Binary iTunes Connect $ ./archive_and_upload
Script all the things! Screenshots Title Description Icons Metadatas Release
notes
Script all the things! Screenshots Title Description Icons Metadatas Release
notes ← Autogenerated
$ iTMSTransporter upload Script all the things!
Continuous deployment?
Deploy Deploy Deploy Continuous deployment? Internal only
Test your release
Extensive QA validation before release ✅
Beta-test → Real life usages → Real trains → Real
travels → Real travelers
Beta-test Diversity of beta-testers → Frequent and occasional travelers →
Various countries → Various languages → Disabilities
Beta-test Build a community
Market your release
Communicate with Apple
Thursday
Thanks! @adhumi, Bonsaï, Paris