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

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

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
💡Універсальний гайд із Dependency Injection у модульному застосунку

У своєму блозі Pawel Kozielecki піднімає важливі питання: як грамотно керувати залежностями, чи справді Dependency Injection гарантує масштабованість і гнучкість проєкту в довгостроковій перспективі.

Особливу увагу він приділяє непростому аспекту — роботі з DI у багатомодульних застосунках, розглядаючи плюси та мінуси різних підходів і патернів.

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

🔘 Чому взагалі варто розглядати використання Dependency Injection у застосунках
Розгляд причин, чому DI може покращити масштабованість, тестованість і гнучкість архітектури.

🔘 Які типи DI доступні в Swift
Автор детально пояснює різновиди впровадження залежностей: через ініціалізатори, властивості, сервіси тощо.

🔘 Як впроваджувати DI у складних модульних iOS‑застосунках
Практичні рекомендації щодо побудови DI у великих проєктах з модульною архітектурою: як уникати tight coupling і підтримувати чисту структуру.

🇺🇦 iOSDevUA
👍31
This media is not supported in your browser
VIEW IN TELEGRAM
💡У 2024 році Apple видалила 146 000 акаунтів розробників

Згідно з звітом Apple, компанія продовжує активно боротися з шахрайством та порушеннями на платформі App Store.

Ось деякі ключові цифри:

🛑 1,9 млн білдів отримали відмову під час перевірки (з 7,7 млн надісланих)
📝 140 млн відгуків були видалені (з 1,2 млрд загалом)
👨‍💻 7 500 застосунків прибрали з чартів і 9 500 — з результатів пошуку
146 000 акаунтів розробників було повністю деактивовано

🔗 Повний звіт доступний за посиланням

🇺🇦 iOSDevUA
🤯2
This media is not supported in your browser
VIEW IN TELEGRAM
💡Поєднання жестів та анімацій у SwiftUI

Жести — один із основних способів взаємодії користувача з застосунком. У SwiftUI їх можна не лише відслідковувати, а й використовувати як тригери для анімацій.

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

Для обробки жестів у SwiftUI використовуються спеціальні модифікатори.

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

🇺🇦 iOSDevUA
3
💡Swift: enum чи struct — що обрати для гнучкішого коду

Під час проєктування стану у Swift вибір між enum і struct (або їх комбінацією) може суттєво вплинути на архітектуру, гнучкість і масштабованість коду.

📖 Деніел Саїді у своєму матеріалі детально пояснює переваги кожного підходу та дає рекомендації.

Коли краще обирати enum:
• Якщо існує чітко обмежений набір станів
• Коли потрібна повна перевірка під час компіляції
• Якщо стани взаємовиключні
• Коли треба використовувати патерн-матчинг зі зв’язаними значеннями

Коли варто використати struct:
• Якщо необхідна майбутня розширюваність
• Для реалізації конфігурацій або стилізації
• Якщо потрібна гнучкість у створенні нестандартних варіантів
• Коли потрібно зберігати складні стани з кількома властивостями

Матеріал стане у пригоді тим, хто хоче чітко обґрунтовувати архітектурні рішення у своїх Swift-проєктах.

🇺🇦 iOSDevUA
👍2
💡Як використовувати MetricKit в iOS для пошуку причин крашів і їх відлагодження

Відстежувати краші, які трапляються лише в продакшн-збірках, буває непросто. Стандартні підходи — наприклад, використання обробників помилок безпосередньо в застосунку — не завжди дають повну або точну картину.

Щоб вирішити цю проблему, Apple пропонує MetricKit — фреймворк, який працює поза межами процесу застосунку та збирає діагностичні дані на системному рівні.
Документація

Завдяки цьому можна фіксувати навіть ті збої, які залишаються непоміченими: через нестачу пам’яті, фонове завершення чи системні сигнали.

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

🇺🇦 iOSDevUA
💡Абсолютна база: як працювати з нотифікаціями у Swift

Матеріал орієнтований на тих, хто лише починає знайомство з локальними push‑нотифікаціями в iOS.

У ньому покроково пояснюється, як:
🔹 Налаштувати повідомлення за розкладом (за часом)
🔹 Прив’язати нотифікацію до певної дати з календаря
🔹 Запускати сповіщення на основі геолокації користувача

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

🇺🇦 iOSDevUA
2
💡Регулярні вирази у Swift — ґрунтовний розбір

Попри те, що робота з регулярними виразами у Swift схожа на підходи з JavaScript чи Python, мова має свої особливості, про які варто знати.

📖 Цей документ — результат детального дослідження професора з Монреаля Гая Лапальме, який на прикладах демонструє, як працює regex у Swift.

Автор розбирає три ключові кейси:
🔹 перевірка римських цифр
🔹 побудова токенізатора
🔹 створення простого чат-бота у стилі Eliza

А ще тут є корисна шпаргалка з основними методами та операторами для регулярних виразів у Swift — чудовий ресурс для швидкого нагадування.

🇺🇦 iOSDevUA
🔥1
💡Як бекенд Things переїхав на Swift

Things — один із найпопулярніших застосунків для управління задачами. Водночас це один із найвідоміших прикладів використання Swift на сервері.

У статті команда ділиться досвідом переходу свого бекенду на Swift:
🔧 який стек вони використали
⚙️ як перебудували архітектуру
🚀 і як завдяки цьому отримали в 4 рази швидші відповіді та втричі зменшили вартість обчислень

Класний приклад того, як Swift може працювати не лише на iOS, а й на сервері — ефективно й масштабовано.

🇺🇦 iOSDevUA
3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Вивчення креативного програмування зі Swift і SwiftUI

Натрапив на чудову статтю, у якій за допомогою математики (і не тільки) пояснюються різні підходи до створення нестандартних анімацій у SwiftUI.

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

🎆 Креативне програмування — це не просто володіння інструментами, а поєднання ідей, логіки та гри уяви.
Завдяки Swift і SwiftUI ми отримали цілу екосистему для експериментів у творчому просторі: від геометрії — до фізики та інтерактивної взаємодії.

📖 Ознайомитися з матеріалом можна тут — хто знає, можливо, це стане для вас натхненням для власного проєкту.

🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Оновили офіційний сайт Swift

Напередодні WWDC починають з’являтися перші оновлення в екосистемі — отримав редизайн головний сайт swift.org. Додали анімації, освіжили вигляд і структуру.

Поділіться, чи є у вас очікування від цьогорічної конференції? Чекаєте на якісь вау-фічі? 🤩

🇺🇦 iOSDevUA
💡Notepad.exe — редактор коду для Swift

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

🔹 Платна ліцензія, але є безкоштовна версія з обмеженим функціоналом
🔹 Зберігання кодових сніпетів у власній бібліотеці
🔹 Вбудований блокнот для заміток
🔹 Інтеграція зі Swift Package Manager
🔹 Підтримка AI на локальних моделях — без хмар і зовнішніх сервісів

Ідеальне рішення для тих, хто хоче швидко тестувати ідеї або зберігати невеликі Swift-компоненти в зручному форматі.

🇺🇦 iOSDevUA
🔥1
💡Феромагнетизм за допомогою SwiftUI + Metal

📖 Ділюсь справді захопливим матеріалом — посилання тут. Ідеально підійде всім, хто захоплюється складними графічними ефектами та експериментами з рендерингом.

У статті розглядаються техніки SDF (Signed Distance Functions), або простіше — самоподібні геометрії, які дозволяють створювати візуальну рекурсію з «нескінченним масштабом» у реальному часі.

На базі цих принципів автор реалізував анімацію, натхненну явищем феромагнетизму — фізичного ефекту, при якому матеріали утримують намагніченість навіть без зовнішнього поля.
🔗 Про феромагнетизм у Wikipedia

Складно, красиво, технічно — і надихає на власні експерименти з Metal + SwiftUI.

🇺🇦 iOSDevUA
🔥Усі головні анонси з WWDC

Apple зібрала зручну сторінку з усіма ключовими новинами WWDC — розділено за темами з посиланнями на відповідні сесії.

Ось кілька особливо цікавих хайлайтів:

👉 Огляд нової дизайн-системи Liquid Glass — глибока інтеграція прозорості, світла й анімацій
👉 Усі оновлення SwiftUI — нові компоненти, покращена продуктивність та розширена підтримка адаптивного інтерфейсу
👉 Icon Composer — інструмент для створення іконок згідно з новими гайдлайнами
👉 Що нового в Xcode — нові можливості редактора, AI-асистенти та інструменти для роботи в команді
👉 Новий фреймворк для інтеграції локальних LLM — можливість запуску моделей прямо на пристрої

Сторінка постійно оновлюється — зручно зберегти в закладки для подальшого вивчення.

🇺🇦 iOSDevUA
🔥1
💡Річний звіт від Swift Server Workgroup

Swift Server Workgroup — команда, яка просуває Swift у серверній розробці — поділилася результатами за рік:

🔹 Сприяли ширшому впровадженню structured concurrency, опублікувавши гайдлайни з найкращими практиками та порадами з міграції
🔹 Значно розширилась екосистема пакетів — зокрема, відзначили Swift Memcache client, над яким працює комʼюніті
🔹 Провели кілька мітапів з прикладами успішного використання Swift у продакшн-серверних проєктах

🔮 Плани на наступний рік:

▪️ Продовжити розробку спільного HTTP-сервера
▪️ Сфокусуватися на observability — підготувати гіди з логування та моніторингу
▪️ Розвивати ініціативу Swift на Windows, щоб серверні застосунки працювали і на Windows-серверах
▪️ Покращити онбординг для новачків
▪️ Підтримати спільноту в розвитку клієнтів для Memcache та Redis

Swift дедалі впевненіше почувається в серверному середовищі — і це тільки початок.

🇺🇦 iOSDevUA
🔥1
💡Swift в Apple: як переписали службу моніторингу паролів із Java

Ні для кого не секрет, що Swift в Apple активно використовується не лише на клієнтських пристроях, а й для створення хмарних сервісів. Один із таких прикладів — служба Password Monitoring, яка щодня обробляє мільярди запитів з усього світу.

Нещодавно цю систему повністю переписали зі старого Java-коду на Swift, і результати вражають:
🚀 помітне зростання продуктивності
📉 зменшення обсягу кодової бази на 85%

📖 У цій статті детально розповідається, як саме відбувався перехід, які оптимізації вдалося реалізувати та що це означає для майбутнього Swift на бекенді.

🇺🇦 iOSDevUA
👍1
💡Якщо у вашому застосунку є підписки, то ви, сподіваюся, вже знайомі з поняттям 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