💡Що нового в тестуванні у Swift 6.2 — детальний огляд
Продовжуємо серію глибоких розборів усіх новинок у бета-релізах Xcode, iOS та Swift — цього разу фокус на Swift Testing, XCTest і автоматизоване тестування.
У статті висвітлено:
🔹 що змінилося в інфраструктурі тестів у Swift 6.2
🔹 нові API та можливості, пов’язані з автотестами
🔹 майбутнє XCTest і напрямок розвитку Swift Testing
Матеріал буде особливо корисним для тих, хто регулярно працює з тестами або планує міграцію на новий підхід у Swift Testing.
🇺🇦 iOSDevUA
Продовжуємо серію глибоких розборів усіх новинок у бета-релізах Xcode, iOS та Swift — цього разу фокус на Swift Testing, XCTest і автоматизоване тестування.
У статті висвітлено:
🔹 що змінилося в інфраструктурі тестів у Swift 6.2
🔹 нові API та можливості, пов’язані з автотестами
🔹 майбутнє XCTest і напрямок розвитку Swift Testing
Матеріал буде особливо корисним для тих, хто регулярно працює з тестами або планує міграцію на новий підхід у Swift Testing.
🇺🇦 iOSDevUA
Rachelbrindle
What's new in Testing, 2025 Edition
Software Engineer. Maker. Pilot.
💡Approachable Concurrency в Xcode 26 — що це і навіщо воно вам
У Xcode 26 зʼявилась можливість увімкнути набір функцій із Swift 6.2 під спільною назвою Approachable Concurrency — тобто “доступна/зрозуміла конкурентність”.
У статті детально пояснюється, що входить до цього набору, чому це важливо, і як це полегшує життя розробникам, які тільки починають працювати з
🧠 Коротко: це ініціатива, яка робить паралелізм у Swift безпечнішим, передбачуванішим і легшим у розумінні — без потреби глибоко занурюватися в актори та низькорівневу синхронізацію.
Чудове введення для тих, хто хоче поступово освоїти сучасну конкурентність у Swift.
🇺🇦 iOSDevUA
У Xcode 26 зʼявилась можливість увімкнути набір функцій із Swift 6.2 під спільною назвою Approachable Concurrency — тобто “доступна/зрозуміла конкурентність”.
У статті детально пояснюється, що входить до цього набору, чому це важливо, і як це полегшує життя розробникам, які тільки починають працювати з
async/await у Swift.🧠 Коротко: це ініціатива, яка робить паралелізм у Swift безпечнішим, передбачуванішим і легшим у розумінні — без потреби глибоко занурюватися в актори та низькорівневу синхронізацію.
Чудове введення для тих, хто хоче поступово освоїти сучасну конкурентність у Swift.
🇺🇦 iOSDevUA
Donny Wals
What is Approachable Concurrency in Xcode 26? – Donny Wals
Xcode 26 allows developers to opt-in to several of Swift 6.2’s features that will make concurrency more approachable to developers through a compiler setting called “Approachable Concurrency” or .
❤1
💡Чому Gmail важить 700 МБ — розбір від Emerge Tools
За останній рік застосунок Gmail додав ще +100 МБ і тепер важить близько 700 МБ.
На перший погляд це дивно — адже у застосунку, здається, лише кілька базових екранів.
Команда Emerge Tools вирішила розібратись, звідки береться така вага, і показала, що саме «роздуває» застосунок:
📦 сторонні SDK
🎨 важкі ассети
🧱 дубльовані залежності
🛠 невидимі на перший погляд фреймворки
Це ще раз доводить, що навіть прості ззовні застосунки можуть приховувати складну й об’ємну архітектуру всередині.
Корисне нагадування для всіх розробників — слідкуйте за розміром вашого застосунку!
🇺🇦 iOSDevUA
За останній рік застосунок Gmail додав ще +100 МБ і тепер важить близько 700 МБ.
На перший погляд це дивно — адже у застосунку, здається, лише кілька базових екранів.
Команда Emerge Tools вирішила розібратись, звідки береться така вага, і показала, що саме «роздуває» застосунок:
📦 сторонні SDK
🎨 важкі ассети
🧱 дубльовані залежності
🛠 невидимі на перший погляд фреймворки
Це ще раз доводить, що навіть прості ззовні застосунки можуть приховувати складну й об’ємну архітектуру всередині.
Корисне нагадування для всіх розробників — слідкуйте за розміром вашого застосунку!
🇺🇦 iOSDevUA
X (formerly Twitter)
Emerge Tools (@emergetools) on X
Exactly 1 year ago today, we had our biggest tweet ever about @gmail's iOS app size
And funny enough, Gmail's size is making the rounds again
🧵 Looking at why Gmail is ~700 MB (+ why it's increased by 100 MB in the last year)
And funny enough, Gmail's size is making the rounds again
🧵 Looking at why Gmail is ~700 MB (+ why it's increased by 100 MB in the last year)
🔥Apple презентувала новий Retention Messaging API — інструмент для утримання підписників
Apple представила Retention Messaging API — новий інструмент, який дозволяє розробникам впливати на рішення користувача в момент, коли той переглядає підписку та може її скасувати.
🔧 Це особливо корисно як для інді‑розробників, так і для компаній, чий бізнес повністю тримається на підписках.
Тепер можна кастомізувати, яке повідомлення показати, залежно від:
— продукту
— мови/регіону
— ситуації користувача
Доступні 4 формати повідомлень:
1. Текст
2. Текст + зображення
3. Пропозиція перейти на інший план (текст + нова підписка)
4. Промо‑офер з текстом та знижкою або альтернативним рівнем підписки
📖 Детальна документація вже доступна за посиланням:
👉 developer.apple.com/documentation/retentionmessaging
Це перший крок до більш гнучкого керування втратою користувачів — прямо в межах екосистеми Apple.
🇺🇦 iOSDevUA
Apple представила Retention Messaging API — новий інструмент, який дозволяє розробникам впливати на рішення користувача в момент, коли той переглядає підписку та може її скасувати.
🔧 Це особливо корисно як для інді‑розробників, так і для компаній, чий бізнес повністю тримається на підписках.
Тепер можна кастомізувати, яке повідомлення показати, залежно від:
— продукту
— мови/регіону
— ситуації користувача
Доступні 4 формати повідомлень:
1. Текст
2. Текст + зображення
3. Пропозиція перейти на інший план (текст + нова підписка)
4. Промо‑офер з текстом та знижкою або альтернативним рівнем підписки
📖 Детальна документація вже доступна за посиланням:
👉 developer.apple.com/documentation/retentionmessaging
Це перший крок до більш гнучкого керування втратою користувачів — прямо в межах екосистеми Apple.
🇺🇦 iOSDevUA
👍3🔥1
💡Оновлений UIKit для iOS 26 — вже доступний у Figma та Sketch
Apple виклала свіжі дизайн-ресурси для iOS та iPadOS 26 — з актуальними компонентами, стилями та гайдлайнами.
🛠 UIKit доступний для Figma та Sketch — ідеально підходить для створення макетів із урахуванням нових системних патернів, включаючи Liquid Glass та оновлену типографіку.
Обов’язково до перегляду для дизайнерів і розробників, які хочуть тримати інтерфейси в актуальному вигляді під iOS 26.
🇺🇦 iOSDevUA
Apple виклала свіжі дизайн-ресурси для iOS та iPadOS 26 — з актуальними компонентами, стилями та гайдлайнами.
🛠 UIKit доступний для Figma та Sketch — ідеально підходить для створення макетів із урахуванням нових системних патернів, включаючи Liquid Glass та оновлену типографіку.
Обов’язково до перегляду для дизайнерів і розробників, які хочуть тримати інтерфейси в актуальному вигляді під iOS 26.
🇺🇦 iOSDevUA
👍1🔥1
💡Нерозкрита можливість: як одночасно зробити скруглення і тінь у UIKit
У UIKit це — відома проблема: неможливо легко поєднати скруглені кути та тінь без трюків. Але, як виявилось, є один секретний спосіб, хоч і з недокументованого API (тобто використовувати — на власний ризик).
🔍 CALayer має приховані властивості, які дозволяють керувати так званим “rim” — обводкою (але не
✨ На відміну від стандартного
— розміщувати ефект поза межами вʼю
— поєднувати скруглення + тінь без артефактів
— змінювати ширину, колір і прозорість обводки
⚠️ Зверніть увагу: властивість не документована, тому існує ризик, що вона перестане працювати в майбутніх версіях iOS. Але якщо потрібен акуратний результат уже зараз — цей метод точно вартий уваги.
🇺🇦 iOSDevUA
У UIKit це — відома проблема: неможливо легко поєднати скруглені кути та тінь без трюків. Але, як виявилось, є один секретний спосіб, хоч і з недокументованого API (тобто використовувати — на власний ризик).
🔍 CALayer має приховані властивості, які дозволяють керувати так званим “rim” — обводкою (але не
border, яка малюється всередині в’ю). Це зовнішній ефект, який виглядає як м’яка тінь або світловий контур.view.layer.setValue(true, forKey: "softRim")
view.layer.setValue(20, forKey: "rimWidth")
view.layer.setValue(UIColor.yellow.cgColor, forKey: "rimColor")
view.layer.setValue(1.0, forKey: "rimOpacity")
✨ На відміну від стандартного
border, цей метод дозволяє:— розміщувати ефект поза межами вʼю
— поєднувати скруглення + тінь без артефактів
— змінювати ширину, колір і прозорість обводки
⚠️ Зверніть увагу: властивість не документована, тому існує ризик, що вона перестане працювати в майбутніх версіях iOS. Але якщо потрібен акуратний результат уже зараз — цей метод точно вартий уваги.
🇺🇦 iOSDevUA
👍4
💡Як загорнути Haskell-бібліотеку у Swift-фреймворк (і чому це не так складно, як здається)
Продовжуючи тему взаємодії між мовами, цього разу — дещо незвичний кейс: інтеграція Haskell у Swift‑застосунок. Так, ви не помилились 🙂
У статті крок за кроком пояснюється, як:
🔹 зібрати Haskell-бібліотеку
🔹 обгорнути її у
🔹 підключити до Swift‑проєкту
🔹 викликати функції через C-інтерфейс
І все це — доволі просто, без великих жертв із боку продуктивності чи стабільності.
Ідеальний матеріал для ентузіастів, які хочуть поєднати функціональну чистоту Haskell з мобільною розробкою на Swift.
🇺🇦 iOSDevUA
Продовжуючи тему взаємодії між мовами, цього разу — дещо незвичний кейс: інтеграція Haskell у Swift‑застосунок. Так, ви не помилились 🙂
У статті крок за кроком пояснюється, як:
🔹 зібрати Haskell-бібліотеку
🔹 обгорнути її у
.xcframework🔹 підключити до Swift‑проєкту
🔹 викликати функції через C-інтерфейс
І все це — доволі просто, без великих жертв із боку продуктивності чи стабільності.
Ідеальний матеріал для ентузіастів, які хочуть поєднати функціональну чистоту Haskell з мобільною розробкою на Swift.
🇺🇦 iOSDevUA
alt-romes.github.io
Automatically Packaging a Haskell Library as a Swift Binary XCFramework
Announcing <code>xcframework</code> or: the happy path for wiring a Haskell dependency to your Swift app
🤔2
This media is not supported in your browser
VIEW IN TELEGRAM
😳 Макбук як ваги — незвичайний macOS-застосунок на GitHub
Не зміг пройти повз цей репозиторій!
TrackWeight — це застосунок, який перетворює MacBook у справжні ваги, використовуючи датчики тиску Force Touch.
Під капотом — бібліотека OpenMultitouchSupport від Такуто Накамури, що дозволяє отримувати приватний доступ до всіх подій трекпада та миші на macOS.
💡 Чому це працює: трекпад MacBook — це не звичайна сенсорна панель, а датчик сили натиску з тактильним зворотним зв’язком, тому ви відчуваєте “клік”, хоча він не механічний. І саме це дає змогу відслідковувати навіть зміну ваги.
🛠 GitHub-репозиторій — вже понад 5 000 зірочок
Саме заради таких експериментів ми й любимо розробку, правда ж? 🚀
🇺🇦 iOSDevUA
Не зміг пройти повз цей репозиторій!
TrackWeight — це застосунок, який перетворює MacBook у справжні ваги, використовуючи датчики тиску Force Touch.
Під капотом — бібліотека OpenMultitouchSupport від Такуто Накамури, що дозволяє отримувати приватний доступ до всіх подій трекпада та миші на macOS.
💡 Чому це працює: трекпад MacBook — це не звичайна сенсорна панель, а датчик сили натиску з тактильним зворотним зв’язком, тому ви відчуваєте “клік”, хоча він не механічний. І саме це дає змогу відслідковувати навіть зміну ваги.
🛠 GitHub-репозиторій — вже понад 5 000 зірочок
Саме заради таких експериментів ми й любимо розробку, правда ж? 🚀
🇺🇦 iOSDevUA
👍6
💡Як дати Claude Code доступ для роботи зі SwiftUI
Claude Code — один із найпотужніших AI-агентів для програмування на сьогодні. Його інтерфейс — мінімалістична консольна обгортка, що напряму спілкується з моделями Anthropic і підтримує MCP та інші CLI‑інструменти.
💡 Але агент стає справді ефективним, коли має доступ не лише до коду, а й до результатів його виконання.
У статті показано, як використання снепшот‑тестів (snapshot tests) дозволяє Claude Code:
— бачити, як виглядає SwiftUI‑інтерфейс
— оцінювати візуальний результат
— і ітеративно вдосконалювати UI до бажаного вигляду
Це дає змогу агенту не просто писати код за промптом, а працювати з візуальним контекстом — тобто “бачити”, як змінюється інтерфейс, і краще адаптувати його до ваших потреб.
🇺🇦 iOSDevUA
Claude Code — один із найпотужніших AI-агентів для програмування на сьогодні. Його інтерфейс — мінімалістична консольна обгортка, що напряму спілкується з моделями Anthropic і підтримує MCP та інші CLI‑інструменти.
💡 Але агент стає справді ефективним, коли має доступ не лише до коду, а й до результатів його виконання.
У статті показано, як використання снепшот‑тестів (snapshot tests) дозволяє Claude Code:
— бачити, як виглядає SwiftUI‑інтерфейс
— оцінювати візуальний результат
— і ітеративно вдосконалювати UI до бажаного вигляду
Це дає змогу агенту не просто писати код за промптом, а працювати з візуальним контекстом — тобто “бачити”, як змінюється інтерфейс, і краще адаптувати його до ваших потреб.
🇺🇦 iOSDevUA
Twocentstudios
Giving Claude Code Eyes to See Your SwiftUI Views
❤1
💡Java-інтероп у Swift 6.2 — як це працює на практиці
Як ви, напевно, пам’ятаєте, наприкінці минулого року Apple анонсувала нативну взаємодію Swift із Java. Це важливий крок як для самої Apple (яка починає писати нові високонавантажені сервіси на Swift), так і для спільноти, яка дедалі більше цікавиться Server-side Swift.
У статті розглядається:
🔹 Як влаштовано Java-інтероп у Swift 6.2
🔹 Як правильно налаштувати середовище, щоб усе працювало
🔹 Що потрібно для виклику Java-класів із Swift та навпаки
🔹 Які є обмеження та підводні камені
Це чудовий вступ для тих, хто хоче інтегрувати Swift у проєкти з Java або просто тримає руку на пульсі розвитку серверного Swift.
🇺🇦 iOSDevUA
Як ви, напевно, пам’ятаєте, наприкінці минулого року Apple анонсувала нативну взаємодію Swift із Java. Це важливий крок як для самої Apple (яка починає писати нові високонавантажені сервіси на Swift), так і для спільноти, яка дедалі більше цікавиться Server-side Swift.
У статті розглядається:
🔹 Як влаштовано Java-інтероп у Swift 6.2
🔹 Як правильно налаштувати середовище, щоб усе працювало
🔹 Що потрібно для виклику Java-класів із Swift та навпаки
🔹 Які є обмеження та підводні камені
Це чудовий вступ для тих, хто хоче інтегрувати Swift у проєкти з Java або просто тримає руку на пульсі розвитку серверного Swift.
🇺🇦 iOSDevUA
Artur Gruchała
Swift 6.2 Java interoperability in practice
If you’ve ever tried straddling two worlds—one foot in the elegant, type-safe realm of Swift and the other in the sprawling ecosystem of Java—you know the pain of keeping them in sync. Swift 6.2 introduces a first-class Swift–Java interoperability layer via…
❤1
📖 Як у Swift працює мʼютекс — новий Synchronization фреймворк в iOS 18
Починаючи з iOS 18, Apple представила фреймворк Synchronization, який надає зручні засоби синхронізації, включно з мʼютексами, спеціально оптимізованими для роботи з Swift Concurrency.
У статті розглядається:
🔹 як використовувати нові мʼютекси в Swift
🔹 у чому їх переваги порівняно з класичними локами (
🔹 чим вони відрізняються від
🔹 приклади використання для захисту критичних секцій коду без втрати продуктивності
Це чудова можливість поглибити розуміння сучасної синхронізації в Swift — особливо якщо ви працюєте з
🇺🇦 iOSDevUA
Починаючи з iOS 18, Apple представила фреймворк Synchronization, який надає зручні засоби синхронізації, включно з мʼютексами, спеціально оптимізованими для роботи з Swift Concurrency.
У статті розглядається:
🔹 як використовувати нові мʼютекси в Swift
🔹 у чому їх переваги порівняно з класичними локами (
NSLock, os_unfair_lock)🔹 чим вони відрізняються від
actors🔹 приклади використання для захисту критичних секцій коду без втрати продуктивності
Це чудова можливість поглибити розуміння сучасної синхронізації в Swift — особливо якщо ви працюєте з
async/await і хочете більше контролю над доступом до спільного стану.🇺🇦 iOSDevUA
SwiftLee
Modern Swift Lock: Mutex & the Synchronization Framework
Learn how a Swift lock can help you create thread-safe access to data as an alternative to actors in Swift Concurrency.
💡LLM Leaderboard — порівняння понад 100 AI‑моделей від OpenAI, Google, DeepSeek та інших
Корисний ресурс, де зібрано більше 100 великих мовних моделей (LLM) із порівнянням за ключовими характеристиками:
🔹 ціна за токен
🔹 швидкість генерації (токени/секунда)
🔹 затримка відповіді (TTFT)
🔹 обсяг контекстного вікна
🔹 продуктивність у бенчмарках
Платформа допомагає швидко оцінити, яка модель найкраще підходить для ваших задач — чи то генерація коду, чи аналіз тексту, чи швидкий вивід у реальному часі.
Ідеальний інструмент для розробників, які хочуть обирати модель не за брендом, а за фактичними метриками.
🇺🇦 iOSDevUA
Корисний ресурс, де зібрано більше 100 великих мовних моделей (LLM) із порівнянням за ключовими характеристиками:
🔹 ціна за токен
🔹 швидкість генерації (токени/секунда)
🔹 затримка відповіді (TTFT)
🔹 обсяг контекстного вікна
🔹 продуктивність у бенчмарках
Платформа допомагає швидко оцінити, яка модель найкраще підходить для ваших задач — чи то генерація коду, чи аналіз тексту, чи швидкий вивід у реальному часі.
Ідеальний інструмент для розробників, які хочуть обирати модель не за брендом, а за фактичними метриками.
🇺🇦 iOSDevUA
💡Threads vs Tasks у Swift Concurrency — у чому різниця?
Як зазначає Антуан у своїй статті, багато розробників, особливо ті, хто працював зі Swift або Objective‑C з використанням GCD, можуть задуматися:
у чому різниця між потоками (threads) і задачами (tasks)?
Раніше ми звикли до “потокового мислення”, що допомагало створювати асинхронні функції з замиканнями.
Але з появою Swift Concurrency і
тепер достатньо написати
❓ Та виникає логічне питання:
а де саме виконується Task — в основному чи у фоновому потоці?
У статті розглядаються:
🔹 ключові відмінності між Task і Thread
🔹 як Swift сам керує плануванням задач
🔹 чому Task — це не потік у класичному розумінні
🔹 як уникнути поширених помилок і хибних уявлень
Це чудовий ресурс для тих, хто хоче глибше зрозуміти, як працює Swift Concurrency під капотом, і писати ефективніший асинхронний код.
🇺🇦 iOSDevUA
Як зазначає Антуан у своїй статті, багато розробників, особливо ті, хто працював зі Swift або Objective‑C з використанням GCD, можуть задуматися:
у чому різниця між потоками (threads) і задачами (tasks)?
Раніше ми звикли до “потокового мислення”, що допомагало створювати асинхронні функції з замиканнями.
Але з появою Swift Concurrency і
async/await усе змінюється:тепер достатньо написати
Task { ... }, щоби запустити код в асинхронному контексті — без явного керування потоками.❓ Та виникає логічне питання:
а де саме виконується Task — в основному чи у фоновому потоці?
У статті розглядаються:
🔹 ключові відмінності між Task і Thread
🔹 як Swift сам керує плануванням задач
🔹 чому Task — це не потік у класичному розумінні
🔹 як уникнути поширених помилок і хибних уявлень
Це чудовий ресурс для тих, хто хоче глибше зрозуміти, як працює Swift Concurrency під капотом, і писати ефективніший асинхронний код.
🇺🇦 iOSDevUA
SwiftLee
Threads vs. Tasks in Swift Concurrency
Explore the difference between Threads and Tasks in Swift Concurrency and traditional threading methods. Get clarity on their usage.
❤1
💡let чи var у структурах Swift — як обирати правильно
У цьому матеріалі Джон Санделл аналізує, коли варто використовувати var, а коли — let для властивостей у структурах.
🔍 Основна думка:
— за замовчуванням краще використовувати var,
— а let — тільки там, де справді потрібна фіксована, незмінна властивість, яка має очевидне смислове навантаження.
Такий підхід спрощує масштабування коду й дозволяє уникнути зайвих обмежень, які можуть ускладнити рефакторинг.
✅ Якщо хочете краще зрозуміти принципи проєктування чистих Swift-структур — цей текст варто додати в закладки.
🇺🇦 iOSDevUA
У цьому матеріалі Джон Санделл аналізує, коли варто використовувати var, а коли — let для властивостей у структурах.
🔍 Основна думка:
— за замовчуванням краще використовувати var,
— а let — тільки там, де справді потрібна фіксована, незмінна властивість, яка має очевидне смислове навантаження.
Такий підхід спрощує масштабування коду й дозволяє уникнути зайвих обмежень, які можуть ускладнити рефакторинг.
✅ Якщо хочете краще зрозуміти принципи проєктування чистих Swift-структур — цей текст варто додати в закладки.
🇺🇦 iOSDevUA
Swift by Sundell
Deciding between ‘let’ and ‘var’ for Swift struct properties | Swift by Sundell
Does marking a given Swift struct property as either ‘let’ or ‘var’ simply determine its mutability, or is there more to it? Let’s explore!
👍3🔥2
💸 Яка середня зарплата мобільного розробника у світі — дані з опитування StackOverflow
StackOverflow опублікував щорічний звіт за результатами опитування розробників. Окрім традиційних питань про стек, досвід і зарплати, цього року багато уваги приділено темі AI.
📌 Цікаво:
— Третина розробників вже регулярно використовує AI‑асистентів
— Але лише 3.1% повністю довіряють їхнім відповідям
💸 Що до зарплат мобільних розробників (брутто, до податків):
• 🇺🇸 США — $170 000/рік
• 🇬🇧 Велика Британія — $99 383/рік
• 🇩🇪 Німеччина — $93 972/рік
• 🇫🇷 Франція — $63 228/рік
• 🇮🇳 Індія — $10 462/рік
У середньому по всіх країнах зафіксовано зростання на 20% у порівнянні з 2024 роком.
Звіт — цікаве джерело для аналізу ринку, особливо якщо плануєте змінювати країну чи порівнюєте свій рівень доходу.
🇺🇦 iOSDevUA
StackOverflow опублікував щорічний звіт за результатами опитування розробників. Окрім традиційних питань про стек, досвід і зарплати, цього року багато уваги приділено темі AI.
📌 Цікаво:
— Третина розробників вже регулярно використовує AI‑асистентів
— Але лише 3.1% повністю довіряють їхнім відповідям
💸 Що до зарплат мобільних розробників (брутто, до податків):
• 🇺🇸 США — $170 000/рік
• 🇬🇧 Велика Британія — $99 383/рік
• 🇩🇪 Німеччина — $93 972/рік
• 🇫🇷 Франція — $63 228/рік
• 🇮🇳 Індія — $10 462/рік
У середньому по всіх країнах зафіксовано зростання на 20% у порівнянні з 2024 роком.
Звіт — цікаве джерело для аналізу ринку, особливо якщо плануєте змінювати країну чи порівнюєте свій рівень доходу.
🇺🇦 iOSDevUA
❤3👍1
💡SwiftUI та розробка для macOS 26 — що нового?
Хоча більшість розробників не створює окремі таргети під macOS, є чимало застосунків, для яких Mac — основна платформа. І саме для них оновлення SwiftUI в macOS 26 буде особливо цікавим.
У матеріалі розглянуто ключові нововведення та приклади використання:
🔹 Оновлений підхід до App Icon — із прикладом використання Icon Composer
🔹 Нові стилі контролів
🔹 Робота з WebView
🔹 Підтримка Rich Text
🔹 Обробка великих списків
🔹 Меню з іконками
🔹 Concurrency у SwiftUI на Mac
🔹 Тулбари і кастомізація
🛠 А ще весь приклад коду доступний на GitHub — чудовий ресурс для тих, хто хоче спробувати нові можливості вже зараз.
👉 GitHub-демо проєкту
🇺🇦 iOSDevUA
Хоча більшість розробників не створює окремі таргети під macOS, є чимало застосунків, для яких Mac — основна платформа. І саме для них оновлення SwiftUI в macOS 26 буде особливо цікавим.
У матеріалі розглянуто ключові нововведення та приклади використання:
🔹 Оновлений підхід до App Icon — із прикладом використання Icon Composer
🔹 Нові стилі контролів
🔹 Робота з WebView
🔹 Підтримка Rich Text
🔹 Обробка великих списків
🔹 Меню з іконками
🔹 Concurrency у SwiftUI на Mac
🔹 Тулбари і кастомізація
🛠 А ще весь приклад коду доступний на GitHub — чудовий ресурс для тих, хто хоче спробувати нові можливості вже зараз.
👉 GitHub-демо проєкту
🇺🇦 iOSDevUA
❤1🤔1
💡Невелика CLI-утиліта для оптимізації зображень у вашому iOS‑проєкті
Ця проста у використанні командна тулза допоможе навести лад у ресурсах проєкту — особливо в розділі зображень. Автор описує її призначення так:
Ідеально підходить для фінального етапу підготовки до релізу або для ревізії великого проєкту, у якому накопичилось багато зайвих ассетів.
🇺🇦 iOSDevUA
Ця проста у використанні командна тулза допоможе навести лад у ресурсах проєкту — особливо в розділі зображень. Автор описує її призначення так:
Виявляти невикористані зображення, перевіряти відповідність вимогам Apple і надавати чіткі рекомендації для покращення продуктивності застосунку та шансів проходження рев’ю в App Store.
Ідеально підходить для фінального етапу підготовки до релізу або для ревізії великого проєкту, у якому накопичилось багато зайвих ассетів.
🇺🇦 iOSDevUA
GitHub
GitHub - sahilsatralkar/iOSImageOptimizerTool: iOS Image Optimizer Tool
iOS Image Optimizer Tool. Contribute to sahilsatralkar/iOSImageOptimizerTool development by creating an account on GitHub.
❤2
💡Swift-Erlang Actor System — об’єднання акторів Swift та Erlang у єдину розподілену систему
Після обговорень Java та Haskell — настала черга Erlang. Нова бібліотека дає змогу Swift‑застосункам підключатися до розподілених Erlang-кластерів.
🔗 Що це означає на практиці:
— актори, написані на Swift, можуть вільно спілкуватися з Erlang-акторами
— ви можете надсилати повідомлення, викликати функції, обробляти відповіді
— усе це — в межах єдиної розподіленої системи, незалежно від мови
Це справжній прорив для тих, хто хоче будувати розподілені системи або інтегрувати Swift у наявну інфраструктуру на Erlang/Elixir.
Акторна модель стає по-справжньому міжмовною.
🇺🇦 iOSDevUA
Після обговорень Java та Haskell — настала черга Erlang. Нова бібліотека дає змогу Swift‑застосункам підключатися до розподілених Erlang-кластерів.
🔗 Що це означає на практиці:
— актори, написані на Swift, можуть вільно спілкуватися з Erlang-акторами
— ви можете надсилати повідомлення, викликати функції, обробляти відповіді
— усе це — в межах єдиної розподіленої системи, незалежно від мови
Це справжній прорив для тих, хто хоче будувати розподілені системи або інтегрувати Swift у наявну інфраструктуру на Erlang/Elixir.
Акторна модель стає по-справжньому міжмовною.
🇺🇦 iOSDevUA
Swift Forums
Introducing swift-erlang-actor-system
I'm excited to share a new actor system we've been building for Swift's distributed actors: swift-erlang-actor-system. This actor system enables Swift programs to join a distributed Erlang cluster. Here's an example of a simple chat program using the actor…
🔥2
💡Combine та Swift Concurrency — як поєднувати, мігрувати і не наламати
У матеріалі розглядається, як правильно поєднувати Combine та Swift Concurrency, а також які можуть виникнути проблеми з потоками, якщо зробити це некоректно.
🔀 Основні теми:
— як поступово мігрувати з Combine на
— у яких випадках можна безпечно використовувати обидва підходи одночасно
— які ризики виникають при змішуванні потоків (особливо з
— чому Task у Swift Concurrency не гарантує, що ви опинитесь у потрібному потоці
Корисний розбір для команд, які переходять на Swift Concurrency, але ще мають велику кодову базу на Combine.
🇺🇦 iOSDevUA
У матеріалі розглядається, як правильно поєднувати Combine та Swift Concurrency, а також які можуть виникнути проблеми з потоками, якщо зробити це некоректно.
🔀 Основні теми:
— як поступово мігрувати з Combine на
async/await— у яких випадках можна безпечно використовувати обидва підходи одночасно
— які ризики виникають при змішуванні потоків (особливо з
receive(on:) у Combine)— чому Task у Swift Concurrency не гарантує, що ви опинитесь у потрібному потоці
Корисний розбір для команд, які переходять на Swift Concurrency, але ще мають велику кодову базу на Combine.
🇺🇦 iOSDevUA
SwiftLee
Combine and Swift Concurrency: A threading risk
Explore the challenges of migrating Combine to Swift Concurrency and understand the potential risks involved.
💡Жахи вайб-кодингу — коли AI не рятує, а ламає
Схоже, що вайб-кодинг (коли код пишеться «на натхненні» разом з AI) дуже швидко пережив пік свого гіпу — і дедалі більше розробників починає усвідомлювати: одних промптів замало.
Ось декілька яскравих прикладів, чому сліпа довіра до AI може мати критичні наслідки:
👉 Replit випадково видалив усю продову базу знань без можливості відновлення
👉 Увесь список очікування був збережений… на фронтенді
👉 Класичний кейс: AI згенерував застосунок із десятками вразливостей
🤖 Moral of the story: AI — чудовий інструмент, але він не замінює розробника, який думає, аналізує й перевіряє.
🇺🇦 iOSDevUA
Схоже, що вайб-кодинг (коли код пишеться «на натхненні» разом з AI) дуже швидко пережив пік свого гіпу — і дедалі більше розробників починає усвідомлювати: одних промптів замало.
Ось декілька яскравих прикладів, чому сліпа довіра до AI може мати критичні наслідки:
👉 Replit випадково видалив усю продову базу знань без можливості відновлення
👉 Увесь список очікування був збережений… на фронтенді
👉 Класичний кейс: AI згенерував застосунок із десятками вразливостей
🤖 Moral of the story: AI — чудовий інструмент, але він не замінює розробника, який думає, аналізує й перевіряє.
🇺🇦 iOSDevUA
AICodingHorrors
Price of AI-assisted coding, literally!
AI Coding Horrors is a growing collection of real-world disasters caused by AI-assisted coding tools like sky-high bills, leaked secrets, broken apps, and every…
👍2
💡Як створювати зручні CLI-інтерфейси на Swift — практичні прийоми
Якщо ви працюєте зі Swift‑утилітами для терміналу, ця добірка порад допоможе зробити інтерфейс не лише функціональним, а й приємним у використанні.
У статті розглядаються такі техніки:
👉 Як визначити поточний розмір вікна терміналу й адаптувати інтерфейс під нього
👉 Як видаляти надруковані символи, щоб реалізовувати прості анімації в консолі
👉 Як сховати курсор, коли він заважає візуально
👉 Як слухати сигнали про зміну розміру вікна чи переривання виконання
🛠 Корисно для всіх, хто створює CLI‑інструменти або хоче додати трохи “живості” у свій термінальний досвід на Swift.
🇺🇦 iOSDevUA
Якщо ви працюєте зі Swift‑утилітами для терміналу, ця добірка порад допоможе зробити інтерфейс не лише функціональним, а й приємним у використанні.
У статті розглядаються такі техніки:
👉 Як визначити поточний розмір вікна терміналу й адаптувати інтерфейс під нього
👉 Як видаляти надруковані символи, щоб реалізовувати прості анімації в консолі
👉 Як сховати курсор, коли він заважає візуально
👉 Як слухати сигнали про зміну розміру вікна чи переривання виконання
🛠 Корисно для всіх, хто створює CLI‑інструменти або хоче додати трохи “живості” у свій термінальний досвід на Swift.
🇺🇦 iOSDevUA
www.swifttoolkit.dev
Techniques for Engaging CLIs with the Terminal Utilities Package
A tiny Swift package can help you make more engaging CLIs