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

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

чат: @iOSDevsUAChat
Ідеї та пропозиції: @SergeyZhuravel
Download Telegram
💡Використання памʼяті у 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
💡Mesh‑градієнти в SwiftUI

На відміну від лінійних чи радіальних, mesh‑градієнти дозволяють набагато гнучкіше керувати розподілом кольорів на площині. Це відкриває нові можливості для створення виразних, органічних заливок.

У статті розглядається:
🎨 як створювати такі градієнти в SwiftUI
📐 як керувати геометрією й позиціями кольорів
🌀 як створювати складні форми й анімації на їх основі

Чудовий ресурс для тих, хто хоче вийти за межі стандартних заливок і створити по-справжньому унікальний візуальний стиль у SwiftUI.

🇺🇦 iOSDevUA
🔥3
💡На Swift тепер офіційно можна буде розробляти Android‑застосунки

На swift.org оголосили про створення нової робочої групи, мета якої — зробити Android офіційно підтримуваною платформою для Swift.

📖 Деталі — на сторінці Swift Android Workgroup

Основні завдання групи:

🔹 Розвивати та вдосконалювати підтримку Android у офіційному дистрибутиві Swift
🔹 Рекомендувати зміни у ключових бібліотеках Swift — таких як Foundation і Dispatch — для кращої сумісності з Android‑підходами
🔹 Визначити підтримувані архітектури та API‑рівні Android
🔹 Створити рекомендації з інтеграції Swift із Java SDK і пакування Swift‑бібліотек в Android‑застосунки
🔹 Працювати над підтримкою дебагу Swift‑коду на Android
🔹 Консультувати спільноту щодо додавання Android‑сумісності в сторонні Swift‑пакети

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

🇺🇦 iOSDevUA
🔥4
Якщо ви не знали: у логах Xcode можна всього за кілька кліків приховати всі повідомлення від певної бібліотеки, процесу або підсистеми.

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

🇺🇦 iOSDevUA
4
💡FaultOrdering — опенсорсний інструмент від Emerge Tools для прискорення запуску iOS‑застосунків

Emerge Tools, які нещодавно стали частиною Sentry, презентували перший спільний реліз — інструмент FaultOrdering, що генерує order-файли для оптимізації запуску застосунку.
🔗 Офіційний анонс

📖 Детальний розбір — у блозі Sentry:
Читати статтю
🛠 GitHub-репозиторій

🔍 Що таке order-файли і навіщо вони потрібні?
Це простий текстовий файл, який містить список символів (один символ на рядок), що критично важливі для швидкого старту застосунку. Під час лінкування ці символи групуються ближче один до одного — щоб завантаження відбувалося швидше.

Приклад із HackerNews від Emerge Tools:
+[SentryAppStartTracker load]  
+[SentryCrashDefaultMachineContextWrapper load]
_main
_$s10HackerNews0aB3AppVAC7SwiftUI0C0AAWl
_$s10HackerNews0aB3AppV7SwiftUI0C0AadEPxycfCTW
_$s10HackerNews0aB3AppVACycfCTf4d_n

Тут є символи з Objective‑C, C і Swift, що активно викликаються одразу після запуску.

🎯 Хто вже використовує подібні техніки?
У статті згадуються Spotify, Snapchat та Airbnb — всі вони працюють з order-файлами для оптимізації старту.

📉 У практиці Emerge Tools було зафіксовано до 20% скорочення часу запуску застосунку.

💬 А ви використовуєте подібні техніки для оптимізації старту?
Можливо, маєте простіші альтернативи або досвід впровадження подібних рішень? Поділіться!

🇺🇦 iOSDevUA
💡enum чи bool?
Вибір за вами — а тут трохи міркувань на цю тему:
🔗 Читайте пост

Коли ви керуєте станом — особливо, наприклад, відкриттям sheet’ів у SwiftUI — часто постає питання:
вистачить простого Bool, чи все ж краще створити enum із різними варіантами?

У матеріалі розглядаються переваги enum, коли сценарії взаємодії ускладнюються, і чому надто багато Bool-змінних може призвести до плутанини.

Коротко, але по суті — раджу до прочитання, якщо ви дбаєте про чистоту архітектури.

🇺🇦 iOSDevUA
5
💡Як виграти Apple Design Award: Any Distance тепер у відкритому доступі

Застосунок Any Distance спочатку створювався як простий інструмент для красивого візуального обміну своїми тренуваннями в соцмережах. Згодом проєкт перетворився на венчурний стартап із амбіцією посунути Strava — і хоча цього не сталося, у 2023 році застосунок здобув Apple Design Award за графіку та оформлення.

📖 У блозі Даніель Кунц розповідає, чому команда врешті зробила застосунок open source: серед причин — помилки в стратегії стартапу та складнощі зі збором коштів на розвиток.

Також він ділиться критикою документації SwiftUI:

«Apple покаже вам сто способів створити простий TODO-ліст, який навряд чи скомпілюється швидко, але коли справа доходить до реальних складних інтерфейсів — ви залишаєтесь самі. Через брак прикладів LLM теж не особливо допоможуть».


Крім того, Даніель згадує, що витратив багато часу на роботу з Metal, щоби досягти того рівня продуктивності та візуального ефекту, який ми бачимо в застосунку.

🛠 І найцікавіше — проєкт повністю відкритий:
🔗 GitHub — Any Distance iOS

Чудова можливість подивитися, як виглядає справжній дизайнерський застосунок Apple зсередини.

🇺🇦 iOSDevUA
👍2
💡Чому варто відмовитися від Timer.publish у SwiftUI — і що використовувати замість

На перший погляд Timer.publish здається зручним способом реалізувати таймер у SwiftUI. Але в цій статті пояснюється, чому це не найкраще рішення — особливо з погляду на продуктивність, повторне створення таймерів та контроль над життєвим циклом.

Автор ділиться прикладами, які демонструють неочевидні баги, пов’язані з оновленням в’юшок, і пропонує кращі альтернативи, зокрема використання Task з async/await, ObservableObject або @StateObject із явним контролем часу.

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

🇺🇦 iOSDevUA
👍1
💡Реверс-інжиніринг Coding Intelligence у Xcode — як влаштовано AI-кодинг під капотом

Цього року в Xcode зʼявилась повноцінна версія Coding Intelligence — інструменту, що інтегрує AI‑допомогу прямо в середовище розробки.

📖 У статті Пітера Фрізе автор спробував зазирнути “під капот” і частково зрозуміти, як саме працює цей інструмент. Це свого роду дослідження — неофіційне, але досить глибоке.

🔍 Зокрема, він аналізує:
Реверс системних інструкцій Xcode — які prompt-и передаються в бекенд, і що саме формує відповіді інтелектуального помічника.
Типові сценарії використання Coding Intelligence — як Xcode розпізнає контекст, які підказки дає, і як вони пов’язані з діями користувача.

Цей огляд буде особливо цікавим тим, хто хоче краще розуміти логіку роботи AI‑підказок в Xcode і, можливо, навчитися створювати ефективніші промпти для взаємодії з ними.

🇺🇦 iOSDevUA
👍1
💡Великий огляд новинок у SwiftUI для iOS 26!

У цьому матеріалі зібрано все, що зʼявилося нового у SwiftUI з виходом iOS 26 — і повірте, змін справді багато.

🆕 Нові компоненти
⚙️ Покращення продуктивності
🎨 Більше контролю над анімаціями та макетами
🧩 Нові API для навігації та інтеграції з системою

Автор також залишив багато корисних посилань усередині статті — не забудьте по них пройтися, щоб зануритися в тему глибше!

Ідеальний ресурс, якщо хочете швидко оновити знання після WWDC.

🇺🇦 iOSDevUA
💡Продовжуємо знайомство з новинками в Swift — цього разу про concurrent

🧠 У новому матеріалі розбирається, що таке concurrent у Swift‑Concurrency, як він працює, і коли його варто застосовувати.

📌 Є приклади коду, пояснення відмінностей між паралельністю й асинхронністю, а також поради, як уникати типових помилок.

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

🇺🇦 iOSDevUA
2
This media is not supported in your browser
VIEW IN TELEGRAM
💡Чому оновлюються view у SwiftUI — простий спосіб дебагу

При відлагодженні SwiftUI-інтерфейсу корисно розуміти, що саме викликає оновлення в’юшки. Один із найпростіших (і офіційно підтримуваних!) способів — це використання методу Self._printChanges() всередині body замість звичайного print.

🔍 Цей метод виводить у консоль:
— які властивості змінилися,
— чи змінилася структура або ідентичність вʼю (@identity),
— чи просто змінилося значення (@self).

📖 Раніше це було прихованим API (як тут на StackOverflow), але зараз метод згадується вже й в офіційній документації Apple.

⚙️ Надзвичайно зручно для пошуку зайвих перерендерів або оптимізації складних екранів у SwiftUI.

🇺🇦 iOSDevUA
4🔥2