Эта музыка будет вечной. Apple снова разблокировала учетную запись Epic Games. Пишут, что на этом настояли европейский регулятор - Apple отступилась, fEpic обещал не нарушать правила. Так что игровой магазин на iOS, похоже, все таки в скором времени будет. Вместе с Fortnite.
Разработка
• Я.Субботник по мобильной разработке
• Avito Analytics meetup
• The most important goal in designing software is understandability
• You’re not a weak developer if you don’t always show off your technical excellence
• Context-switching - one of the worst productivity killers in the engineering industry
Маркетинг
• Маркетологи в мобайле (Spring Edition): Арина Еремян (Пятёрочка.Доставка)
• You can put your app's paywall in an Alert. But you probably shouldn’t
Кроссплатформа
• Адаптивная вёрстка во Flutter
• Сериализация и десериализация — вошли и вышли
• Приложение викторины: внедрение Cardoteka и основные паттерны проектирования с Riverpod
• Методы-расширения в Dart
• flavius.holerga/making-a-3d-looking-game-using-flutter-tutorial-35ac6bf9e26d">Making a 2.5D game using Flutter — Tutorial
iOS
• Вышла VisionOS 1.1
• Loopover: пазл в стиле кубика Рубика
• Optional в Swift: 5 вещей, которые вы должны знать
• Уроки Swift: UITextField с анимированным плейсхолдером
• Minimal Widget Product: путь к эффективной и гибкой реализации виджетов
• Поваренная книга SwiftUI: лучшие практики управления состояниями в SwiftUI
• Apple снова разблокировала учетную запись Epic Games
• How to build a draggable bottom sheet with a scroll view in SwiftUI
• Everything you need to know about Swift 5.10
• Concurrency Recipes
• How to Dynamically Construct Complex Predicates for SwiftData
• Aspect-Oriented Programming in Swift
• Implementing a TV Guide with SwiftUI
#ios
Новый Fused Orientation Provider обеспечивает получение точных данных об ориентации устройства
Ориентация или положение устройства используется в качестве входного сигнала во многих случаях: виртуальная или дополненная реальность, распознавание жестов, компас и навигация — в любом случае, когда приложению нужна ориентация устройства относительно окружающей среды. Fused Orientation Provider (FOP) — это новый API в сервисах Google Play, который обеспечивает качественную и стабильную ориентацию устройства путем объединения сигналов от акселерометра, гироскопа и магнитометра.
1. Хотя в настоящее время Rotation Vector в Android уже обеспечивает получение данных об ориентации устройства (и будет продолжать это делать), новый FOP обеспечивает более последовательное поведение и высокую производительность на всех устройствах.
2. FOP обеспечивает единую реализацию на всех устройствах - API реализован в Google Play Services, а значит нет различий в реализации на устройствах разных производителей. Обновления алгоритма могут быть выпущены быстро и независимо от обновлений платформы Android.
3. FOP учитывает местное магнитное склонение, если оно доступно и компенсирует более низкое качество датчиков и OEM-реализаций (например, смещение гироскопа, синхронизацию датчиков).
Fused Orientation Provider доступен на всех устройствах с сервисами Google Play на Android 5 (Lollipop) и выше.
Видео и подкасты за неделю:
• (iOS Ru)
Minimal Widget Product: путь к эффективной и гибкой реализации виджетов
• (iOS Ru)
Уроки Swift: UITextField с анимированным плейсхолдером
• (iOS En)
Paging ScrollView in SwiftUI for iOS 17
• (iOS En)
Visual Effect API - Stacked Cards - ScrollView
• (iOS En)
Custom Calendar Tallies in SwiftUI
• (iOS En)
Minimal Login Setup With Firebase Email Authentication
• (And Ru)
Разработка новостного приложения. Часть 3
• (And Ru)
Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
• (And En)
THIS Is How You Create Custom Shapes in Jetpack Compose
• (And En)
New Android 15 Changes, App Update Prompts & AI Document Scanning
• (And En)
Lyricist & Voyager - Navigating the Compose Multiverse
• (And En)
Imperative, declarative, object oriented, functional: four of a Kotlin kind
• (Crs Ru)
Сериализация и десериализация — вошли и вышли
• (Crs Ru)
Адаптивная вёрстка во Flutter
• (Dev Ru)
Я.Субботник по мобильной разработке
• (Dev En)
Firebase’s Release Monitoring dashboard, Dart 3.3 release, and more dev news!
• (Dev En)
Learn C# – Full Course with Mini-Projects
• (Anl Ru)
Avito Analytics meetup
Что вы интересного посмотрели/послушали про разработку на этой неделе? 🌐 @AppFiles
Сериал Тупой и еще тупее Apple против Epiс продолжается. Apple назвала Epic "незаслуживающей доверия" и снова заблокировала (так и хочется добавить на хер) аккаунт разработчика. Продержался он менее месяца (с 16 февраля) и, как пишут, уже 23 февраля Фил Шиллер связался с Суини, чтобы попросить "письменную гарантию" того, что Epic Games "выполнит свои обязательства". "В простых, безоговорочных выражениях, пожалуйста, объясните нам, почему мы должны доверять Epic на этот раз", - говорится в конце письма Шиллера. Суини ответил в тот же день и заверил Фила, что все будет нормально. Правда, уже 2 марта, юристы Apple отправили Epic письмо, в котором сообщается о прекращении действия аккаунта, глава Epix их не убедил. Короче, это бодяга с нами еще лет на 10.
Разработка
• Быть хорошим инженером-программистом сейчас сложнее, чем когда-либо
• flutterwtf/mobile-app-security-best-practices-in-2024-fa1d124bf571">Mobile App Security Best Practices in 2024
• Sliders degrade UX (so do this instead)
• Feature flags are ruining your codebase
Маркетинг
• Apple снова заблокировала учетную запись Epic Games
• В AppMetrica появился инструмент прогнозирования LTV и оттока
• Маркетологи в мобайле (Spring Edition): Ася Загирова (Premier)
• Apple расширяет аналитику в App Store Connect
Кроссплатформа
• Основы управления состояниями во Flutter
• Integrating Stripe Payment Gateway into Your Flutter App
iOS
• Альтернативные магазины приложений на iOS перестанут работать за пределами Европы
• Making Ollie: Creating a local iOS app in a time of React Native
• Embedded Swift on the Raspberry Pi Pico
• How to create an iOS chat app
• SwiftUI loading states with a twist; Solving a mutation puzzle
• Nerdy internals of an Apple text editor
• Optionals in Swift explained: 5 things you should know
• High Performance Swift Apps
#ios
Apple расширяет аналитику в App Store Connect
Теперь через App Store Connect API доступно более 50 новых отчетов, которые помогут вам проанализировать работу приложений в App Store и на iOS.
Отчеты разбиты на следующие категории:
• App Store Engagement — количество пользователей в App Store, которые взаимодействуют с приложением разработчика или делятся им с другими.
• App Store Commerce — загрузки, продажи, предварительные заказы и транзакции, совершенные с помощью безопасной системы App Store In-App Purchase
• App Usage — количество активных устройств, установок, удалений приложений и т. д.
• Frameworks Usage — взаимодействие приложения с возможностями ОС, такими как PhotoPicker и Widgets.
• Performance — производительность ваших приложений и взаимодействие пользователей с определенными функциями.
• Кроме того, в консоли CloudKit появились новые отчеты, содержащие данные об Apple Push Notifications и File Provider.
Android
• Начинаем тестирование со Сканером Доступности
• Choosing Between Sealed Class and Sealed Interface in Kotlin for Android Development
• Android CI: Build Caching on Github Actions
• Tracing recompositions without boilerplate code
• anupamsingh696/top-100-android-interview-questions-eca251f3bf3f">Top 100 Android Interview Questions
• mobile_44538/privacy-secure-android-keyboards-b11b322ffa41">Privacy Secure Android Keyboards
#android
Есть ли деньги в мобильных приложениях в 2024 году?
Как делать воронку, которая конвертит и окупается? Где взять толковых продактов и маркетологов? Как делать темные паттерны, которые конвертят?
Об этом в своем канале пишет Миша Табунов. Миша – работал 6 лет директором по продукту в FunCorp, занимался мобильными приложениями (более 100 млн установок в США). До этого запускал свои B2C развлекательные продукты, которые собирали десятки миллионов пользователей, а с одним из них проходил Y Combinator.
Самые интересные посты:
• Почему нужны темные паттерны
• Как мы без денег получили первый миллион пользователей
• Правда про дизайн
• Главная проблема касдевов
Подписывайтесь на Мишу, получайте правду про продукт и маркетинг.
@bossofyourbossРеклама ИП Табунов Михаил Валерьевич. Erid 2Vtzqvdvjh5
Apple только что показала новые 13" и 15" MacBook Air на базе процессора M3. Говорят, что работают на 60% быстрее, чем модели на M1, и до 13 раз быстрее, чем самый быстрый MacBook Air на Intel. Стоимость MacBook Air 13 с M3 составляет от $1099, MacBook Air 15 с M3 уже доступен по предзаказу от $1299.
Разработка
• Как мы пытались растить выручку через персонализацию
• Топ 5 книг для синьора
• Исследователи обнаружили в Hugging Face вредоносные модели ИИ
• How to build a documentation website for your project
• Case Study: Improving a Banking App with a UX Audit
• juraj.malenica/unpopular-opinion-its-harder-than-ever-to-be-a-good-software-engineer-8560585b0ea8">Unpopular Opinion: It’s harder than ever to be a good software engineer
Маркетинг
• Самые скачиваемые и зарабатывающие приложения в России в феврале 2024
• Маркетологи в мобайле (Spring Edition): Василина Кузенко (ИЛЬ ДЕ БОТЭ)
• Самые скачиваемые приложения в мире в январе 2024
• Маркетологи в мобайле (Spring Edition): Ярослава Адаменко (М.Видео и Эльдорадо)
Кроссплатформа
• Migrating to Koin Annotations in a multiplatform project
iOS
• Continuations для взаимодействия асинхронных задач с синхронным кодом
• Apple вернет PWA в iOS
• Apple опубликовала план развертывания подписей для SDK
• Пишем текстовую RPG
• VerticalSplit: контейнер SwiftUI с двумя View с настраиваемым разделением
• Setapp от MacPaw станет первой альтернативной платформой для iOS в Европе
• An Introduction to Isolation in Swift
• Migrating my SwiftUI App to VisionOS in 2 Hours
• jonathan.crooke/scaling-ios-at-bumble-6f0602682903">Scaling iOS at Bumble: Part 3/3 — Results and Developer Quality of Life
• Swift Predicate: Usage, Composition, and Considerations
#ios
Исследователи обнаружили в Hugging Face вредоносные ИИ-модели
На платформе Hugging Face было обнаружено не менее 100 вредоносных ИИ-моделей.
1. Команда безопасности JFrog обнаружила, что около сотни моделей, размещенных на платформе, содержат вредоносный функционал.
2. Например, одна из моделей PyTorch содержала код, который позволял установить обратный shell к компьютеру жертвы. Вредоносный код использовал метод из модуля pickle в Python для выполнения произвольного кода при загрузке файла модели, избегая обнаружения за счет встраивания в доверенный процесс сериализации.
3. В использовании вредоносные модели замечены пока не были и вообще предполагается, что это были исследователи.
4. Однако это происходит, несмотря на меры безопасности Hugging Face, включая сканирование на наличие вредоносного кода и секретов, а также тщательное изучение функционала моделей на предмет обнаружения такого поведения.
И что: все, что может быть поражено - будет поражено. Поэтому в следующий раз при использовании новой модели подумайте, а нет ли в ней бекдора.
Видео и подкасты за неделю:
• (iOS Ru)
Пишем текстовую RPG
• (iOS En)
How to Create 3D App Icons for visionOS
• (iOS En)
How to easily mock ANY network call with URLProtocol
• (iOS En)
Elastic Custom Segmented Control - SwiftUI
• (iOS En)
Custom SwiftUI Calendar
• (And Ru)
Наш опыт внедрения Compose в большой проект
• (And Ru)
Многомодульность: что это такое?
• (And Ru)
Жизнь инди в Google Play
• (And Ru)
Разработка новостного приложения. Часть 2
• (And En)
The Ultimate Package Structure Guide for Android Developers
•(And En)
Modern Dependency Management With Version Catalogs
• (And En)
Modularization at scale with Alireza Tizfahmfard
• (Dev Ru)
Топ 5 книг для синьора
• (Dev En)
Machine Learning in 2024 – Beginner's Course
• (Dev Ru)
Как мы пытались растить выручку через персонализацию
Что вы интересного посмотрели/послушали про разработку на этой неделе? 🌐 @AppFiles
В TechCrunch обозрели приложение Liveliness - это сообщества для любителей заниматься определенным спортом (например, вы бегаете и ищите тех, кто хочет бегать вместе с вами). Собственно, в самом приложении нет ничего особенного - ему уже год и у него около 2.3 тысяч (не сотен, тысяч) пользователей. Мне понравился вывод - “в условиях, когда основные социальные сети чувствуют себя все более неполноценными в качестве инструмента для налаживания человеческих связей, у нишевых социальных сетей, подобных этой, может появиться возможность незаметно вклиниться и набрать обороты, создавая более гостеприимные и ориентированные на сообщества пространства, сфокусированные на общих интересах”. Так что делайте в приложениях сообщества и будет вам счастье.
Разработка
• Открытая модель StarCoder 2 работает на обычных GPU
• «Не заставляйте меня вводить цифры»: реализуем сложный повтор в мобильном календаре
• Crafting a Custom Sports Activity Service with OpenAI and Node JS
• Software engineering practices you should probably be following in 2024
Маркетинг
• Liveliness — сообщества для любителей спорта
• Маркетологи в мобайле (Spring Edition): Ольга Бигбашева (Rendez-Vous)
• Кейс: разметка приложения с нуля на конкретном примере
Кроссплатформа
• Деплой Flutter-приложений и особенности платформ
• Диплом специалиста ИБ. Часть №4 — Мобильное приложение Smart Connect
• Вопросы с собеседований: Что такое примесь (mixin) в Dart
• The missing guide to deep linking in Flutter apps
iOS
• Working with dates and Codable in Swift
• Swift Predicate: Usage, Composition, and Considerations
• rohit-13/exploring-the-swiftuis-grid-view-lazyvgrid-griditem-and-grid-gridrow-888fca958b0f">Exploring the SwiftUI’s Grid View
#ios
Android
• Google вводит новые сборы с разработчиков в рамках соблюдения DMA
• Hilt в многомодульный проект — пособие по внедрению зависимостей для новичков
• Разработка новостного приложения. Часть 3
• Legado: читалка для Android
• Новый Fused Orientation Provider обеспечивает получение точных данных об ориентации устройства
• Imperative, declarative, object oriented, functional: four of a Kotlin kind
• Stop Debating in Code Reviews. Start Enforcing with Lint Rules
• How to create Glovo-like main screen animation using Jetpack Compose
• michalankiersztajn/kotlin-design-patterns-abstract-factory-explained-79c6594d7a70">Kotlin Design Patterns: Abstract Factory Explained
• Designing your account deletion experience with users in mind
• Downloadable and Preloaded Fonts on Android
#android
DetailsPro - это no-code инструмент проектирования на основе SwiftUI.
• Создавайте с помощью таких представлений SwiftUI, как VStack, Text, Image и др.
• Создавайте реальные дизайны без написания кода
• Экспорт в Xcode, Swift Playgrounds и др.
Сайт: https://detailspro.app/
Платформа: iOS
По граблям шрифтов
Подборка всех материалов за прошлую неделю - изоляция в iOS, адаптация UI/UX для людей с проблемами зрения, сложно ли сейчас быть Богом программистом, весенние выпуски маркетологов в мобайле, сериализация и десериализация и многое другое. Заходите!
Google вводит новые сборы с разработчиков
Сегодня компания Google представила более подробную информацию о сборах, которыми будет сопровождаться ее план по соблюдению нового европейского закона о цифровых рынках.
1. Для тех, кто будет предлагать в Европе внешние покупки, запускается программа «Внешние предложения» (External offers program).
2. Фактически это дублирование Core Technology Fee от Apple - просто плата за платформу Android. "Плата за услуги Google Play никогда не была просто платой за обработку платежей - она отражает ценность Android и Play и поддерживает наши инвестиции в Android и магазин приложений, позволяя реализовать функции для пользователей и разработчиков, на которые рассчитывают люди".
3. Будет две комиссии - плата за первоначальное приобретение, которая составляет 10% для покупок в приложениях или 5% для подписки и плата за постоянные услуги, которая составляет 17% для покупок в приложении или 7% для подписки.
4. То есть в реальности суммарные платежи вне Google Play будут на 3 пп меньше, чем в нем - например, 12 против 15 для подписки.
5. Разработчик может отказаться от постоянных услуг и соответствующих сборов через два года. Но нужно будет согласие пользователей.
Android
• Apollo Kotlin: сильно типизированный, кэширующий GraphQL-клиент
• Microsoft прекращает работу Windows Subsystem for Android
• Новый Text-To-Speech движок в Wear OS
• Как увеличить шрифт так, чтобы контейнер не поехал? Адаптация UI/UX для людей с проблемами зрения в XML и Compose
• How to own a legacy Android codebase in 2024?
• Kotlin Variance... without Generics!
• Prominent Disclosure and Consent Requirement
• Jetpack Compose Tips and Conventions for the @Composables to Make Them Better
• mohit2656422/top-10-work-manager-questions-2024-3631683bf290">Top 10 Work Manager Questions 2024
• oguzhanaslann/android-project-cleanup-for-smaller-apks-faster-builds-and-a-better-development-experience-830bfcb0032b">Android Project Cleanup for Smaller APKs, Faster Builds, and a Better Development Experience
#android
Microsoft прекращает работу Windows Subsystem for Android
Microsoft прекращает поддержку подсистемы Android в Windows 11 в следующем году.
1. Софтверный гигант впервые объявил о работе Android-приложений в Windows 11 с помощью Amazon Appstore почти три года назад, но теперь эта Windows Subsystem for Android перестанет поддерживаться, начиная с 5 марта 2025 года.
2. Сегодня пользователи Windows 11 уже не могут искать приложения Amazon Appstore или связанные с ними приложения для Android в Microsoft Store.
3. Разработчики больше не смогут представлять новые приложения для Windows 11 после 5 марта 2024 года, но разработчики существующих приложений смогут продолжать выпускать обновления приложений до тех пор, пока работа Amazon Appstore на Windows 11 не будет полностью прекращена.
И что: странный шаг учитывая то, как все прекрасно могло бы быть. Впрочем, полтора года назад сам Google запустил бета-версию Google Play Games — платформу, которая позволяет любому желающему играть в игры для Android на ПК с Windows. Так что надежда на нормальную кроссплатформенную работу все же есть.
ЕС по антимонопольному иску Spotify оштрафовала Apple на 1.84 миллиарда евро. И тут даже как-то сочувствие к Apple проснулось. Как пишет Apple, Spotify добился ведущего положения на музыкальном рынке вообще и на iOS в частности во многом как раз с помощью Apple, и при этом ничего ей не платит. "Команда App Review рассмотрела и одобрила 421 версию приложения Spotify - обычно в течение одного дня - и часто ускоряет рассмотрение по просьбе Spotify. Для того чтобы создать инструменты, технологии и рынок, которыми Spotify пользуется каждый день, компании Apple требуются постоянные усилия и большие инвестиции. Мы даже летали с нашими инженерами в Стокгольм, чтобы лично помочь командам Spotify. В результате, когда пользователь открывает приложение Spotify, слушает музыку в дороге или просит Siri воспроизвести песню из его библиотеки, все просто работает. И опять же - Spotify ничего не платит Apple". В общем, рекомендую прочитать не только новость, но и ответ Apple - нестандартно эмоциональный и интересный.
Разработка
• ЕС оштрафовала Apple на 1.8 млрд евро по антимонопольному иску Spotify
• Как я перестал бояться и полюбил автоматизацию мобильных приложений — Robot Framework
• Increase Test Fidelity By Avoiding Mocks
• Why Bad Design is Good
Маркетинг
• Маркетологи в мобайле (Spring Edition): Мария Миткевич (Мегамаркет)
• Что ученые знают про темные паттерны в дизайне: как повышают конверсию и насколько роняют доверие?
Кроссплатформа
• Навигация по страницам во Flutter
• Flutter: Modularized Dependency Injection
iOS
• Вопросы с собеседований: Что такое Hashable в Swift
• Введение в Изоляцию в Swift
• MLX Swift Chat: локальные LLM с MLX и SwiftUI
• Оптимальный архитектурный шаблон iOS
• How to use TipKit to create tool tips in SwiftUI
• Guide to the App Store Connect API: Calculate your iOS app's average user rating for each version
• iOSHarsh/mastering-test-driven-development-tdd-in-ios-63e0584a10ae">Mastering Test-Driven Development (TDD) in iOS
• Simplifying Test Writing with Protocol Witnesses in Swift
• Bad practice: loading a large image on the main thread
• High Performance Swift Apps
#ios
Лучшее из вчерашнего в #ios - завершение цикла "Масштабирование iOS в Bumble"
Серия из трех статей о работе, проделанной в течение 2022 и 2023 годов и направленной на решение проблем масштабирования производственных приложений для iOS в одной из крупнейших дейтинг-компаний. TLDR: Tuist.
У меня был перевод первой, а вот вторая и jonathan.crooke/scaling-ios-at-bumble-6f0602682903">третья. Поставьте 👍, если тоже хотите их на русском.
Android
• ComposeInvestigator: отслеживание рекомпозиций
• Разработка новостного приложения. Часть 2
• Наш опыт внедрения Compose в большой проект
• Многомодульность: что это такое?
• Жизнь инди в Google Play
• Android Studio Iguana стала стабильной
• State of Compose 2023
• Create Gemini loading animation using Jetpack compose
• Rich media input from the keyboard in Compose
#android
Apple вернет PWA в iOS
Apple «продолжит предлагать существующие возможности веб-приложений для главного экрана в ЕС».
1. Ранее Apple объяснила, что ей придется создать «совершенно новую интеграционную архитектуру, которой сейчас нет в iOS», чтобы решить «сложные проблемы безопасности и конфиденциальности, связанные с PWA-приложениями, использующими альтернативные браузерные движки».
2. Сегодняшним заявлением Apple изменила свой курс и сообщила, что веб-приложения продолжат существовать в Европейском союзе в том виде, в котором они существовали до версии iOS 17.4.
3. Просто работать всегда они будут на WebKit, независимо от того, добавлено ли веб-приложение с помощью Safari или нет — точно так же, как это работает сегодня и уже много лет.
И что: не могу не вспомнить анекдот в тему
Сидит молодая семья на пляже. Вдруг на песок выпрыгивает золотая рыбка и говорит:
- Я исполню три ваших желания по одному на каждого.
Сын сразу говорит:
- Хочу хомячка!
Отец:
- В жопу хомячка!
Мать:
- Из жопы хомячка!
Гибридная игуана
Подборка всех материалов за прошлую неделю - возврат от SwiftUI к UIKit и машинное обучение на устройствах, стабильная Iguana и гибридный интерфейс в Wear OS, деплой Flutter-приложений, сложный повтор в мобильном календаре, весенние маркетологи в мобайле и многое другое. Подключайтесь!
Android Studio Iguana стала стабильной
Сегодня Google выпустил Android Studio Iguana в канале стабильных релизов. Среди новых функций:
• Интеграция системы контроля версий в App Quality Insights
• Просмотр вариантов сбоев Crashlytics в App Quality Insights
• Проверка доступности и адаптивности дизайна Jetpack Compose
• Прогрессивный рендеринг для предварительного просмотра Compose
• Обновленная платформа Intellij
• Шаблоны для Baseline Profiles
• Проверка изменений конфигурации с Espresso Device API
• Pixel 8 и Pixel 8 Pro в Android Emulator (34.2)
• Поддержка Gradle Version Catalogs
• Интеграция Google Play SDK Index
• Предупреждение о неподдерживаемой compileSdk
Android
Посмотрите - чуть более подробно про гибридный интерфейс в Wear OS.
• Что такое гибридный интерфейс в Wear OS
• Google TV обновляет домашний экран
• Decompose: BLoC с навигацией и подключаемым UI
• Настраиваем кросс-обновления Android-приложений между сторами
• Android Lint: оптимизируем проверку мердж-реквестов
• Fun with shapes in Compose
• Snapshot Testing Libraries for Android: Paparazzi vs Shot
• Jetpack Compose Hacks:Top 3 Secret Jetpack Compose Modifiers
• clwater/think-of-current-android-architecture-from-usecase-cc1f95590e4a">Think of current Android Architecture from UseCase
#android
Лучшее из вчерашнего #ios - бесконечный спор о том, готов ли SwiftUI к проду: Почему Ollie вернулся от SwiftUI к UIKit (мой перевод)
Компания потратила год отнюдь не мифических человеко-часов, чтобы разобраться с тем, как работает фреймворк, но так и не смогла сделать это, до сих пор описывая работу SwiftUI как "магию". Да, признает автор, для простых проектов такие проблемы будут вообще неактуальны, но для больших приложений SwiftUI еще не готов.