💡Проблеми продуктивності List у SwiftUI на macOS
Автор стверджує, що стандартний List у SwiftUI може мати проблеми з продуктивністю на macOS при роботі з великим обсягом даних (10 000+ елементів).
💡 Рішення – власна кастомна реалізація, яка позбавлена цих недоліків.
Сам не тестував, але матеріал виглядає цікавим.
📖 Ознайомитися можна тут: Custom Lazy List у SwiftUI.
🇺🇦 iOSDevUA
Автор стверджує, що стандартний List у SwiftUI може мати проблеми з продуктивністю на macOS при роботі з великим обсягом даних (10 000+ елементів).
💡 Рішення – власна кастомна реалізація, яка позбавлена цих недоліків.
Сам не тестував, але матеріал виглядає цікавим.
📖 Ознайомитися можна тут: Custom Lazy List у SwiftUI.
🇺🇦 iOSDevUA
Nil Coalescing
Designing a custom lazy list in SwiftUI with better performance
Implement a high-performance lazy scrolling list in SwiftUI by efficiently reusing views for smooth scrolling with large datasets.
💡Які версії iOS зараз використовуються?
Якщо ви обираєте мінімальну підтримувану версію iOS для свого застосунку, ось актуальна статистика використання різних версій iOS:
📊 Розподіл основних версій:
1️⃣ iOS 18 – 79,5%
2️⃣ iOS 17 – 13,7%
3️⃣ iOS 16 – 5%
📌 Детальне розбиття за мінорними версіями доступне тут.
🇺🇦 iOSDevUA
Якщо ви обираєте мінімальну підтримувану версію iOS для свого застосунку, ось актуальна статистика використання різних версій iOS:
📊 Розподіл основних версій:
1️⃣ iOS 18 – 79,5%
2️⃣ iOS 17 – 13,7%
3️⃣ iOS 16 – 5%
📌 Детальне розбиття за мінорними версіями доступне тут.
🇺🇦 iOSDevUA
👍1😁1
Picker у SwiftUI: приклади та пояснення 🎨
Корисний матеріал про Picker у SwiftUI – як його налаштовувати, стилізувати та використовувати у додатках.
📖 Розбір з прикладами коду та поясненнями, щоб краще зрозуміти його можливості.
🇺🇦 iOSDevUA
Корисний матеріал про Picker у SwiftUI – як його налаштовувати, стилізувати та використовувати у додатках.
📖 Розбір з прикладами коду та поясненнями, щоб краще зрозуміти його можливості.
🇺🇦 iOSDevUA
💡Lynx – новий кросплатформенний фреймворк від TikTok
TikTok презентували Lynx – новий UI-фреймворк для кросплатформеної розробки.
🔹 Чим він відрізняється?
Концептуально він нагадує React Native: використовує веб-технології, але рендерить інтерфейс у нативні компоненти кожної платформи.
⚡️ Головна фішка – продуктивність
Lynx працює на двох окремих рантаймах:
1️⃣ Один відповідає за високопріоритетні UI-операції
2️⃣ Другий – за основний користувацький код
🛠 Детальніше про проєкт – у блозі розробників.
🇺🇦 iOSDevUA
TikTok презентували Lynx – новий UI-фреймворк для кросплатформеної розробки.
🔹 Чим він відрізняється?
Концептуально він нагадує React Native: використовує веб-технології, але рендерить інтерфейс у нативні компоненти кожної платформи.
⚡️ Головна фішка – продуктивність
Lynx працює на двох окремих рантаймах:
1️⃣ Один відповідає за високопріоритетні UI-операції
2️⃣ Другий – за основний користувацький код
🛠 Детальніше про проєкт – у блозі розробників.
🇺🇦 iOSDevUA
💡Model Context Protocol (MCP) у Swift
У блозі NSHipster вийшла нова стаття, де детально розбирають MCP (Model Context Protocol) – протокол для взаємодії LLM із зовнішніми інструментами.
🔍 Що цікавого?
📖 У статті пояснюється, як працює протокол та для чого він може знадобитися.
🛠 Крім того, автори відкрили Swift SDK для MCP у відкритий доступ.
🇺🇦 iOSDevUA
У блозі NSHipster вийшла нова стаття, де детально розбирають MCP (Model Context Protocol) – протокол для взаємодії LLM із зовнішніми інструментами.
🔍 Що цікавого?
📖 У статті пояснюється, як працює протокол та для чого він може знадобитися.
🛠 Крім того, автори відкрили Swift SDK для MCP у відкритий доступ.
🇺🇦 iOSDevUA
NSHipster
Model Context Protocol (MCP)
Language Server Protocol (LSP) revolutionized how programming languages integrate with developer tools. Model Context Protocol (MCP) aims to do the same for a new generation of AI tools.
❤1
💡Оптимізація таблиць у SwiftUI через UIKit
Якщо продуктивність списків у SwiftUI в певних кейсах недостатня, є ефективний підхід:
🔹 Використовувати SwiftUI тільки для розмітки ячейок
🔹 А для управління таблицею переключитися на UICollectionView
Це стало можливим завдяки новому механізму конфігурації UIKit, який дозволяє інтегрувати SwiftUI в комірки.
📖 Детальніше про методику – в оригінальній статті.
🇺🇦 iOSDevUA
Якщо продуктивність списків у SwiftUI в певних кейсах недостатня, є ефективний підхід:
🔹 Використовувати SwiftUI тільки для розмітки ячейок
🔹 А для управління таблицею переключитися на UICollectionView
Це стало можливим завдяки новому механізму конфігурації UIKit, який дозволяє інтегрувати SwiftUI в комірки.
📖 Детальніше про методику – в оригінальній статті.
🇺🇦 iOSDevUA
Swift with Majid
SwiftUI Performance - How to use UIKit
Nowadays, Apple platform development has undergone significant changes. Previously, we believed that building the core of an app around UIKit and using SwiftUI for certain screens was a good idea. This week, we’ll delve into the foundation of app development…
💡Виявлення та усунення зависань в iOS-додатках
📖 У цій статті розглядається одна з найпоширеніших причин погіршення продуктивності iOS-додатків.
Спойлер: у всьому винні важкі обчислення в головному потоці.
Описано, як виявляти зависання за допомогою App Hangs Detection та Instruments, змодельовано сценарій зависання інтерфейсу у SwiftUI-проєкті, а також показано кроки для виправлення цієї проблеми.
🇺🇦 iOSDevUA
📖 У цій статті розглядається одна з найпоширеніших причин погіршення продуктивності iOS-додатків.
Спойлер: у всьому винні важкі обчислення в головному потоці.
Описано, як виявляти зависання за допомогою App Hangs Detection та Instruments, змодельовано сценарій зависання інтерфейсу у SwiftUI-проєкті, а також показано кроки для виправлення цієї проблеми.
🇺🇦 iOSDevUA
❤2
💡Новий реліз Copilot for Xcode
Вийшла оновлена версія плагіна Copilot, яка офіційно вийшла з бети та стала загальнодоступною. Головна новація – можливість вибору моделі LLM для чату: Claude Sonnet, o1 або o3-mini.
🇺🇦 iOSDevUA
Вийшла оновлена версія плагіна Copilot, яка офіційно вийшла з бети та стала загальнодоступною. Головна новація – можливість вибору моделі LLM для чату: Claude Sonnet, o1 або o3-mini.
🇺🇦 iOSDevUA
💡У Південній Кореї запровадили систему підтвердження для підписок
• Користувач оформлює триал
• Триал завершується
🆕 Apple надсилає запит на додаткове підтвердження (через email і push-сповіщення)
• Після цього відбувається списання або скасування підписки
Підтвердження потрібне лише при переході з триалу або промо-офера, коли змінюється ціна. Якщо користувач одразу оформлює підписку за стандартною вартістю — додаткових дій не потрібно.
Нововведення запроваджене через місцеве законодавство та поки що діє лише в Південній Кореї. В інших країнах усе залишається без змін.
👉 https://developer.apple.com/news/?id=bo1b122z
🇺🇦 iOSDevUA
• Користувач оформлює триал
• Триал завершується
🆕 Apple надсилає запит на додаткове підтвердження (через email і push-сповіщення)
• Після цього відбувається списання або скасування підписки
Підтвердження потрібне лише при переході з триалу або промо-офера, коли змінюється ціна. Якщо користувач одразу оформлює підписку за стандартною вартістю — додаткових дій не потрібно.
Нововведення запроваджене через місцеве законодавство та поки що діє лише в Південній Кореї. В інших країнах усе залишається без змін.
👉 https://developer.apple.com/news/?id=bo1b122z
🇺🇦 iOSDevUA
Apple
Upcoming changes to offers and trials for subscriptions in South Korea - Latest News - Apple Developer
Starting February 14, 2025, new regulatory requirements in South Korea will apply to all apps with offers and trials for auto-renewing subscriptions.To comply, if you offer trials or offers for auto-renewing subscriptions to your app or game, additional consent…
Дуже детальний та корисний матеріал про рендеринг у SwiftUI 🔥
👉 https://twocentstudios.com/2025/03/10/pixel-art-swift-ui/
🇺🇦 iOSDevUA
👉 https://twocentstudios.com/2025/03/10/pixel-art-swift-ui/
🇺🇦 iOSDevUA
This media is not supported in your browser
VIEW IN TELEGRAM
💡Динамічна адаптація до доступного простору за допомогою ViewThatFits
Його принцип роботи простий:
Зазвичай вибір йде від найбільшого до найменшого, проте, якщо вью може поміститися лише вздовж однієї осі, порядок може змінюватися.
За замовчуванням
📖 Гарний приклад використання ViewThatFits можна знайти тут та в офіційній документації.
🇺🇦 iOSDevUA
ViewThatFits — це компонент SwiftUI, доступний із iOS 16.Його принцип роботи простий:
ViewThatFits вибирає перший дочірній елемент, розмір якого найбільш підходить до запропонованого простору.Зазвичай вибір йде від найбільшого до найменшого, проте, якщо вью може поміститися лише вздовж однієї осі, порядок може змінюватися.
За замовчуванням
ViewThatFits працює з обмеженнями по горизонтальній та вертикальній осях.📖 Гарний приклад використання ViewThatFits можна знайти тут та в офіційній документації.
🇺🇦 iOSDevUA
👍3
💡Невеликий навчальний матеріал (для зовсім новачків) про одну з головних проблем верстки – роботу з Safe Area та Insets.
👉 https://www.createwithswift.com/placing-ui-components-within-the-safe-area-inset/
🇺🇦 iOSDevUA
👉 https://www.createwithswift.com/placing-ui-components-within-the-safe-area-inset/
🇺🇦 iOSDevUA
❤3
💡Що відбувається з Apple Intelligence
Минулого тижня Apple знову відклали реліз нових AI-фіч, які ще на WWDC обіцяли показати користувачам. Одночасно з цим відбувся витік інформації з внутрішнього обговорення команди Siri:
👉 AI стабільно працює лише у 66-80% випадків, що поки що надто мало для продакшну.
👉 Менеджер команди Siri звинувачує маркетинг у тому, що ті занадто рано показали ще недопрацьовані фічі, створивши завищені очікування.
👉 Звільняти топ-менеджерів через ці проблеми поки що не планують, але повністю таку можливість не виключають.
👉 Apple Intelligence випустять лише тоді, коли будуть впевнені у якості.
🇺🇦 iOSDevUA
Минулого тижня Apple знову відклали реліз нових AI-фіч, які ще на WWDC обіцяли показати користувачам. Одночасно з цим відбувся витік інформації з внутрішнього обговорення команди Siri:
👉 AI стабільно працює лише у 66-80% випадків, що поки що надто мало для продакшну.
👉 Менеджер команди Siri звинувачує маркетинг у тому, що ті занадто рано показали ще недопрацьовані фічі, створивши завищені очікування.
👉 Звільняти топ-менеджерів через ці проблеми поки що не планують, але повністю таку можливість не виключають.
👉 Apple Intelligence випустять лише тоді, коли будуть впевнені у якості.
🇺🇦 iOSDevUA
Daring Fireball
Something Is Rotten in the State of Cupertino
Who decided these personalized Siri features should go in the WWDC keynote, with a promise they’d arrive in the coming year, when, at the time, they were in such an unfinished state they could not be demoed to the media even in a controlled environment? Three…
❤1
💡Коректний пошук входження рядка
❌ name.lowercased().contains(searchText.lowercased())
✅ name.localizedStandardContains(searchText)
Чому другий варіант кращий:
👉 Автоматично враховує регістр (case insensitive).
👉 Ігнорує діакритичні знаки (наприклад, cafe vs café).
👉 Коректно працює з локально-специфічними символами (наприклад, ẞ → ss).
👉 Підтримується в SwiftData.
🇺🇦 iOSDevUA
❌ name.lowercased().contains(searchText.lowercased())
✅ name.localizedStandardContains(searchText)
Чому другий варіант кращий:
👉 Автоматично враховує регістр (case insensitive).
👉 Ігнорує діакритичні знаки (наприклад, cafe vs café).
👉 Коректно працює з локально-специфічними символами (наприклад, ẞ → ss).
👉 Підтримується в SwiftData.
🇺🇦 iOSDevUA
❤3
🎬iOS Conf SG 2025: добірка виступів
У січні відбулася одна з найбільших конференцій з iOS-розробки, і найцікавіші презентації вже доступні онлайн.
Рекомендую звернути увагу на ці виступи:
📺 Ізоляція, актори, sendable… Глибоке занурення в паралелізм
Donny Wals розбирає концепції ізоляції, акторів та багатопотоковості, пояснюючи, що насправді означають помилки компілятора, які часто викликають плутанину.
📺 Міфи про тестування та як зробити його прискорювачем розробки
Krzysztof Zablocki ділиться підходами до тестування, які він використовував у роботі над Sourcery, The New York Times та Arc Browser.
📺 Як створювати додатки, що виділяються
Klemens Strasser, лауреат Apple Design Award, розповідає, як створювати додатки, які запам’ятовуються та отримують визнання.
📺 10 років Swift: що змінилося за цей час
Swift, який ми використовуємо сьогодні, суттєво відрізняється від того, з чого все починалося 10 років тому. Пол Хадсон розглядає еволюцію мови та майбутні зміни.
📺 За межами програмування: важливі софт-скіли для кар’єрного зростання в iOS
Як будувати професійні відносини, долати труднощі в роботі та чому софт-скіли важливі для успішної кар’єри – про це розповідає спікер.
🔗 Усі виступи доступні за посиланням
🇺🇦 iOSDevUA
У січні відбулася одна з найбільших конференцій з iOS-розробки, і найцікавіші презентації вже доступні онлайн.
Рекомендую звернути увагу на ці виступи:
📺 Ізоляція, актори, sendable… Глибоке занурення в паралелізм
Donny Wals розбирає концепції ізоляції, акторів та багатопотоковості, пояснюючи, що насправді означають помилки компілятора, які часто викликають плутанину.
📺 Міфи про тестування та як зробити його прискорювачем розробки
Krzysztof Zablocki ділиться підходами до тестування, які він використовував у роботі над Sourcery, The New York Times та Arc Browser.
📺 Як створювати додатки, що виділяються
Klemens Strasser, лауреат Apple Design Award, розповідає, як створювати додатки, які запам’ятовуються та отримують визнання.
📺 10 років Swift: що змінилося за цей час
Swift, який ми використовуємо сьогодні, суттєво відрізняється від того, з чого все починалося 10 років тому. Пол Хадсон розглядає еволюцію мови та майбутні зміни.
📺 За межами програмування: важливі софт-скіли для кар’єрного зростання в iOS
Як будувати професійні відносини, долати труднощі в роботі та чому софт-скіли важливі для успішної кар’єри – про це розповідає спікер.
🔗 Усі виступи доступні за посиланням
🇺🇦 iOSDevUA
💡Стратегії уникнення merge-конфліктів у проєктах Xcode
Кожен, хто працював хоча б у невеликій команді розробників (а іноді й удвох), точно стикався з конфліктами при об’єднанні змін.
📖 Команда Tuist підготувала корисний матеріал, у якому пояснюється, чому виникають такі проблеми, зокрема через файл
Також вони поділилися кількома підходами до вирішення: використання
🇺🇦 iOSDevUA
Кожен, хто працював хоча б у невеликій команді розробників (а іноді й удвох), точно стикався з конфліктами при об’єднанні змін.
📖 Команда Tuist підготувала корисний матеріал, у якому пояснюється, чому виникають такі проблеми, зокрема через файл
project.pbxproj, який генерується Xcode.Також вони поділилися кількома підходами до вирішення: використання
workspace, перехід на SwiftPM або ж застосування buildable folders — нової можливості в Xcode 16.🇺🇦 iOSDevUA
❤2
💡Чудовий пост про вбудовані проблеми дизайну
Особисто я не фанат макросів, але саме в цьому випадку вони справді можуть бути доречними. Дуже рекомендую ознайомитися з матеріалом.
👉 https://forums.swift.org/t/the-future-of-serialization-deserialization-apis/78585
🇺🇦 iOSDevUA
Codable, які обмежують його продуктивність. Наприклад, ми навіть розглядали заміну JSONDecoder на швидшу опенсорсну альтернативу, яка не створює проміжного словника при розборі даних.Codable також часто змушує розробників стикатися з різкими складнощами при реалізації кастомного декодування: або все працює «з коробки», або доводиться витрачати купу зусиль — і майже немає проміжних варіантів.Особисто я не фанат макросів, але саме в цьому випадку вони справді можуть бути доречними. Дуже рекомендую ознайомитися з матеріалом.
👉 https://forums.swift.org/t/the-future-of-serialization-deserialization-apis/78585
🇺🇦 iOSDevUA
Swift Forums
The future of serialization & deserialization APIs
Hello Swift Community, I’m happy to announce that I've been hard at work planning a potential future for serialization & deserialization APIs in Swift. It's clear from community adoption and feedback that Codable has had a lot of success in the years since…
💡Нова робоча група Swift, яка відповідатиме за тестування
Як ви, мабуть, знаєте, розвиток Swift наразі є доволі децентралізованим: за різні його напрямки відповідають окремі робочі групи, що складаються як із працівників Apple, так і з представників спільноти. І от сформували нову групу, яка зосередиться на всьому, що пов’язано з тестуванням — від тулінгу до бібліотек.
Основний фокус — реалізація бачення Swift Testing Vision
🔗 Детальніше про склад групи та їхні цілі — на офіційному сайті:
https://www.swift.org/testing-workgroup/
🇺🇦 iOSDevUA
Як ви, мабуть, знаєте, розвиток Swift наразі є доволі децентралізованим: за різні його напрямки відповідають окремі робочі групи, що складаються як із працівників Apple, так і з представників спільноти. І от сформували нову групу, яка зосередиться на всьому, що пов’язано з тестуванням — від тулінгу до бібліотек.
Основний фокус — реалізація бачення Swift Testing Vision
🔗 Детальніше про склад групи та їхні цілі — на офіційному сайті:
https://www.swift.org/testing-workgroup/
🇺🇦 iOSDevUA
Swift Forums
Announcing the Testing Workgroup
I'm excited to announce the formation of a new Testing Workgroup for Swift! This team will help guide the experience, libraries, and tools for testing Swift code. The idea of creating a testing workgroup first came up during the Language Steering Group's…
💡Цієї ночі вийшов Xcode 16.3 та Swift 6.1, а разом із ними – новий режим програмування з нативною інтеграцією вайб-кодингу!
На цьому тижні Європа офіційно дала “зелене світло” Apple Intelligence, і Тім Кук шокував спільноту, написавши в X:
Ще місяць тому Сергій Брін закликав колег працювати по 60 годин на тиждень в офісі, але Apple, як завжди, випередили всіх. У Купертіно розробники сиділи по 120 годин із понеділка по суботу, приходячи о 4 ранку.
Ця “інновація” вже викликала хвилю скорочень у Кремнієвій долині та навіть зачепила великі технологічні компанії в РФ.
Спільноти з десятками тисяч підписників уже запустили курси, як обійти нові процеси співбесід. Тепер вони радять не накопичувати досвід, а “скручувати” його, адже для роботи з новим AI потрібно якнайменше навичок. Чистий, не замутнений алгоритмами розум тепер має перевагу перед розробниками з 10+ роками досвіду.
🇺🇦 iOSDevUA
На цьому тижні Європа офіційно дала “зелене світло” Apple Intelligence, і Тім Кук шокував спільноту, написавши в X:
«Нам довелося ухвалити складне рішення. Все більше розробників довіряють AI, усе більше процесів інтегрується, і ми змушені не тільки тримати темп із Google та OpenAI, але й змагатися із самим часом. Тому ми вирішили вивести режим вайб-кодингу в Xcode із бети. Ніякого Leetcode, ніяких роздумів – тільки х-к, х-к і в продакшн (деякі літери, на жаль, загубилися)».
Ще місяць тому Сергій Брін закликав колег працювати по 60 годин на тиждень в офісі, але Apple, як завжди, випередили всіх. У Купертіно розробники сиділи по 120 годин із понеділка по суботу, приходячи о 4 ранку.
Ця “інновація” вже викликала хвилю скорочень у Кремнієвій долині та навіть зачепила великі технологічні компанії в РФ.
Спільноти з десятками тисяч підписників уже запустили курси, як обійти нові процеси співбесід. Тепер вони радять не накопичувати досвід, а “скручувати” його, адже для роботи з новим AI потрібно якнайменше навичок. Чистий, не замутнений алгоритмами розум тепер має перевагу перед розробниками з 10+ роками досвіду.
🇺🇦 iOSDevUA
Apple Developer Documentation
Xcode 16.3 Release Notes | Apple Developer Documentation
Update your apps to use new features, and test your apps against API changes.
😁5
💡Використовуємо Swift у Zed
Zed — відносно новий редактор коду, головною перевагою якого є надзвичайна швидкість роботи. Якщо ви шукаєте альтернативу Xcode, варто звернути увагу саме на нього. У статті показано, як легко налаштувати Zed для розробки на Swift за кілька простих кроків.
🇺🇦 iOSDevUA
Zed — відносно новий редактор коду, головною перевагою якого є надзвичайна швидкість роботи. Якщо ви шукаєте альтернативу Xcode, варто звернути увагу саме на нього. У статті показано, як легко налаштувати Zed для розробки на Swift за кілька простих кроків.
🇺🇦 iOSDevUA
❤1