💡Як OpenAI тестує свої додатки
Загалом, використовується стандартний набір тестів – юніт, інтеграційні та ручні тести. Однак цікавою особливістю є використання снепшот-тестів, які автоматично генеруються з попередніх переглядів Xcode. Саме ці тести розглядаються в основному в статті.
🇺🇦 iOSDevUA
Загалом, використовується стандартний набір тестів – юніт, інтеграційні та ручні тести. Однак цікавою особливістю є використання снепшот-тестів, які автоматично генеруються з попередніх переглядів Xcode. Саме ці тести розглядаються в основному в статті.
🇺🇦 iOSDevUA
Emergetools
Emerge Tools Blog | OpenAI on Mobile Development, Previews, & Snapshot Testing
A deep dive into how OpenAI approaches snapshot testing in their ChatGPT mobile apps
💡Продуктивність в додатку Threads
Цікава стаття, яка детально описує, як Meta працює над продуктивністю додатку Threads – від використаних метрик до конкретних практик оптимізації.
🇺🇦 iOSDevUA
Цікава стаття, яка детально описує, як Meta працює над продуктивністю додатку Threads – від використаних метрик до конкретних практик оптимізації.
🇺🇦 iOSDevUA
💡Збірник статей для вивчення Swift!
Це збірка корисних статей, розподілених за розділами, з іншими матеріалами на тому ж ресурсі. Хоча автор стверджує, що після вивчення цих статей ви зможете створити власний додаток, я вважаю, що для цього потрібно більше практики. Проте тут є багато корисних посилань, і для новачків це точно буде корисно! 👍
👉 https://www.avanderlee.com/swift/swift-tutorials-learn-swift-code-examples/
🇺🇦 iOSDevUA
Це збірка корисних статей, розподілених за розділами, з іншими матеріалами на тому ж ресурсі. Хоча автор стверджує, що після вивчення цих статей ви зможете створити власний додаток, я вважаю, що для цього потрібно більше практики. Проте тут є багато корисних посилань, і для новачків це точно буде корисно! 👍
👉 https://www.avanderlee.com/swift/swift-tutorials-learn-swift-code-examples/
🇺🇦 iOSDevUA
SwiftLee
Swift Tutorials: Learn Swift with Easy-to-Follow Code Examples
Discover Swift tutorials to learn Swift with code examples and in-depth articles. Go from writing, to testing, to building a User Interface.
💡Typed Throws у Swift 6
У Swift 6 ви тепер можете не тільки позначити за допомогою
🇺🇦 iOSDevUA
У Swift 6 ви тепер можете не тільки позначити за допомогою
throws, що функція може повернути помилку, але й вказати конкретний тип цієї помилки:func readFileContent(at path: String) throws(FileNotFoundError) -> String {
...
}
🇺🇦 iOSDevUA
🔥2
💡YUI — галерея плавних інтерактивних переходів на UIKit
Хоча SwiftUI чудово підходить для швидкого створення інтерфейсів і додатків, однакові контролери часто повторюються, що може погіршити враження від використання (особливо коли враховувати чутливість інтерфейсу).
Розробник поділився репозиторієм, де він спробував відтворити кілька класичних ефектів, які ми часто бачимо в популярних додатках.
Це буде корисно для вивчення використання
🛠 Посилання на репозиторій з ефектами і описом підходу доступне ось тут.
🇺🇦 iOSDevUA
Хоча SwiftUI чудово підходить для швидкого створення інтерфейсів і додатків, однакові контролери часто повторюються, що може погіршити враження від використання (особливо коли враховувати чутливість інтерфейсу).
Розробник поділився репозиторієм, де він спробував відтворити кілька класичних ефектів, які ми часто бачимо в популярних додатках.
Це буде корисно для вивчення використання
UIViewControllerTransitioningDelegate/UIViewControllerInteractiveTransitioning та UIPercentDrivenInteractiveTransition.🛠 Посилання на репозиторій з ефектами і описом підходу доступне ось тут.
🇺🇦 iOSDevUA
👍1
💡Forked – бібліотека для роботи з даними в колаборативних застосунках
Forked – нова бібліотека, орієнтована на читання та модифікацію даних одночасно в кількох потоках. Що цікаво, вона значною мірою натхнена принципами роботи з Git-ветками та їх злиттям, і була розроблена спеціально для випадків з локально першими застосунками.
🇺🇦 iOSDevUA
Forked – нова бібліотека, орієнтована на читання та модифікацію даних одночасно в кількох потоках. Що цікаво, вона значною мірою натхнена принципами роботи з Git-ветками та їх злиттям, і була розроблена спеціально для випадків з локально першими застосунками.
🇺🇦 iOSDevUA
The Mental Faculty
Blog — The Mental Faculty
Notes on software, sync, and shipping by Drew McCormack.
💡Чи варто переходити на Swift 6 у 2025 році?
Донні Уолс ставить це питання і наводить кілька важливих моментів, на які слід звернути увагу.
Хоча відповідь залежить від багатьох факторів: проєкт, над яким ви працюєте, команда, з якою співпрацюєте, і рівень знань Swift Concurrency, Донні зосередився на розборі існуючих проблем і викликів.
📖 Повний текст статті можна прочитати тут.
🇺🇦 iOSDevUA
Донні Уолс ставить це питання і наводить кілька важливих моментів, на які слід звернути увагу.
Хоча відповідь залежить від багатьох факторів: проєкт, над яким ви працюєте, команда, з якою співпрацюєте, і рівень знань Swift Concurrency, Донні зосередився на розборі існуючих проблем і викликів.
📖 Повний текст статті можна прочитати тут.
🇺🇦 iOSDevUA
Donny Wals
Is 2025 the year to fully adopt Swift 6? – Donny Wals
When Apple released Xcode 16 last year, they made the Swift 6 compiler available along with it. This means that we can create new projects using Swift 6 and its compile-time data race protections.
💡Реалізація підтримки JWT на Swift сервері
Мені дуже подобається блог SwiftOnServer. Хлопці публікують корисні туторіали, що показують, як вирішувати найпоширеніші задачі серверної розробки за допомогою актуальної екосистеми Swift. Цього разу вони розглядають, як за допомогою JWTKit реалізувати авторизацію на основі JWT.
🇺🇦 iOSDevUA
Мені дуже подобається блог SwiftOnServer. Хлопці публікують корисні туторіали, що показують, як вирішувати найпоширеніші задачі серверної розробки за допомогою актуальної екосистеми Swift. Цього разу вони розглядають, як за допомогою JWTKit реалізувати авторизацію на основі JWT.
🇺🇦 iOSDevUA
Swiftonserver
Introduction to JWTs in Swift - Swift on server
Learn how to use JWTs in Swift to secure your API
💡1Password CLI для роботи з секретами
У цій статті розглядається чудовий підхід до роботи з секретами, який є надійнішим і зручнішим, ніж зберігання їх у .env файлах. Крім того, це перша стаття за довгий час на легендарному блозі NSHipster!
🇺🇦 iOSDevUA
У цій статті розглядається чудовий підхід до роботи з секретами, який є надійнішим і зручнішим, ніж зберігання їх у .env файлах. Крім того, це перша стаття за довгий час на легендарному блозі NSHipster!
🇺🇦 iOSDevUA
NSHipster
op run
.env files can create friction in development workflows — especially as teams and projects grow over time. If you’re feeling this pain, the 1Password CLI (op) might be just what you need.
❤1
💡Відстежуємо стабільність API бібліотек
Одна з найскладніших задач у розвитку бібліотеки — це підтримка зворотної сумісності.
Як Swift-розробник, у вас є кілька інструментів для відстеження змін, що ламають сумісність. У статті детально порівнюються всі ці інструменти:
👉Інструменти, доступні в SPM з коробки
👉xcodebuild та swift-api-digester
👉Swift Public API diff
🇺🇦 iOSDevUA
Одна з найскладніших задач у розвитку бібліотеки — це підтримка зворотної сумісності.
Як Swift-розробник, у вас є кілька інструментів для відстеження змін, що ламають сумісність. У статті детально порівнюються всі ці інструменти:
👉Інструменти, доступні в SPM з коробки
👉xcodebuild та swift-api-digester
👉Swift Public API diff
🇺🇦 iOSDevUA
💡Як швидко локалізувати додаток за допомогою AI
Локалізація додатку на потрібні мови тепер стала значно простішою. У статті розглядається один з варіантів робочого процесу, де для отримання початкового перекладу використовується AI, а для перевірки — сервіс POEditor, з залученням волонтерів.
🇺🇦 iOSDevUA
Локалізація додатку на потрібні мови тепер стала значно простішою. У статті розглядається один з варіантів робочого процесу, де для отримання початкового перекладу використовується AI, а для перевірки — сервіс POEditor, з залученням волонтерів.
🇺🇦 iOSDevUA
POEditor
Software Translation Management System
POEditor is a translation management system where human expertise meets AI localization. Simple to start, scalable as you grow. Trusted by teams worldwide.
Apple нагадали, що з 17 лютого 2025 року додатки без статусу трейдера будуть видалятися з App Store в країнах Європейського Союзу, поки цей статус не буде наданий та, за потреби, підтверджений.
🔗 Детальніше про новину можна дізнатися тут.
🇺🇦 iOSDevUA
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 У Xcode 16 можна створити новий файл, просто скопіювавши код у буфер обміну, вибравши потрібну директорію в навігаторі та натиснувши “вставити”.
🇺🇦 iOSDevUA
🇺🇦 iOSDevUA
👍1
💡Для чого потрібен
Багато функцій повертають значення, але іноді нам не важливо, яке саме значення вони повертають. У таких випадках корисно ігнорувати попередження, наприклад, при логуванні.
Тут стане в нагоді
📖 Дивіться приклади використання: тут і в цій статті.
🇺🇦 iOSDevUA
@discardableResult в Swift?Багато функцій повертають значення, але іноді нам не важливо, яке саме значення вони повертають. У таких випадках корисно ігнорувати попередження, наприклад, при логуванні.
Тут стане в нагоді
@discardableResult. Проте, якщо значення часто використовуються, така практика може бути не найкращою. В такому разі краще використовувати нижнє підкреслення _ для вимкнення набридливого попередження.📖 Дивіться приклади використання: тут і в цій статті.
🇺🇦 iOSDevUA
👍3
💡Навчальний матеріал про використання шаблонів із Mustache.
Це може бути корисно, наприклад, якщо потрібно обробити дані та динамічно підставити їх у потрібні місця. Особливо актуально для роботи з HTML-рядками, коли потрібно доповнити дані з сервера клієнтськими.
👉 https://swifttoolkit.dev/posts/swift-mustache
🇺🇦 iOSDevUA
Це може бути корисно, наприклад, якщо потрібно обробити дані та динамічно підставити їх у потрібні місця. Особливо актуально для роботи з HTML-рядками, коли потрібно доповнити дані з сервера клієнтськими.
👉 https://swifttoolkit.dev/posts/swift-mustache
🇺🇦 iOSDevUA
www.swifttoolkit.dev
Templating with Mustache: an Interactive Tutorial
Use Mustache templates in Swift for code generation and any templating task, and learn with interactive examples
👍1
💡Робота з Lists в SwiftUI: типи, приклади та налаштування
Lists є одним з найбільш часто використовуваних елементів при створенні додатків, особливо для реалізації навігації.
Ми маємо доступ до різних стилів і налаштувань, таких як зміна фону, підтримка вибору елементів та додавання секцій.
📖 У цій статті розглядаються різні варіанти верстки і на прикладах показано, як можна налаштовувати цей елемент.
🇺🇦 iOSDevUA
Lists є одним з найбільш часто використовуваних елементів при створенні додатків, особливо для реалізації навігації.
Ми маємо доступ до різних стилів і налаштувань, таких як зміна фону, підтримка вибору елементів та додавання секцій.
📖 У цій статті розглядаються різні варіанти верстки і на прикладах показано, як можна налаштовувати цей елемент.
🇺🇦 iOSDevUA
❤2
💡React Native у Shopify
Shopify – одна з найбільш відомих компаній, що використовує React Native. Їхній досвід часто згадують на конференціях, а сама команда активно сприяє розвитку як фреймворку, так і його екосистеми, постійно впроваджуючи інновації. У своєму матеріалі Shopify підсумовують п’ять років роботи з React Native, на який зрештою було переведено більшість їхніх проєктів.
🇺🇦 iOSDevUA
Shopify – одна з найбільш відомих компаній, що використовує React Native. Їхній досвід часто згадують на конференціях, а сама команда активно сприяє розвитку як фреймворку, так і його екосистеми, постійно впроваджуючи інновації. У своєму матеріалі Shopify підсумовують п’ять років роботи з React Native, на який зрештою було переведено більшість їхніх проєктів.
🇺🇦 iOSDevUA
Shopify
Five years of React Native at Shopify (2025) - Shopify
Five years ago, we announced that React Native (RN) is the future of mobile at Shopify. Today, we are excited to share the progress we've made, lessons learned, and what the future holds.
To recap, we decided to switch to RN for 3 main reasons:
Write it…
To recap, we decided to switch to RN for 3 main reasons:
Write it…
🥴3
💡Навіщо потрібен метод init(coder:) для View Controllers?
Якщо ви нещодавно почали працювати з UIKit або перейшли до верстки кодом, то, ймовірно, стикалися з помилкою:
Ця помилка виникає при створенні контролерів програмно (а не з XIB або storyboard).
Чому це відбувається?
Клас UIViewController відповідає протоколу NSCoding.
Коли ми створюємо його програмно, ми повинні дотримуватися цього протоколу, що включає необхідність реалізації ініціалізатора, навіть якщо ми його не використовуємо безпосередньо.
Як це працює в Storyboard: під час виконання часу, UIStoryboard створює контролер програмно, кодує його за допомогою протоколу NSCoding, а потім передає архів даних у метод init(coder:), що використовується для відтворення стану контролера.
📖 Докладне пояснення можна знайти в цій статті.
🇺🇦 iOSDevUA
Якщо ви нещодавно почали працювати з UIKit або перейшли до верстки кодом, то, ймовірно, стикалися з помилкою:
'required' initializer 'init(coder:)' must be provided by subclass of 'UIViewController'Ця помилка виникає при створенні контролерів програмно (а не з XIB або storyboard).
Чому це відбувається?
Клас UIViewController відповідає протоколу NSCoding.
Коли ми створюємо його програмно, ми повинні дотримуватися цього протоколу, що включає необхідність реалізації ініціалізатора, навіть якщо ми його не використовуємо безпосередньо.
Як це працює в Storyboard: під час виконання часу, UIStoryboard створює контролер програмно, кодує його за допомогою протоколу NSCoding, а потім передає архів даних у метод init(coder:), що використовується для відтворення стану контролера.
📖 Докладне пояснення можна знайти в цій статті.
🇺🇦 iOSDevUA
💡Tab View Styles в SwiftUI
Модифікатор
🇺🇦 iOSDevUA
Модифікатор
.tabViewStyle у SwiftUI дозволяє налаштовувати нестандартну поведінку вкладок у таб-барі. Наприклад, він дає можливість користувачам змінювати порядок вкладок за допомогою функції drag-and-drop.🇺🇦 iOSDevUA
❤2
💡Як AI змінює розробку
Цей лонгрид розглядає, як сучасний стан AI змінює патерни розробки програмного забезпечення. Ось кілька ідей:
👉 Розробників можна поділити на дві категорії: бутстрапери — ті, хто використовує генератори додатків для швидкого створення прототипів, та ітератори — ті, хто працює над існуючою кодовою базою за допомогою AI, вдосконалюючи зміни.
👉 AI дозволяє швидко виконати перші 70% роботи, але для більшості решта 30% стають справжнім випробуванням.
👉 Ті, хто успішно працює з AI, не просто приймають згенерований код, а розбивають його на модулі, додають обробку edge кейсів, перевіряють та покращують інтерфейси, типи та архітектурні рішення, додають обробку помилок.
👉 AI допомагає senior-розробникам, але для новачків може бути суттєвим бар’єром.
🇺🇦 iOSDevUA
Цей лонгрид розглядає, як сучасний стан AI змінює патерни розробки програмного забезпечення. Ось кілька ідей:
👉 Розробників можна поділити на дві категорії: бутстрапери — ті, хто використовує генератори додатків для швидкого створення прототипів, та ітератори — ті, хто працює над існуючою кодовою базою за допомогою AI, вдосконалюючи зміни.
👉 AI дозволяє швидко виконати перші 70% роботи, але для більшості решта 30% стають справжнім випробуванням.
👉 Ті, хто успішно працює з AI, не просто приймають згенерований код, а розбивають його на модулі, додають обробку edge кейсів, перевіряють та покращують інтерфейси, типи та архітектурні рішення, додають обробку помилок.
👉 AI допомагає senior-розробникам, але для новачків може бути суттєвим бар’єром.
🇺🇦 iOSDevUA
Pragmaticengineer
How AI-assisted coding will change software engineering: hard truths
A field guide that also covers why we need to rethink our expectations, and what software engineering really is. A guest post by software engineer and engineering leader Addy Osmani
❤2
💡TabletopKit – фреймворк для кооперативних ігор у visionOS
Майбутнє visionOS поки що залишається невизначеним: виробництво дорогих моделей припинили, а поява більш доступних рішень під питанням. Проте технології, що лежать у його основі, досі викликають інтерес. Наприклад, у цьому матеріалі розглядається використання фреймворку TabletopKit для створення кооперативної гри в жанрі escape room. Також детально описані виклики, з якими зіткнулися розробники.
🇺🇦 iOSDevUA
Майбутнє visionOS поки що залишається невизначеним: виробництво дорогих моделей припинили, а поява більш доступних рішень під питанням. Проте технології, що лежать у його основі, досі викликають інтерес. Наприклад, у цьому матеріалі розглядається використання фреймворку TabletopKit для створення кооперативної гри в жанрі escape room. Також детально описані виклики, з якими зіткнулися розробники.
🇺🇦 iOSDevUA
❤2🔥1