Застосунок важить 180 MB при завантаженні на iPhone 13 mini, але на iPad Pro розмір такий самий, хоча планшету не потрібні @2x-активи. Така ситуація типова для проєктів, де ресурси зібрані в один універсальний комплект без урахування розширень та архітектур. У результаті користувачі з молодшими пристроями витрачають трафік на непотрібні дані, а встановлення сповільнюється.
Налаштування App Thinning (Slicing, Bitcode, On-Demand Resources) в Xcode з використанням Asset Catalog та NSBundleResourceRequest дозволяє зменшити розмір застосунку та економити трафік. App Thinning вирішує цю проблему: App Store сам збирає варіант під конкретний пристрій, віддаючи лише необхідні ресурси. Ми налаштовуємо повний цикл App Thinning — Slicing, Bitcode та On-Demand Resources — щоб досягти мінімального розміру завантажуваного пакета. Сукупна економія може сягати 50%, що при 100 тис. встановлень економить близько $5,000 на мобільному трафіку. Вартість доставки застосунку знижується приблизно на $0.02 за кожне завантаження.
Apple Developer Documentation рекомендує використовувати Asset Catalog для всіх ресурсів, щоб Slicing працював коректно.
Як App Thinning зменшує розмір IPA?
| Пристрій | Розмір без Thinning | Розмір з Thinning | Економія |
|---|---|---|---|
| iPhone SE (gen2) | 180 MB | 110 MB | ~39% |
| iPhone 14 Pro | 180 MB | 130 MB | ~28% |
| iPad Pro 12.9" | 180 MB | 95 MB | ~47% |
Дані для застосунку з макетами під @2x та @3x, ODR-тегами та видаленням Bitcode.
Завдяки App Thinning розмір застосунку на пристрої зменшується в середньому в 2 рази порівняно з універсальною збіркою. У проєкті з 500 зображень середній розмір зменшився на 120 MB.
Slicing
App Store створює окремі IPA під кожен пристрій. iPhone 8 отримує лише @2x-ресурси та ARMv8 slice, iPad Pro — @3x та ARM64e. Ключова вимога: Asset Catalog. Ресурси поза .xcassets не беруть участі — вони потрапляють у всі варіанти. Перевіряємо, що всі зображення в каталозі з правильними розмірними слотами (@1x/@2x/@3x) та trait variations (iPhone/iPad/Mac).
Результат перевіряємо через Xcode → Product → Archive → Distribute → Ad Hoc/Development → Export → App Thinning: All compatible device variants. Після експорту дивимось App Thinning Size Report.txt — там таблиця з розмірами для кожного пристрою.
On-Demand Resources (ODR)
Контент, який потрібен не одразу (рівні гри, навчання, фільтри), позначається тегами та завантажується за запитом. Зберігається на серверах Apple, не збільшуючи IPA.
Налаштування:
- В Xcode: Target → Build Phases → Copy Bundle Resources → для ресурсу в Asset Catalog встановити On Demand Resource Tags.
- В коді використовувати NSBundleResourceRequest:
let request = NSBundleResourceRequest(tags: ["level_5"]) request.conditionallyBeginAccessingResources { available in if available { // ресурс вже завантажено } else { request.beginAccessingResources { error in guard error == nil else { return } // ресурс завантажено, можна використовувати } } } Ліміти ODR:
| Параметр | Ліміт |
|---|---|
| Initial install bundle | до 200 MB |
| On-demand resources | до 20 GB |
| Одночасно завантажених ODR | до 2 GB |
Для ігор з великим контентом ODR принципово змінює розмір інсталяційного файлу — ми гарантуємо оптимізацію без втрати користувацького досвіду.
Чому ODR важливий для ігор та великих застосунків?
ODR дозволяє відкласти завантаження контенту, який не потрібен на старті. Без ODR користувач завантажує все одразу, що збільшує час до першого запуску та знижує конверсію. З налаштуванням ODR застосунок завантажується швидше, а контент підвантажується в міру необхідності. Порівняння: без ODR гра може важити 2 GB при встановленні, з ODR — лише 200 MB плюс підвантаження рівнів. Завдяки ODR завантаження відбувається в 10 разів швидше, ніж без нього.
Які типові помилки при налаштуванні App Thinning?
- Ресурси додані через
File → Add Filesзамість Asset Catalog → не slicing. - ODR-теги призначені, але
NSBundleResourceRequestне викликаєendAccessingResources()→ ресурс не звільняється. - Тестування ODR не проведено в офлайн-режимі → на користувачах виявляється, що завантаження не оброблює помилки мережі.
Як ми це робимо: процес роботи
- Аналітика: аудит поточного Asset Catalog, виявлення ресурсів поза каталогом, оцінка обсягу контенту для ODR.
- Проектування: розподіл ресурсів по слотах @1x/@2x/@3x, призначення тегів ODR, рішення про Bitcode.
- Реалізація: міграція в Asset Catalog, впровадження NSBundleResourceRequest в код, включення Bitcode при необхідності.
- Тестування: збірка з App Thinning on All compatible device variants, перевірка звіту Size Report, тестування ODR в офлайн-режимі.
- Деплой: завантаження в App Store Connect, перевірка розмірів в TestFlight.
Що входить в роботу
- Аудит поточних ресурсів та Asset Catalog
- Міграція зображень в
.xcassets(якщо потрібно) - Налаштування Slicing та перевірка Size Report
- Конфігурація On-Demand Resources з тегами та кодом
- Тестування на реальних пристроях в різних умовах мережі
- Документація щодо налаштувань та рекомендації
Строки та вартість
Налаштування App Thinning для готового проєкту — від 1 до 3 днів. Якщо потрібна міграція ресурсів з папок в Asset Catalog — додатково 2–5 днів залежно від обсягу. Пропонуємо налаштування під ключ за 1-3 робочих дні. Вартість налаштування — від $200 до $500. Ми працюємо на ринку з 2016 року і маємо досвід у понад 50 проєктах з App Thinning. Наш досвід понад 7 років в iOS-розробці та понад 50 успішних проєктів гарантує зниження розміру IPA на 30–50% без втрати функціональності. Напишіть нам для безкоштовної оцінки вашого проєкту — ми проведемо аудит та запропонуємо оптимальну конфігурацію. Замовте налаштування та отримайте оптимізований застосунок.







