Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Рейтинг: 66.7% · 13 голосов
Разработка под iOS и Android: Swift, SwiftUI, Kotlin, Jetpack Compose, Flutter, React Native, публикация в App Store и Google Play, оптимизация приложений.
Ответить
Аватара пользователя
b1llyn0m
Сообщения: 70
Зарегистрирован: 11 май 2026, 07:32

Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение b1llyn0m »

Екоммерс апп, Swift, проекту 6 лет. MetricKit и AppMetrica хором показывают холодный старт p50 4.8 сек на iPhone 12. Продакт сходил на конфу, услышал что норма 2 секунды, и теперь у меня таска сделать 2.

Разложил через Instruments, шаблон App Launch. pre-main 1.9 сек, в проекте 19 динамических фреймворков через CocoaPods. Дальше didFinishLaunching, там синхронно поднимаются Firebase, AppMetrica, MyTracker, чатовый SDK и пуш-провайдер, еще примерно 1.5 сек. Остальное наша инициализация, DI контейнер на 300+ зависимостей строится жадно на старте.

Реально дожать до 2 без переписывания половины аппа? С чего бы начали.
👍1 ❤️1 🔥1 😄 🤔1
✔ Лучший ответ сформирован автоматически — Myjudas
Начните с pre-main, это самое дешевое. В подфайле use_frameworks! :linkage => :static, пересобрать, посмотреть что отвалится (обычно пара подов с ресурсами, лечится). Нам статик линковка срезала pre-main с 1.6 до 0.4. Можно еще mergeable libraries пробовать, но статик проще и предсказуемее. Дальше все SDK кроме крашрепортера инициализировать после первого кадра. Аналитика переживет задержку в сек…
Перейти к ответу →
Аватара пользователя
elixirpro
Сообщения: 9
Зарегистрирован: 24 май 2026, 08:42

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение elixirpro »

19 динамических фреймворков, лол. вот и весь ваш cold start
👍 ❤️1 🔥2 😄 🤔
Аватара пользователя
Myjudas
Сообщения: 7
Зарегистрирован: 11 май 2026, 17:31

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение Myjudas »

✔ Лучший ответ — сформирован автоматически
Начните с pre-main, это самое дешевое. В подфайле use_frameworks! :linkage => :static, пересобрать, посмотреть что отвалится (обычно пара подов с ресурсами, лечится). Нам статик линковка срезала pre-main с 1.6 до 0.4. Можно еще mergeable libraries пробовать, но статик проще и предсказуемее.

Дальше все SDK кроме крашрепортера инициализировать после первого кадра. Аналитика переживет задержку в секунду, ивенты никуда не денутся. DI переводите на ленивую сборку хотя бы для того, что не нужно главному экрану. 2 секунды на 12 айфоне выглядит достижимо, у вас просто никто этим 6 лет не занимался.
👍1 ❤️ 🔥1 😄 🤔
Аватара пользователя
svelte1
Сообщения: 30
Зарегистрирован: 13 май 2026, 13:06

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение svelte1 »

@Myjudas, p50 на одном девайсе это не метрика. меряйте p90, и на холодном девайсе после ребута, а не после kill из свитчера, это два разных старта. и у MetricKit выборка только с тех, кто согласился делиться данными, она смещенная
👍1 ❤️1 🔥1 😄 🤔
Аватара пользователя
joed13
Сообщения: 18
Зарегистрирован: 22 май 2026, 03:54

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение joed13 »

@Myjudas, а 4.8 это от тапа по иконке или от main()? и открытия по пушу в эту цифру попадают? у нас была похожая страшная цифра, оказалось мерили все вперемешку с ворм стартами, по факту было сильно лучше
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
burnedblueteam
Сообщения: 30
Зарегистрирован: 11 май 2026, 21:39

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение burnedblueteam »

у нас AppMetrica на старте синхронно ходила за конфигом, перенесли активацию после didBecomeActive, минус 600 мс на ровном месте. и проверьте, чатовых SDK у вас случайно не два? у нас жило два, один легаси, выпилили, продакт до сих пор не заметил
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
tommee
Сообщения: 64
Зарегистрирован: 11 май 2026, 02:37

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение tommee »

продакт хочет 2 секунды, пусть выделяет спринт, а не таску с эстимейтом полдня
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
sainty
Сообщения: 94
Зарегистрирован: 11 май 2026, 02:57

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение sainty »

Myjudas писал(а):Дальше все SDK кроме крашрепортера инициализировать после первого кадра.
с одной оговоркой: если апп открыли по диплинку из рекламы, а трекер поднялся после первого кадра, конверсия улетает в органику. маркетинг потом устроит разнос похлеще продакта, проходили. лечится так: диплинк ловить сразу, буферизовать и скармливать трекеру после его инициализации. AppMetrica это переживает, ивенты до активации складываются в очередь
👍2 ❤️1 🔥1 😄1 🤔
Аватара пользователя
regex4
Сообщения: 25
Зарегистрирован: 19 май 2026, 06:24

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение regex4 »

@svelte1, плюсую и добавлю: с iOS 15 еще и prewarming портит картину. система может поднять процесс заранее, до тапа, и тогда время от старта процесса до первого кадра включает паузу, в которой апп просто висел в памяти. поэтому цифры от main() и от тапа расходятся в разы. без своих сигнпостов (main, didFinishLaunching, первый кадр) обсуждать эти 4.8 вообще бессмысленно
👍2 ❤️1 🔥 😄1 🤔
Аватара пользователя
Roost66
Сообщения: 14
Зарегистрирован: 11 май 2026, 04:54

Re: Холодный старт iOS аппа 4.8 секунды, продакт хочет 2, что реально срезать

Сообщение Roost66 »

поставьте продакту задержку 4.8 секунды перед ответом на каждый его вопрос, спринт на оптимизацию выделится мгновенно хах
👍3 ❤️1 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Мобильная разработка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей