🇺🇦 iOS Dev UA - спільнота iOS розробників
384 subscribers
399 photos
42 videos
9 files
959 links
Перша україномовна спільнота iOS розробників 🇺🇦

👨‍💻Цікаві матеріали зі світу розробки для продуктів Apple.
Статті по розробці на Swift та SwiftUI. Огляд нових технологій в розробці від Apple.

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
💡Якщо у вашому застосунку є підписки, то ви, сподіваюся, вже знайомі з поняттям billing grace period — періоду, протягом якого користувач може продовжити користування сервісом навіть після проблем з оплатою.

Проте ось детальний матеріал, який пояснює, як саме працює цей механізм, що враховує Apple, як це впливає на доступ до контенту та які є нюанси при реалізації.

Можливо, ви дізнаєтесь щось нове — навіть якщо вже стикалися з цією функціональністю.

👉 https://www.avanderlee.com/optimization/billing-grace-period-explained/

🇺🇦 iOSDevUA
3
💡The Browser Company: новий етап замість Arc і плани на майбутнє

Пам’ятаєте The Browser Company — ту саму команду, яка створювала кросплатформенний браузер Arc на Swift і була одним з найбільших адептів TCA (The Composable Architecture)?

Так от, вже певний час розробка Arc поставлена на паузу, а команда переключилася на новий браузерний продукт.

Сьогодні CEO компанії опублікував офіційне звернення з поясненням, як надалі розвиватиметься компанія. Найцікавішу для нас цитату — про технічні плани і фокус — винесли окремо у скріншот.

Очевидно, нас чекає новий виток розвитку кросплатформенних рішень на Swift.

🇺🇦 iOSDevUA
💡Огляд змін у concurrency в Swift 6.2

Багато нових підходів до паралелізму в Swift 6.2 суттєво відрізняються від того, до чого розробники звикли під час роботи з GCD.

Донні Волш спробував розібратися в цих змінах і у своєму матеріалі фокусується на двох важливих моментах:

1️⃣ Новий флаг nonisolated(nonsending) — для більш точного контролю над ізоляцією в акторах.
2️⃣ Запуск коду в MainActor за замовчуванням за допомогою параметра defaultIsolation.

Додатково він посилається на офіційний документ від Apple:
📄 Swift Evolution — Approachable Concurrency

Матеріал буде корисний тим, хто вже працює з async/await і хоче залишатися на гребені хвилі останніх оновлень у Swift.

🇺🇦 iOSDevUA
❗️Xcode 26 — інтеграція з ChatGPT: тепер «вайб-кодинг» уже не жарт

У Xcode 26 зʼявилась вбудована підтримка ChatGPT — розробники можуть використовувати як локальні моделі, так і API‑ключі сторонніх провайдерів.

І найцікавіше:
🔹 Доступ до AI‑асистента прямо в Xcode — без обов’язкової реєстрації
🔹 Користувачі з підпискою можуть підключити свій акаунт і отримати більше запитів
🔹 Інструменти інтегровані безпосередньо в редактор і доступні в будь-якому місці коду

😎 Нарешті справжнє amazing!

Нові можливості дають змогу:
— автоматично створювати Preview
— налаштовувати Playground
виправляти баги через дії, запропоновані AI
— і навіть обробляти довільні промпти прямо в IDE

Майбутнє розробки — вже в редакторі.

🇺🇦 iOSDevUA
👍21
⚡️ Усі нові фреймворки в iOS 26 — короткий огляд

Зібрав в одному пості всі нові фреймворки, анонсовані Apple разом з iOS 26 — коротко про кожен із них:

🛠 AlarmKit — створення кастомних будильників і таймерів у застосунках.

🛠 AVRouting — підтримка зовнішніх пристроїв і протоколів у AVRoutePickerView.

🛠 DeclaredAgeRange — запит вікового діапазону в застосунках.

🛠 EnergyKit — моніторинг і оптимізація споживання електроенергії (поки що лише для США).

🛠 FinanceKitUI — готові UI‑компоненти для роботи з FinanceKit та FinanceStore.

🛠 FoundationModels — доступ до великої мовної моделі Apple, яка лежить в основі Apple Intelligence.

🛠 GameSave — зберігання і синхронізація ігрового прогресу через iCloud.

🛠 GeoToolbox — створення геооб’єктів (PlaceDescriptor) і взаємодія з Apple Maps та сторонніми картографічними API.

🛠 IdentityDocumentServices — обмін цифровими документами через API мобільних посвідчень.

🛠 IdentityDocumentServicesUI — інтерфейсні компоненти для роботи з цифровими документами.

🛠 ImmersiveMediaSupport — створення кастомних процесів для обробки Apple Immersive Video (AIV).

🛠 PermissionKit — керування обліковими правилами в iCloud.

🛠 RelevanceKit — контекстна персоналізація вмісту (в т.ч. для покращення видимості на Apple Watch).

🛠 TelephonyMessagingKit — надсилання й отримання повідомлень через стільникову мережу.

🛠 TouchControls — сенсорне керування для ігор на базі Metal.

🛠 VisualIntelligence — підвищення видимості вмісту застосунку в результатах пошуку.

🛠 WiFiAware — безпечне виявлення і взаємодія між пристроями поблизу без потреби в інтернеті або Wi-Fi-точці.

🛠 WirelessInsights — повідомлення застосунку про зміни в мережі, що можуть вплинути на його роботу.

📖 Для зручного перегляду, фільтрації й пошуку фреймворків рекомендую цей ресурс:
👉 marcoeidinger.github.io/appleframeworks

🇺🇦 iOSDevUA
4🔥2
@Observable в UIKit — тепер і без SwiftUI!

У новій iOS UIKit навчився автоматично відстежувати зміни в даних і оновлювати інтерфейс за допомогою макроса @Observable. Це означає, що реактивна логіка тепер доступна навіть без SwiftUI.
import Observation

@Observable
class Counter {
var count: Int = 0
}

У самому UIViewController значення можна зчитувати, наприклад, у viewWillLayoutSubviews, і UIKit самостійно стежитиме за оновленням:
class TestViewController: UIViewController {
let counter = Counter()
private let label = UILabel()

override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
label.text = "Read example for iOS Dev: \(counter.count)"
}

@objc private func incrementCounter() {
counter.count += 1
}
}

🧠 Це працює завдяки тому, що counter.count прочитується в layout-фазі. UIKit під капотом підключає трекінг автоматично.

📺 Тут є ще приклад з використанням у UICollectionViewCell

Підтримка навіть з iOS 18

Хоча фіча вмикається автоматично в iOS 26, її можна активувати і в iOS 18+, додавши до Info.plist ключ:
UIObservationTrackingEnabled = YES

🔗 Докладніше — у відео

Інші новинки:

🛠 З’явився новий метод updateProperties() — викликається перед layoutSubviews, але дозволяє інвалідовувати властивості окремо від layout’у. Працює і з UIView, і з UIViewController.

🔴 Тепер офіційно можна додавати badge на UIBarButtonItem, без сторонніх рішень.

📣 І важливе попередження:
Починаючи з наступного після iOS 26 релізу, усі нові UIKit‑застосунки, зібрані з останнім SDK, повинні використовувати UIScene. Без цього застосунок не запуститься.

📺 Повна сесія доступна тут:
Переглянути на Apple Developer

🇺🇦 iOSDevUA
👍5🔥1
💡Що під капотом у новому дизайні UITabBar?

🤩 Seb Vidal вже встиг заглянути всередину і зʼясував, що для реалізації нового ефекту в UITabBar Apple використовує приватне вью під назвою _UILiquidLensView.

Цей компонент складається з безлічі вкладених subviews, серед яких помітні знайомі елементи, як-от:
🔸 _UIPortalView
🔸 CABackdropLayer
🔸 CAFilter

Зокрема, для досягнення ефекту “скляної лінзи” Apple, ймовірно, використовує кілька CAFilter, серед яких — opacityPair і displacementMap, що відповідають за плавні візуальні викривлення та глибину.

Новий дизайн — це не просто UI-освіження, а ще й складна система графічних шарів, яка активно задіює потужності Core Animation.

🇺🇦 iOSDevUA
5
This media is not supported in your browser
VIEW IN TELEGRAM
💡Автоматична генерація Playground у Xcode 26

🤩 У Xcode 26 тепер можна автоматично створювати Playground для перегляду й тестування ваших компонентів — причому навіть тестові дані підставляються автоматично.

Щоб спробувати це самостійно, вам знадобиться бета-версія macOS Tahoe.
Чудовий інструмент для швидкої перевірки UI та логіки без зайвого кодування!

🇺🇦 iOSDevUA
5
⭐️ Apple готує “Обговорення” — новий формат живої комунікації з розробниками

Пол Хадсон поділився скріншотом із закритого демо, де видно нову функцію — “Discussions”, яка дозволить розробникам спілкуватися з командами Apple в реальному часі. І це справжній крок до відкритості.

На тлі останніх змін у спільноті Swift — появи нових робочих груп, як-от Testing Workgroup, та Ecosystem Steering Group, — ця ініціатива виглядає дуже логічно.

Особливо тішить, що ці зміни йдуть поруч з активним розвитком опенсорс‑частини екосистеми (майбутнє Foundation).

Очікуємо більше прозорості, живого зворотного зв’язку та справжнього діалогу між Apple і розробниками.

🇺🇦 iOSDevUA
3
💡Тепер при завантаженні білда в App Store можна повторно використати той самий номер — навіть після помилки!

🚀 Це, без перебільшення, чудова новина для всіх, хто хоч раз стикався з фейлами під час заливки білда. Тепер, якщо перевірка не пройшла — не обов’язково змінювати номер збірки, можна перезалити з тим самим.

Також з’явилася можливість переглядати детальні повідомлення про помилки прямо на сайті App Store Connect.

📺 У тій самій сесії WWDC є ще багато цікавого:

➡️ Фонові ресурси від Apple (до 200 ГБ) — можна використовувати apple-hosted background assets
➡️ Зворотний зв’язок у TestFlight — користувачі можуть надсилати фідбек напряму, сповіщення доступні в App Store Connect на iOS
➡️ Теги в App Store — генеруються автоматично, але можна буде керувати ними вручну, розробник може вмикати/вимикати
➡️ Offer Codes — тепер доступні для всіх типів вбудованих покупок, до 10 активних на тип і до 1 000 000 кодів на застосунок
➡️ Автоматичний Summary за відгуками — буде видно на сторінці застосунку, оновлюється регулярно. Розробник може подати заперечення у разі незгоди.
➡️ Більше 100 нових аналітичних метрик — новий дизайн, розширений функціонал для моніторингу підписок і монетизації.

🔎 Реліз справді насичений — рекомендую подивитись всю сесію!
🎥 Дивитись на developer.apple.com

🇺🇦 iOSDevUA
🔥1
💡Кілька слів про новий фреймворк Containerization від Apple

По-перше, цей реліз — не для iOS-розробників.

Apple представила нову утиліту container, яка дозволяє створювати та запускати Linux-контейнери — по суті, це легкі віртуальні машини.

А сам фреймворк Containerization дає змогу використовувати такі контейнери всередині ізольованих середовищ. Кожен контейнер працює у своїй власній віртуальній машині, подібно до того, як це реалізовано в Docker.

Це справді стане в пригоді тим, хто раніше змушений був розгортати повноцінну Linux‑віртуалку — альтернатив просто не було
🔗 Коментарі спільноти — simonwillison.net

📺 Якщо не працюєте з інфраструктурою або Linux‑оточенням — сесію можна сміливо пропустити

P.S. Хочеться вірити, що наші підписники вже можуть дозволити собі розширену підписку на AI‑асистента, щоб розібратись у подібних речах 😉
(Або як завжди — просто видалять пост 😄)

🇺🇦 iOSDevUA
💡Використання памʼяті у Swift 6.2 та нові можливості для підвищення продуктивності

📺 Одна з найпрактичніших сесій на WWDC25 — переглянути відео. У ній детально розглядаються інструменти, техніки та нові можливості Swift для ефективної роботи з памʼяттю.

Ось ключові моменти:

➡️ QOI-парсер
Приклад створення парсера для формату зображень QOI (Quite OK Image), який запропонував Домінік Шаблевскі — надзвичайно простий і швидкий для обробки.

➡️ Профілювання памʼяті
Робота з Allocations і Time Profiler показує, як аналізувати розподіл памʼяті та знаходити “вузькі місця” у продуктивності.

➡️ Стек проти купи + InlineArray
Огляд тут — новий тип InlineArray дозволяє зберігати масиви без алокації в купі, покращуючи кешування та швидкість.

➡️ Небезпечні вказівники (unsafe pointers)
Детальний розбір — у чому їхня потужність і які ризики вони приховують.

➡️ Новий тип Span у Swift 6.2
Огляд — Span дозволяє працювати з послідовностями в памʼяті більш безпечно, ніж через вказівники. Це суттєво спрощує оптимізовану низькорівневу роботу без втрати безпеки.



🎉 One more thing:
Apple виклала у відкритий доступ Swift Binary Parsing — бібліотеку для створення швидких і безпечних бінарних парсерів на Swift.

Це великий крок для тих, хто працює з низькорівневою продуктивністю, файловими форматами та обробкою бінарних структур у Swift.

🇺🇦 iOSDevUA
🔥2
💡Новий інструмент для оптимізації SwiftUI-застосунків — WWDC25

На WWDC25 Джед з команди Instruments та Стівен з Apple Music представили оновлений підхід до профілювання SwiftUI-проєктів, який дозволяє ефективно знаходити та усувати вузькі місця в продуктивності.

🛠 За допомогою нових інструментів можна легко виявити проблеми на кшталт:
— зайвих або тривалих оновлень в’юшок
— анімацій, які лагують
— затримок при скролінгу
— підвисань або навіть крашів

📺 У цій сесії на прикладі реального застосунку демонструється, як використовувати нові можливості SwiftUI Instrument, а також Time Profiler, Hangs і Hitches, щоб покращити стабільність та швидкодію.

Вміння працювати з Instruments і розуміти, як і для чого використовувати кожен з них — це вже не просто корисна навичка, а ключ до створення плавних, швидких і надійних застосунків.


📚 Додаткові ресурси:
• Analyze hangs with Instruments (WWDC23)
Optimize CPU performance (WWDC25)

Цей набір точно варто мати в арсеналі кожного SwiftUI-розробника.

🇺🇦 iOSDevUA
💡Міграція з XCTest на Swift Testing за допомогою Claude Code

Claude Code — популярний AI-агент для розробників від Anthropic.
Пітер Штайнберґер, якого багато хто пам’ятає за його глибоку інженерну експертизу в PSPDFKit, поділився досвідом, як перевів понад 700 юніт‑тестів зі старого XCTest на нову систему Swift Testing.

Перша спроба «в лоб» була не надто вдалою, але після того, як він підготував чіткі гайдлайни для агента — усе запрацювало чудово.

Реальний приклад того, як AI може допомогти з технічною міграцією навіть у складних кодових базах.

🇺🇦 iOSDevUA
1
💡Новини зі Swift Package Index

По-перше, найбільшому реєстру Swift‑пакетів виповнилося 5 років!
У блозі розповідають, як екосистема виросла з 2 500 до 9 000 бібліотек, і що це лише початок.

По-друге, до переліку платформ, сумісність з якими тестується автоматично, додали Wasm і Android.
Офіційне оголошення

Зі згаданих 9 000 пакетів:
🔹 19% вже підтримують Wasm
🔹 28% сумісні з Android

Swift продовжує активно виходити за межі Apple-платформ — і це чудова новина для розробників, які хочуть писати кросплатформено.

🇺🇦 iOSDevUA
💡Прихована перлина в новому API — containerConcentric для адаптивних скруглень

У багатьох випадках хочеться зробити cornerRadius, який адаптується під форму пристрою — наприклад, для модальних вікон, тулбарів або навіть звичайних кнопок (особливо в нижній частині екрана).
І майже кожен UI‑розробник чув від дизайнерів: «а можна скруглення як на системних елементах?».

📺 На цiй сесії WWDC25 розповіли, що з’явився новий спосіб — containerConcentric.

🤩 Якщо ви використовуєте containerConcentric, скруглення автоматично підлаштовується під тип дисплея, форму вікна та середовище (будь то iPhone, iPad або macOS Stage Manager).

Це означає, що можна нарешті відмовитися від приватних API і хардкодів під конкретні девайси.

🔧 Найкращі сценарії використання:
— панелі інструментів
— пошукові блоки
— плаваючі кнопки та системні контролери

Це маленьке, але потужне оновлення, яке значно полегшує адаптацію UI до різних пристроїв.

🇺🇦 iOSDevUA
👍31
This media is not supported in your browser
VIEW IN TELEGRAM
💡Елегантне рішення для розтягуваного заголовка в SwiftUI

Один із найбільш візуально привабливих (і при цьому простих у реалізації) UI‑ефектів — це збереження позиції вʼюшки при скролі з одночасним масштабуванням. Особливо круто виглядає у випадку із заголовками.

📖 У цьому прикладі, реалізовано цей ефект за допомогою модифікатора visualEffect — доступного з iOS 17

Це дозволяє створити “розтягуваний” хедер, який адаптивно реагує на скрол — без складних обхідних рішень чи кастомних компонентів.

📌 Ідеально підходить для:
— профілів
— банерів
— секцій із фоновим зображенням або великим заголовком

Невеликий, але витончений підхід для створення преміального вигляду з мінімумом коду.
extension View {
func stretchy() -> some View {
visualEffect { effect, geometry in
let currentHeight = geometry.size.height
let scrollOffset = geometry.frame(in: .scrollView).minY
let positiveOffset = max(0, scrollOffset)

let newHeight = currentHeight + positiveOffset
let scaleFactor = newHeight / currentHeight

return effect.scaleEffect(
x: scaleFactor, y: scaleFactor,
anchor: .bottom
)
}
}
}

🇺🇦 iOSDevUA
🥰2
💡Від масивних SwiftUI‑в’юшок до пере­використовуваних компонентів: підхід із root‑view у стилі MVVM для модульного інтерфейсу

📖 У цій статті Маттео Манфердіні ділиться своїм баченням проблеми “масивних вʼюшок” у SwiftUI — і чому саме вони часто стають джерелом архітектурного хаосу.

Ось ключові блоки:

1️⃣ Чому великі вʼюшки викликають архітектурні проблеми
— Вʼю починає містити не лише UI, а й бізнес-логіку, локальний стан, обробку даних, навігацію й навіть логіку доступу до мережі.

2️⃣ Як перейти до модульних і пере­використовуваних вʼюшок
— Розбиття великих екранів на прості компоненти, що не залежать від зовнішніх джерел даних.

3️⃣ Чому контент-вʼю повинні відповідати лише за візуальне представлення
— Вʼю має показувати дані, але не вирішувати, що з ними робити.

Також автор пояснює поширене непорозуміння:

Багато розробників вважають, що MVVM — це обов’язково по ViewModel на кожну вʼюшку. Але, за словами Маттео, ViewModel потрібна лише на рівні root‑вʼю, а не для кожного підкомпонента.


4️⃣ Root‑view як міст між UI і внутрішньою архітектурою застосунку
— Саме в кореневій вʼюшці відбувається підключення до моделі даних, обробників стану, мережевих викликів тощо.

🧩 Це підхід, що дозволяє розділити інтерфейс і логіку, зробити код чистішим і компоненти — легшими у повторному використанні. Ідеально підходить для побудови складних, але підтримуваних SwiftUI-застосунків.

🇺🇦 iOSDevUA
1
💡Універсальний гайд із використання Foundation Models Framework

Фреймворк Foundation Models відкриває можливості генеративного ШІ прямо на пристроях Apple — включно з обробкою природної мови, створенням контенту та іншими задачами — з максимальною продуктивністю та повагою до приватності, адже все виконується локально, без відправки даних у хмару.

📖 У своєму блозі Азам уже почав працювати над глибоким гідом і ділиться першим поглядом на ключові концепції. Стаття оновлюється, але вже зараз доступні базові приклади й структура.

Матеріал поділений на зручні блоки:

🔹 Вимоги до запуску
🔹 Керована генерація
🔹 Інтеграція з SwiftUI‑застосунком
🔹 Інструменти розробника
🔹 Збереження результатів (без повторного запиту)
🔹 Оптимізація продуктивності


🧩 Крім того, вже доступна репозиторія з прикладами:

🛠 Генерація резюме для довгого тексту
🛠 Планувальник подорожей
🛠 Генератор жартів
🛠 Створення рецептів за інгредієнтами

⚠️ Для запуску прикладів вам знадобиться macOS Tahoe, Xcode 26 і Apple Silicon.
Чудовий старт для розробників, які хочуть інтегрувати локальний AI у свої iOS-застосунки.

🇺🇦 iOSDevUA
1
💡Огляд новинок у тулингу після WWDC — від команди Tuist

Команда Tuist зібрала все найцікавіше, що з’явилося у світі інструментів для розробки після WWDC 2025. Ось основне:

🔧 Покращення у сфері тестування
— Тепер доступна можливість запису відео під час запуску UI‑тестів. Це суттєво полегшить аналіз багів та поведінки інтерфейсу.

🔧 Новий макрос #playground
— Альтернатива SwiftUI Previews, але для не-UI коду. Дозволяє миттєво переглядати результат виконання фрагментів логіки, утиліт чи модулів, які не мають візуального представлення.

🔧 Проєкт container від Apple
Опенсорсний інструмент, що дозволяє запускати Linux-контейнери прямо на macOS. Повністю реалізований на Swift — ідеальний варіант для тих, хто хоче легкі, ізольовані середовища без сторонніх рішень типу Docker.

Це оновлення ще раз підкреслює, що Swift — це не лише про UI, а повноцінна екосистема для сучасного девелопменту.

🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Dragula — drag’n’drop рушій для SwiftUI

Dragula — це нова бібліотека для SwiftUI, яка значно спрощує створення інтерфейсів із перетягуванням (drag & drop).

🧩 Підтримує:
— списки з секціями
— горизонтальний і вертикальний скрол
— просте налаштування без зайвого коду

Чудовий вибір для тих, хто хоче реалізувати зручне перетягування елементів у SwiftUI — як у звичних списках, так і в більш складних layout’ах.

🇺🇦 iOSDevUA
7