💡Робоча група Swift для Android
🚀 Використання Swift для розробки під Android набирає оберти! Спільнота сформувала робочу групу, до якої увійшли розробники Skip та інші ентузіасти.
📌 Поки що їхній план – регулярні зустрічі та обговорення викликів, але в майбутньому вони сподіваються стати офіційною частиною проєкту Swift.
🔗 Обговорення ведеться тут 👉 https://forums.swift.org/t/swift-on-android-working-group/77780.
🇺🇦 iOSDevUA
🚀 Використання Swift для розробки під Android набирає оберти! Спільнота сформувала робочу групу, до якої увійшли розробники Skip та інші ентузіасти.
📌 Поки що їхній план – регулярні зустрічі та обговорення викликів, але в майбутньому вони сподіваються стати офіційною частиною проєкту Swift.
🔗 Обговорення ведеться тут 👉 https://forums.swift.org/t/swift-on-android-working-group/77780.
🇺🇦 iOSDevUA
👍1
💡Як перевірити state restoration у SwiftUI
У SwiftUI відновлення стану реалізується через SceneStorage. Однак протестувати його вручну складно, адже при закритті через app switcher стейт скидається.
✅ Щоб перевірити збереження стану, виконайте такі кроки:
1️⃣ Запустіть додаток у симуляторі
2️⃣ Змініть стейт (наприклад, перемістіться по навігації)
3️⃣ Натисніть Home, щоб відправити додаток у бекграунд
4️⃣ Натисніть Stop у Xcode
5️⃣ Запустіть додаток знову та перевірте, чи збережений стан відновився
📖 Детальніше про це в матеріалі 👉 https://nilcoalescing.com/blog/TestingSceneStorageStatePersistenceInXcode/
🇺🇦 iOSDevUA
У SwiftUI відновлення стану реалізується через SceneStorage. Однак протестувати його вручну складно, адже при закритті через app switcher стейт скидається.
✅ Щоб перевірити збереження стану, виконайте такі кроки:
1️⃣ Запустіть додаток у симуляторі
2️⃣ Змініть стейт (наприклад, перемістіться по навігації)
3️⃣ Натисніть Home, щоб відправити додаток у бекграунд
4️⃣ Натисніть Stop у Xcode
5️⃣ Запустіть додаток знову та перевірте, чи збережений стан відновився
📖 Детальніше про це в матеріалі 👉 https://nilcoalescing.com/blog/TestingSceneStorageStatePersistenceInXcode/
🇺🇦 iOSDevUA
👍2❤1
💡Що відкритий Swift Build означає для екосистеми
📖 Команда Tuist підготувала детальний аналіз одного з головних анонсів останнього місяця.
Їхній проєкт спрощував роботу з xcodebuild, приховуючи складність процесів, а тепер відкриття Swift Build може відкрити ще більше можливостей для розробників.
💡 Один із потенційних наступних кроків — створення універсального DSL для опису проєктів, який зможе замінити Package.swift і xcodeproj.
🇺🇦 iOSDevUA
📖 Команда Tuist підготувала детальний аналіз одного з головних анонсів останнього місяця.
Їхній проєкт спрощував роботу з xcodebuild, приховуючи складність процесів, а тепер відкриття Swift Build може відкрити ще більше можливостей для розробників.
💡 Один із потенційних наступних кроків — створення універсального DSL для опису проєктів, який зможе замінити Package.swift і xcodeproj.
🇺🇦 iOSDevUA
tuist.dev
What Swift Build means for the Swift ecosystem
In blog post we share our perspective on what Swift Build might mean for the Swift ecosystem, drawing from our extensive experience working with Xcode projects, and how it aligns with the plans we have for Tuist.
🔥1
🎬Детальний гайд по Apple Search Ads: налаштування та оптимізація
📖 Вийшов корисний матеріал про Apple Search Ads, у якому пояснюється, як правильно налаштувати рекламу, оптимізувати кампанії та підвищити ефективність просування додатків.
Якщо ви плануєте використовувати ASA для залучення користувачів, цей гайд допоможе розібратися у всіх нюансах. 🚀
https://www.youtube.com/watch?v=W6_bN3AZo_s
🇺🇦 iOSDevUA
📖 Вийшов корисний матеріал про Apple Search Ads, у якому пояснюється, як правильно налаштувати рекламу, оптимізувати кампанії та підвищити ефективність просування додатків.
Якщо ви плануєте використовувати ASA для залучення користувачів, цей гайд допоможе розібратися у всіх нюансах. 🚀
https://www.youtube.com/watch?v=W6_bN3AZo_s
🇺🇦 iOSDevUA
YouTube
How to Set Up an Apple Search Ads Campaign the Right Way #ASA
► Search Ads Insights: https://appfigures.com/reports/competitor-search-ads
► Keyword Inspector: https://appfigures.com/reports/keyword-inspector
► Start a FREE trial of Appfigures: https://appfigures.com/signup
► Get a demo of the platform: https:/…
► Keyword Inspector: https://appfigures.com/reports/keyword-inspector
► Start a FREE trial of Appfigures: https://appfigures.com/signup
► Get a demo of the platform: https:/…
💡Що відбувається, коли ви переміщаєте файл у Git?
Це цікаве питання, адже Git є невід’ємною частиною роботи кожного розробника. Хтось використовує Xcode, Tower, інші надають перевагу консолі, але розуміння принципів роботи важливе для всіх.
❗️ Часто вважають, що коміти в Git — це диференційні diffs, але це не зовсім так.
📌 У своїй статті Бруно Роша пояснює, що коміти — це snapshots. Тобто при будь-якій зміні файлу Git зберігає його повну копію в репозиторії.
📂 Окремо цікаво, як Git визначає, що два файли однакові, навіть якщо вони мають різні імена.
📖 Детальний розбір і пояснення інших цікавих моментів у статті: https://swiftrocks.com/what-happens-when-you-move-a-file-in-git
🇺🇦 iOSDevUA
Це цікаве питання, адже Git є невід’ємною частиною роботи кожного розробника. Хтось використовує Xcode, Tower, інші надають перевагу консолі, але розуміння принципів роботи важливе для всіх.
❗️ Часто вважають, що коміти в Git — це диференційні diffs, але це не зовсім так.
📌 У своїй статті Бруно Роша пояснює, що коміти — це snapshots. Тобто при будь-якій зміні файлу Git зберігає його повну копію в репозиторії.
📂 Окремо цікаво, як Git визначає, що два файли однакові, навіть якщо вони мають різні імена.
📖 Детальний розбір і пояснення інших цікавих моментів у статті: https://swiftrocks.com/what-happens-when-you-move-a-file-in-git
🇺🇦 iOSDevUA
Swiftrocks
What happens when you move a file in git?
Is renaming large folders in git repos an issue? Let's find out.
💡Стаття про те, як створити подібне menu bar в macOS за допомогою SwiftUI.
👉 https://troz.net/post/2025/mac_menu_data/
🇺🇦 iOSDevUA
👉 https://troz.net/post/2025/mac_menu_data/
🇺🇦 iOSDevUA
💡Task.sleep() vs Task.yield(): В чому різниця?
У Swift Concurrency існують два способи призупинити виконання асинхронного коду:
🛑
🔄
Попри схожу поведінку, вони мають суттєві відмінності, які важливо розуміти.
📖 В цій статті Антуан пояснює, як правильно використовувати обидва методи і в яких випадках вони будуть корисними.
🇺🇦 iOSDevUA
У Swift Concurrency існують два способи призупинити виконання асинхронного коду:
🛑
Task.sleep() — дозволяє поставити задачу «спати» на вказаний проміжок часу.🔄
Task.yield() — звільняє потік і дозволяє іншим завданням виконатися перед тим, як продовжити.Попри схожу поведінку, вони мають суттєві відмінності, які важливо розуміти.
📖 В цій статті Антуан пояснює, як правильно використовувати обидва методи і в яких випадках вони будуть корисними.
🇺🇦 iOSDevUA
💡Я не знаю, навіщо вам це потрібно, але не поділитися просто не можу.
Swift Package на Android? Будь ласка, тримайте! 🙃
Дуже детальний розбір 🔍
👉 https://skip.tools/blog/android-native-swift-packages/
🇺🇦 iOSDevUA
Swift Package на Android? Будь ласка, тримайте! 🙃
Дуже детальний розбір 🔍
👉 https://skip.tools/blog/android-native-swift-packages/
🇺🇦 iOSDevUA
Skip
Swift Everywhere: Bringing Swift Packages to Android
Skip brings SwiftUI app development to Android
This media is not supported in your browser
VIEW IN TELEGRAM
💡Noora – UI компоненти для CLI
Створювати консольні утиліти на Swift набагато приємніше, ніж використовувати Python чи Ruby. Noora — це Swift-пакет, що надає зручні графічні елементи для створення стильних консольних інтерфейсів. Серед доступних компонентів: алерти, запити “так/ні”, індикатор прогресу та багато іншого.
🔗 Детальніше можна переглянути тут: Noora Package.
🇺🇦 iOSDevUA
Створювати консольні утиліти на Swift набагато приємніше, ніж використовувати Python чи Ruby. Noora — це Swift-пакет, що надає зручні графічні елементи для створення стильних консольних інтерфейсів. Серед доступних компонентів: алерти, запити “так/ні”, індикатор прогресу та багато іншого.
🔗 Детальніше можна переглянути тут: Noora Package.
🇺🇦 iOSDevUA
❤2
💡NSHipster про Ollama
Mattt продовжує оновлювати свій, здавалося б, давно забутий блог. Тепер його статті більше присвячені різним інструментам, які можуть бути корисними не тільки iOS-розробникам, а й ширшому колу спеціалістів.
🔍 У новій публікації він розповідає про Ollama – CLI-інструмент для встановлення та керування локальними LLM-моделями.
📖 Деталі за посиланням: NSHipster про Ollama.
🇺🇦 iOSDevUA
Mattt продовжує оновлювати свій, здавалося б, давно забутий блог. Тепер його статті більше присвячені різним інструментам, які можуть бути корисними не тільки iOS-розробникам, а й ширшому колу спеціалістів.
🔍 У новій публікації він розповідає про Ollama – CLI-інструмент для встановлення та керування локальними LLM-моделями.
📖 Деталі за посиланням: NSHipster про Ollama.
🇺🇦 iOSDevUA
NSHipster
Ollama
While we wait for Apple Intelligence to arrive on our devices, something remarkable is already running on our Macs. Think of it as a locavore approach to artificial intelligence: homegrown, sustainable, and available year-round.
❤1
💡Cooperative Cancellation в Swift Concurrency
🔹 В Swift Concurrency механізм скасування та зупинки задач — це дві різні концепції.
Задача не припиняється автоматично, але рантайм повідомляє, що вона позначена як скасована. Далі рішення залишається за вами: наприклад, можна повернути пустий або частковий результат, залежно від логіки програми.
📖 Детальний розбір цієї теми доступний у статті: Cooperative Cancellation в Swift Concurrency.
🇺🇦 iOSDevUA
🔹 В Swift Concurrency механізм скасування та зупинки задач — це дві різні концепції.
Задача не припиняється автоматично, але рантайм повідомляє, що вона позначена як скасована. Далі рішення залишається за вами: наприклад, можна повернути пустий або частковий результат, залежно від логіки програми.
📖 Детальний розбір цієї теми доступний у статті: Cooperative Cancellation в Swift Concurrency.
🇺🇦 iOSDevUA
Swift with Majid
Task Cancellation in Swift Concurrency
Swift Concurrency provides a cooperative cancellation model to handle task cancellation. This week, we will learn what a cooperative cancellation model is, how to use it, and how to be a good citizen and handle it correctly.
💡Корисні інструменти для терміналу
Ось кілька цікавих утиліт, які можуть значно покращити роботу в терміналі:
🔹 Atuin – зберігає історію команд з підтримкою fuzzy-пошуку.
🔹 Starship – зручний спосіб налаштувати та кастомізувати вигляд терміналу.
🔹 fzf – інтуїтивний fuzzy-пошук по файлах.
🔹 Secure Shellfish – iOS-застосунок для SSH-підключень до вашої машини.
🇺🇦 iOSDevUA
Ось кілька цікавих утиліт, які можуть значно покращити роботу в терміналі:
🔹 Atuin – зберігає історію команд з підтримкою fuzzy-пошуку.
🔹 Starship – зручний спосіб налаштувати та кастомізувати вигляд терміналу.
🔹 fzf – інтуїтивний fuzzy-пошук по файлах.
🔹 Secure Shellfish – iOS-застосунок для SSH-підключень до вашої машини.
🇺🇦 iOSDevUA
💡Toolbar і NavigationView у SwiftUI
🔹 Використання
Якщо потрібно, щоб тулбар відображався завжди, автор статті випробував кілька підходів і знайшов робоче, хоча і трохи костильне рішення.
📖 Деталі та приклад реалізації доступні тут: https://www.joshholtz.com/blog/2025/02/08/swiftui-navigation-view-if-needed.html
🇺🇦 iOSDevUA
🔹 Використання
.toolbar у SwiftUI додає тулбар до вью, але працює це тільки в межах NavigationView.Якщо потрібно, щоб тулбар відображався завжди, автор статті випробував кілька підходів і знайшов робоче, хоча і трохи костильне рішення.
📖 Деталі та приклад реалізації доступні тут: https://www.joshholtz.com/blog/2025/02/08/swiftui-navigation-view-if-needed.html
🇺🇦 iOSDevUA
Josh Holtz
SwiftUI - Navigation View If Needed
I needed a way to add a toolbar in a view in SwiftUI without knowing if that view came from a navigation stack or not.
💡SharingGRDB – альтернатива SwiftData
Команда Pointfree представила SharingGRDB, яка може стати альтернативою SwiftData.
🔹 Схожий API, як у SwiftData, що спрощує міграцію.
🔹 Під капотом використовується SQLite, що дає більше контролю над базою даних.
🔹 Можливість прямого доступу до вмісту бази.
🛠 Приклади використання доступні у репозиторії: GitHub.
📖 Детальніше про бібліотеку можна прочитати у блозі Pointfree.
🇺🇦 iOSDevUA
Команда Pointfree представила SharingGRDB, яка може стати альтернативою SwiftData.
🔹 Схожий API, як у SwiftData, що спрощує міграцію.
🔹 Під капотом використовується SQLite, що дає більше контролю над базою даних.
🔹 Можливість прямого доступу до вмісту бази.
🛠 Приклади використання доступні у репозиторії: GitHub.
📖 Детальніше про бібліотеку можна прочитати у блозі Pointfree.
🇺🇦 iOSDevUA
www.pointfree.co
SQLiteData: A SwiftData Alternative
We are excited to announce a new open source library that can serve as a SwiftData alternative for many types of apps out there today. It provides tools that work in SwiftUI views, @Observable models, UIKit view controllers, and gives direct access to SQLite.
💡Просте налаштування модуляризації для iOS-додатків
Модульний підхід у розробці iOS-додатків має багато переваг:
🔹 Краща тестованість – кожен модуль можна перевіряти окремо.
🔹 Прискорення збірки – правильне розподілення покращує швидкість компіляції.
🔹 Легша командна робота – різні частини додатка можна розробляти незалежно.
📖 У статті детально розглянуто підхід до модульної архітектури через Core/Domain/Presentation шари. Також показано, як масштабувати цей метод для великих проектів.
🛠 Код доступний на GitHub: ModularTemplate.
🇺🇦 iOSDevUA
Модульний підхід у розробці iOS-додатків має багато переваг:
🔹 Краща тестованість – кожен модуль можна перевіряти окремо.
🔹 Прискорення збірки – правильне розподілення покращує швидкість компіляції.
🔹 Легша командна робота – різні частини додатка можна розробляти незалежно.
📖 У статті детально розглянуто підхід до модульної архітектури через Core/Domain/Presentation шари. Також показано, як масштабувати цей метод для великих проектів.
🛠 Код доступний на GitHub: ModularTemplate.
🇺🇦 iOSDevUA
💡Що нового у Swift Concurrency 6.1
Swift Concurrency поступово стає зручнішим для розробників, як і було обіцяно в пропозалі Approachable Concurrency.
Нещодавно вийшла бета Swift 6.1, яка додала нові функції, що спрощують роботу з асинхронними задачами.
📖 Детальний розбір оновлень – у цій статті.
🇺🇦 iOSDevUA
Swift Concurrency поступово стає зручнішим для розробників, як і було обіцяно в пропозалі Approachable Concurrency.
Нещодавно вийшла бета Swift 6.1, яка додала нові функції, що спрощують роботу з асинхронними задачами.
📖 Детальний розбір оновлень – у цій статті.
🇺🇦 iOSDevUA
💡Синхронне виконання задач в iOS-додатках
Більшість iOS-розробників уникають блокування основного потоку, переносячи тривалі завдання на фонові черги. Це допомагає зберегти плавність роботи інтерфейсу.
Однак, як зазначає Мэтт у своїй статті, короткотривалі процеси можуть працювати швидше саме на основному потоці. Причина в тому, що перемикання між потоками хоч і здається незначним, але все ж має певні витрати ресурсів.
Крім того, додавання паралелізму може значно ускладнити код і його підтримку.
📖 Більше деталей та практичних прикладів – у статті автора.
🇺🇦 iOSDevUA
Більшість iOS-розробників уникають блокування основного потоку, переносячи тривалі завдання на фонові черги. Це допомагає зберегти плавність роботи інтерфейсу.
Однак, як зазначає Мэтт у своїй статті, короткотривалі процеси можуть працювати швидше саме на основному потоці. Причина в тому, що перемикання між потоками хоч і здається незначним, але все ж має певні витрати ресурсів.
Крім того, додавання паралелізму може значно ускладнити код і його підтримку.
📖 Більше деталей та практичних прикладів – у статті автора.
🇺🇦 iOSDevUA
👍2❤1
💡Обхід захисту від дебагу та джейлбрейка
Деякі додатки, особливо банківські, мають вбудовані механізми безпеки, що блокують підключення дебагера або повністю відключають роботу на джейлбрейкнутому пристрої.
📖 У цій статті розглядається, як обійти такі обмеження, підключити дебагер і виконати довільний код у рантаймі.
Матеріал буде корисним для розробників, які хочуть перевірити стійкість своїх додатків до таких атак.
🇺🇦 iOSDevUA
Деякі додатки, особливо банківські, мають вбудовані механізми безпеки, що блокують підключення дебагера або повністю відключають роботу на джейлбрейкнутому пристрої.
📖 У цій статті розглядається, як обійти такі обмеження, підключити дебагер і виконати довільний код у рантаймі.
Матеріал буде корисним для розробників, які хочуть перевірити стійкість своїх додатків до таких атак.
🇺🇦 iOSDevUA
bryce.co
Debugging An Undebuggable App
This app has a surprising number of anti-debugging protections. Let's figure out how to bypass them.
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
💡Симетричні та асиметричні ефекти в SwiftUI з використанням Scroll Transition
📖 Корисний гайд про створення ефектів анімації під час скролу з Scroll Transition Modifier.
У матеріалі наведені приклади коду, що допоможуть легко впровадити такі переходи у ваш додаток.
Важливо: цей модифікатор працює лише на iOS 17 і новіших версіях.
🇺🇦 iOSDevUA
📖 Корисний гайд про створення ефектів анімації під час скролу з Scroll Transition Modifier.
У матеріалі наведені приклади коду, що допоможуть легко впровадити такі переходи у ваш додаток.
Важливо: цей модифікатор працює лише на iOS 17 і новіших версіях.
🇺🇦 iOSDevUA
👍1
💡Воркфлоу роботи з LLM у розробці
AI поступово змінює підхід до розробки, як для нових проектів, так і при роботі з існуючим кодом. У статті описано структурований підхід, який допомагає ефективно використовувати LLM у робочому процесі.
Основні етапи:
👉 Спільний брейншторм із AI у чаті – на виході отримуємо чітку специфікацію задачі.
👉 На основі спеки AI формує план атомарних завдань.
👉 Завдання передаються LLM або агенту для поетапної реалізації.
📖 Детальний опис процесу – за посиланням.
🇺🇦 iOSDevUA
AI поступово змінює підхід до розробки, як для нових проектів, так і при роботі з існуючим кодом. У статті описано структурований підхід, який допомагає ефективно використовувати LLM у робочому процесі.
Основні етапи:
👉 Спільний брейншторм із AI у чаті – на виході отримуємо чітку специфікацію задачі.
👉 На основі спеки AI формує план атомарних завдань.
👉 Завдання передаються LLM або агенту для поетапної реалізації.
📖 Детальний опис процесу – за посиланням.
🇺🇦 iOSDevUA
harper.blog
My LLM codegen workflow atm
A detailed walkthrough of my current workflow for using LLms to build software, from brainstorming through planning and execution.
💡Новий інструмент аналізу продуктивності: Processor Trace
Тривале виконання операцій у головному потоці може викликати фризи, проблеми з відображенням або навіть повну некерованість додатка.
🛠 У Xcode 16.3 Beta 2 з’явився новий інструмент Processor Trace, який дозволяє аналізувати навантаження на процесор.
З його допомогою можна отримати детальну інформацію про виконуваний код, включно з гілками виконання та інструкціями.
❗️ Обмеження:
🔹 Працює тільки на M4 та iPhone 16 і вище.
🔹 Використання трасування сповільнює пристрій приблизно на 1 %.
Цей інструмент допомагає перевірити активність CPU і вирішити, які завдання перенести у фоновий режим за допомогою Swift Concurrency або dispatch queue.
🇺🇦 iOSDevUA
Тривале виконання операцій у головному потоці може викликати фризи, проблеми з відображенням або навіть повну некерованість додатка.
🛠 У Xcode 16.3 Beta 2 з’явився новий інструмент Processor Trace, який дозволяє аналізувати навантаження на процесор.
З його допомогою можна отримати детальну інформацію про виконуваний код, включно з гілками виконання та інструкціями.
❗️ Обмеження:
🔹 Працює тільки на M4 та iPhone 16 і вище.
🔹 Використання трасування сповільнює пристрій приблизно на 1 %.
Цей інструмент допомагає перевірити активність CPU і вирішити, які завдання перенести у фоновий режим за допомогою Swift Concurrency або dispatch queue.
🇺🇦 iOSDevUA
❤1