Android
• Красота системы типов Kotlin
• Что такое Mainline в Android
• Android cookbook: готовим WebView правильно
• Kotlin Coroutines. Устройство и возможности использования
• Более частые выпуски Android SDK: более быстрые инновации и высокое качество
• Компьютерное зрение на С++: подключаем ML-библиотеки и обрабатываем результаты поиска объектов
• Как я писал суперкастомизированное Android-приложение в 2024 году
• Сравнение операторов RxJava 3 и Kotlin Coroutines Flow
• Диалог — часть навигации или нет?
• Compose Navigation The Old Way
• Widgets with Glance: Blending in
• Parameterized Android Tests with Burst 2.0
• jw/113427033356987061">Picasso is formally deprecated
#android
Открытый урок для разработчиков на Android, iOS, React Native, Ionic или Xamarin
📒Тема:
Используем GPU для создания настоящего 3D-движка в Flutter
📕Рассмотрим:
- Основы 3D-графики (вершинные и фрагментные шейдеры), определение шейдеров в impeller
- Создание собственных шейдеров для отображения 3D-объектов в Flutter-приложении
- Добавление света и теней, отображение 3D-изображения на экране
- Интеграция 3D в игровой движок Flame, создание несложной игры
📗Результат:
Создадим простой 3D-движок и разработаем простую игру в виртуальном 3D-мире.
📘Спикер:
Дмитрий Золотов — опытный Flutter+Kotlin Developer в Yandex, FullStack разработчик (Flutter/Python/Kotlin/GoLang/C++), преподаватель
Встречаемся 6 ноября в 20:00 мск. Всем участникам дадим скидку на основной курс.
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://otus.pw/sOaJ/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Без теории к практике
Новая недельная подборка всего кода за неделю - ковка Metal и поиск регрессий в Compose, полностью переделанный React Native и форк Flutter, тактильный отклик в мобильных приложениях, сравнение размеров iOS и Android приложений, самые скачиваемые и зарабатывающие приложения в России в октябре и многое другое. Подключайтесь!
iOS-разработчикам, которые хотят прокачать свои навыки работы с многопоточностью – совсем скоро стартует Podlodka iOS Crew!
С 11 по 15 ноября лучшие эксперты разберут многопоточность, Swift Concurrency и алгоритмы в формате удобных онлайн-сессий.
В программе:
🔹 Александр Андрюхин проведёт нас через особенности Swift Concurrency, которых ты точно не знал
🔹 Swift 6 глазами Александра Априамашвили – как переход на новую версию поможет в повседневной работе.
🔹 Антон Марченко расскажет, как async в алгоритмах делает их быстрее.
🔹 Александр Сычев раскроет механизмы работы Thread и объяснит, как это важно для работы с многопоточностью.
Здесь только прикладная польза, реальные примеры и свежий опыт.
Присоединяйтесь 👉 https://podlodka.io/ioscrew
Вышел новый ежегодный отчет Octoverse, в котором GitHub рассматривает индустрию открытого программного обеспечения и свою роль в ней. Из интересного: впервые Python стал самым используемым языком на GitHub, поскольку глобальная активность open source разработчиков выходит за рамки традиционной разработки программного обеспечения; Топ-6 стран на GitHub — США, Индия, Китай. Бразилия, Великобритания и Россия; правда, России прочат падение на несколько мест в ближайшие годы; Топ проект - по количеству контрибюторов - VS Code; Flutter на 6 месте; Топ самых быстрорастущих языков - Python, TypeScript, Go, HCL, Kotlin, Dart.
Разработка
• Octoverse 2024: ежегодный отчет от GitHub
• Тактильный отклик в мобильных приложениях: что это такое, когда использовать и зачем?
• Decoupling Design From Engineering
• Why Pascal Deserves a Second Look
• Why sprints are taking the joy out of building software
Маркетинг и монетизация
• Рынок iOS-приложений в Европе — отчет Setapp
• VK Реклама упростила продвижение приложений из RuStore
• Nintendo выпустила стриминговое приложение с музыкой из своих игр
• How DreamPlus Games Makes $2M Per Month On Twilight Hype
Кроссплатформа
• Как начать создавать Flutter-приложения на Авроре: полная инструкция
• React Native, and "the native feel"
#mobile #dev
iOS
• Делаем в SwiftUI размытие экрана при переключении задачи
• Improving test coverage with parameterized tests in Swift testing
• How to automatically update build and version numbers in your app using Fastlane
• Preview Driven Development
#ios
Рынок iOS-приложений в Европе
Компания Setapp подготовила расширенный отчет о запросах, предпочтениях и поведении пользователей iPhone и iPad в Европе.
• 81.6 миллиона пользователей iPhone или iPad в ЕС
• 15 миллионов совершают покупки в приложениях
• Лучшие неигровые категории, за которые готовы платить пользователи - Продуктивность, Финансы, Здоровье и Фитнес
• 16-24-летние составляют самую большую возрастную группу пользователей iOS/iPadOS (26%), за ними следуют 25-34-летние (23%) - таким образом молодые пользователи моложе 35 лет составляют 49%
• 30% пользователей 16-24 платят за приложения
• Редакционные подборки и топы в App Store являются доминирующим источником информации о новых приложениях для iOS (49%), однако поиск в Google также эффективен (45%), а на третьем месте прямой поиск задачи/решения проблемы в App Store
Android
• Поиск регрессий в Compose
• Главный метод Android-приложения
• amarkumarprajapti/tips-to-improve-frame-rates-in-android-apps-67cecb6bb64e">Tips to Improve Frame Rates in Android Apps
• azizbek.rasulmetov2000/android-interview-questions-about-activity-component-68a7f4ffdb5b">Android interview questions about Activity component
#android
Более четверти нового кода в Google создается ИИ
Сегодня был отчет о квартальных прибылях и убытках Google. Все выросло, но самое интересное другое.
Более четверти всего нового кода в Google генерируется искусственным интеллектом, затем проверяется и принимается инженерами, — заявил генеральный директор Сундар Пичаи в ходе отчета.
Android
• Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 5
• Lawnchair — лаунчер для Android
• Как написать Android приложение, которое не будет стыдно положить в портфолио. Гайд для новичков в Android разработке
• 5th элемент корпоративной мобильности: разбираемся с Separated apps в KNOX Service Plugin (KSP)
• saadkhan.cdz/generating-code-coverage-report-with-jacoco-a-complete-guide-for-android-part-3-a7c57561bcda">Generating Code Coverage Report with JaCoCo: A Complete Guide for Android
• Mastering DisposableEffect in Jetpack Compose: Managing Side Effects Effectively
• Gradle Modularisation
#android
Flock - форк Flutter
Очевидно, что Flutter если не находится в упадке, то явно притормозил свое развитие. Команда минимальна, многие тикеты могут лежать в бэклоге годами, 3 из 6 поддерживаемых платформ находятся в "режиме обслуживания".
Тут появляется форк Flock. Его описывают как Flutter+, другими словами, авторы не хотят и не собираются форкать сообщество Flutter, а хотят просто добавлять важные исправления ошибок и популярные фичи от сообщества, которые команда Flutter либо не может, либо не хочет реализовать.
Форк даст следующие возможности:
• Позволит набрать гораздо большую команду PR рецензентов, чем в команде Flutter. Это означает более быстрое рассмотрение.
• За счет этого создаст поддержку более широкой аудитории контрибьюторов.
• Упростит и оптимизирует политику разработки.
• Позволит использовать успехи для социального поощрения еще большего количества контрибьюторов.
Первым шагом Flock станет зеркалирование Flutter и оно вроде как уже работает. Сейчас работа с Flock никак не отличается от работы с Flutter, а организаторы привлекают ревьюверов и лидов для работы над платформой.
Android
• Google работает над аналогом Dynamic Island для Android
• Android Compose Accessibility Techniques — лучшие практики доступности
• Кастомный Date and Time picker как в Telegram на Kotlin Jetpack Compose
• Gemini on Android, The story so far
• Compose Performace - Finding Regressions
• How To Create a Parallax Movie Pager In Jetpack Compose
• Koin Annotations 1.4 stable & First 2.0 beta version
• Droidcon Lisbon 2024
• binod.basnet777/automating-versioning-and-apk-naming-in-gradle-for-android-projects-c58e98298ef0">Automating Versioning and APK Naming in Gradle for Android Projects
#android
Крутить и не кусаться
Подборка всех статей и новостей за неделю - ключевые изменения в UIKit и восстановление удаленных сообщений в Telegram, самые весёлые TODO из Android-фреймворка и короткий путь с Senior-ами, инфляция званий, сравнение доходов App Store и Google Play, Yolo на пятирублёвой монете и многое другое. Подключайтесь!
🇿🇼 Apple открывает исследование безопасности Private Cloud Compute
Private Cloud Compute (PCC) — это облачная система, которую Apple разработала для приватной работы искусственного интеллекта. Именно ее Apple использует для обеспечения безопасности запросов Apple Intelligence, когда они должны обрабатываться в облаке.
• Сегодня Apple открыла виртуальную исследовательскую среду для Private Cloud Compute и опубликовала другие материалы для всех исследователей безопасности.
• Виртуальная исследовательская среда - это набор инструментов, позволяющий исследователям проводить собственный анализ безопасности PCC с помощью компьютера Mac.
• Наряду с инструментами, Apple расширяет программу Apple Security Bounty, добавляя в нее вознаграждения за уязвимости, которые демонстрируют нарушение фундаментальных гарантий конфиденциальности и безопасности Private Cloud Compute. Исследователи безопасности, обнаружившие уязвимости, могут заработать до 1 миллиона долларов - эту премию вручат за выполнение в облаке произвольного кода с произвольными правами. За обнаружение менее важных уязвимостей можно получить от $250 до $50 тысяч.
Android
• Пример: взлом покупок в Android-приложении и защита от этого
• Самые весёлые TODO из Android-фреймворка
• Build Stunning Grids in Minutes with LazyVerticalGrid
• Understanding JankStats: Optimizing Your Android App’s Performance
• Rethinking Exception Handling with Kotlin's Result Type
#android
iOS
• Как устроена библиотека AppMetrica
• Фреш на полке, фреш в стеке
• Здесь куют Metal
• Как iOS-разработчику выжить на проекте с KMP?
• Geometrize — изображения из примитивов
• How to Use URLSession with Async/Await for Network Requests in Swift
• Introducing Swift Testing. Traits.
• Getting started with LiteRT (Tensorflow Lite)
• SwiftUI Self-Sizing Flow Layouts
• New in SwiftUI: the macro @Entry
• Xcode’s Stability Is Going Downhill—Anyone Else Struggling?
#ios
Разыгрываю билет на Podlodka iOS Crew
Расскажи в комментариях - какой совет ты бы дал тем, кто только начинает разрабатывать мобильные приложения?
Из ответивших выберу победителя (по количеству лайков, а может случайно, как пойдет).
Видео и подкасты за неделю на @AppFiles
• (iOS Ru)
Как устроена библиотека AppMetrica
• (iOS Ru)
Здесь куют Metal
• (iOS Ru)
Как iOS-разработчику выжить на проекте с KMP?
• (iOS En)
Convert a SwiftUI view to an image
• (iOS En)
Translation API
• (iOS En)
Accessibility - The clock is ticking
• (iOS En)
SwiftUI Bottom Sheet like Apple Music App
• (And Ru)
Android cookbook: готовим WebView правильно
• (And Ru)
Kotlin Coroutines. Устройство и возможности использования
• (And Ru)
Фреш на полке, фреш в стеке
• (And En)
More frequent Android SDK releases, and a look into updates on Android
• (And En)
Navigation In Multi-Module Android Apps
• (And En)
The Ultimate Beginner's Roadmap to Android App Architecture
• (And En)
Dangerous Minds: How we're getting developer education wrong
• (Dev Ru)
От натива до SDUI через гибрид
• (Dev Ru)
Карьера мобильного разработчика 2024
• (Dev Ru)
Разработка в робототехнике — Автоматизация, Автопилоты
• (Dev En)
Google Cloud Digital Leader Certification Course 2024
#ios #android #mobile #video
🇸🇱 Более частые выпуски Android SDK
В будущем Android будет выпускать SDK чаще: в 2025 году запланировано два выпуска с новыми API для разработчиков. Эти релизы помогут быстрее внедрять инновации в приложения и устройства, а также повысят стабильность и качество работы для пользователей и разработчиков.
• В следующем году выпустят один крупный релиз во втором квартале и один минорный релиз в четвертом квартале, оба будут включать новые API для разработчиков.
• Основной релиз Q2 будет единственным релизом в 2025 году, который будет включать изменения поведения, которые могут повлиять на приложения.
• Google планирует выпустить основной релиз во втором, а не в третьем квартале, чтобы лучше согласовать его с графиком выпуска устройств в экосистеме, чтобы больше устройств могли получить основной релиз Android раньше.
• Минорный релиз Q4 будет содержать обновления функций, оптимизации и исправления ошибок с момента выхода основного релиза. Он также будет включать новые API для разработчиков, но не будет содержать никаких изменений в поведении приложений.
• Помимо основных и второстепенных релизов Android, релизы Q1 и Q3 будут содержать инкрементные обновления для обеспечения постоянного качества.
• Чтобы отличить крупные релизы (которые могут содержать запланированные изменения поведения) от минорных, минорные релизы не будут увеличивать уровень API. Вместо этого они будут увеличивать новое значение минорного уровня API, доступ к которому будет осуществляться с помощью константы, которая определяет как основной, так и минорный уровни API. Новый атрибут манифеста позволит вам указать минорный уровень API в качестве минимально необходимой версии SDK для вашего приложения. Начальная версия поддержки минорных уровней API будет представлена в предстоящей предварительной версии Q2.
И что: поскольку крупный релиз выходит во втором квартале, вам нужно будет провести ежегодное тестирование совместимости на несколько месяцев раньше, чем в предыдущие годы, чтобы убедиться, что ваши приложения готовы. В дополнение к тестированию совместимости со следующим крупным релизом вам нужно будет протестировать свои сборки и системы CI с SDK, поддерживающими мажорный и минорный уровни API - некоторые системы сборки (включая сборку Android Gradle) могут потребовать адаптации.
Android
• Compose Unstyled — UI-компоненты Compose Multiplatform
• The beauty of Kotlin Type System
• mkaomwakuni/elevate-your-dependency-injection-game-koin-4-0-unveiled-for-kotlin-developers-468ac1d91862">Elevate Your Dependency Injection Game: Koin 4.0 Unveiled for Kotlin Developers
• Google confirms the Android 16 dessert code-name is Baklava
• More frequent Android SDK releases: faster innovation, higher quality and more polish
#android
💥 2LEADS приглашает тебя на «Баерские посиделки» 💥
Эй, перформанс-маркетинг спецы, User Acquisition гуру, трафик-менеджеры и медиабаеры!
В программе:
💚 Альтернатива для безальтернативных: Вадим Жарновецкий, тимлид медиабаинга агентства 2LEADS, расскажет про различные варианты и возможности закупки трафика в уже ставших привычными источниками по-новому (APK, альт.сторы и т.п.).
💚Фрод в перформанс-маркетинге с точки зрения клиента: Алексей Фомин, Head of Performance marketing Бургер Кинг, расскажет, на что влияет фрод и как с ним работать, исходя из клиентского опыта "Бургер Кинг".
💚Отключить нельзя оставить: Даня Вершинин, Buying Team Lead агентства Go Mobile, расскажет, как работать с трафиком с кастомных клавиатур.
Наши спикеры, представляющие как агентства, так и компании-клиенты, поделятся уникальными перспективами и опытом.
🗓Дата: 7 ноября
🕚Время: 19:00
📍Место: Шмитовский пр., 3, стр. 1
Регистрация 😮
erid: LjN8KWVvx
Реклама ООО"ТУЛИДС" ИНН 6317122270
"Были же люди, как люди и вдруг все сразу стали ИИ. Парадокс” (С) App Store вслед за Google Play планирует внедрить ИИ-суммаризацию в страницы приложений. Докладывают, что Apple разработала новую систему, которая будет использовать все отзывы пользователей в App Store для создания сводки, выделяющей «наиболее распространенные характеристики». Идея заключается в том, чтобы пользователям было проще определить, когда приложение не соответствует тому, что оно обещает в App Store. Поскольку резюме будут генерироваться автоматически, разработчики, по словам Apple, смогут сообщать, когда они считают резюме «неточным». Подробностей о том, когда именно заработает новая функция, пока нет, но, учитывая, что ее уже можно найти в API App Store, предположительно это произойдет очень скоро.
Разработка
• GitHub обновляет Copilot
• Более четверти нового кода в Google создается ИИ
• Using an 8K TV as a monitor
• On One-on-Ones - Insights From 1,500 Meetings
Маркетинг и монетизация
• App Store будет показывать сводку отзывов, сделанную ИИ
Кроссплатформа
• Kotlin Multiplatform Development Roadmap for 2025
• Using Vertex AI in a Compose/Kotlin Multiplatform project
• I built a web app with Flutter and this is how I feel about it
• Yellowtoast/breaking-up-with-getx-know-the-facts-before-you-judge-f298d32cdfe7">Breaking Up with GetX: Know the Facts Before You Judge
#mobile #dev
iOS
• Paralayout — пиксельно идеальная верстка в iOS
• Installing and Using Copilot in Xcode: AI Code Completion
• The Strategy Pattern
• Problematic Swift Concurrency Patterns
• Introducing Swift Testing. Lifecycle.
• Implement blurring when multitasking in SwiftUI
#ios
🔨 + 🧑✈️ Copilot от GitHub наконец-то добрался до Xcode. Сегодня на конференции Universe анонсировали ряд крупных новинок, включая проект Spark для написания приложений полностью ИИ, а также поддержку нескольких моделей для Copilot. Но для нас самое интересное - интеграция в главную IDE. Пока основное внимание уделяется завершению кода, но Copilot Chat и другие его функции, вероятно, со временем появятся в Xcode. Конечно, хотя сам Copilot никогда не поддерживал Xcode, мы видели несколько проектов, таких как расширение CopilotForXcode, которые использовали API GitHub, чтобы принести завершение кода Copilot в Xcode. Кроме того, сама Apple говорит о собственных ИИ-инструментах для разработчиков. Так что скоро у нас будет конкуренция и в этой области.
Разработка
• How to build the perfect mobile release train
• Amphion: OS audio, music & speech generation toolkit
Маркетинг и монетизация
• Маркетологи в мобайле: Любовь Бондарева (Rostic’s)
• My 9 Favorite Growth Framework
Кроссплатформа
• Создан Flock — форк Flutter
• Пробуем Flutter в Telegram Mini Apps: Насколько хорошее решение для разработки?
• React Native полностью переделан
• How to Migrate from Dagger 2 / Hilt to Koin for KMP
• Architect Your React Native app to handle Millions of Users and Large Development Teams
• koreshreyash/inspektor-multiplatform-http-inspection-library-for-ktor-6c78ae5e5661">Inspektor — Multiplatform HTTP inspection library for KTOR
iOS
• Copilot появился в Apple Xcode
• Реализуем Face ID аутентификацию в iOS-приложении
• Swift TaskGroup на примерах
• Making illegal states unrepresentable
• Measuring View Visibility Percentage in SwiftUI Using PreferenceKeys
• Using the #require macro for Swift Testing
• batrakov.vitaly/coordinators-swiftui-569a7f9a22c6">Coordinators & SwiftUI
#ios
Ребята из Emerge Tool разобрались в том, как и почему отличаются размеры приложений для Android и iOS. Действительно, на первый взгляд, например, Gmail в Google Play весит 34 Мб, а в App Store 547. Резонный вопрос - что за фигня? Но все не так просто. Начиная с того, что Play указывает размер скачиваемого пакета, а App Store - установленного. Заканчивая разницей в языках, платформах, слайсинге и некоторых других технологиях. В общем, если вам интересно - прочитайте разбор от Emerge и больше не жалуйтесь ☺️
Разработка
• Правда ли, что приложения для Android намного меньше, чем для iOS?
• Обзор Lenovo ThinkBook Plus Gen 5 Hybrid: больше безумных ноутбуков!
• Backend vs Frontend: сравниваем опыт разработчиков — что сложнее, перспективнее и кому больше платят
• Grafana: инструкция по применению
• Тесты с душком
• Как писать библиотеки: проектирование API, обратная совместимость
• ИИ Anthropic теперь может писать и выполнять код
• Write code that is easy to delete, not easy to extend
• Investigation of a Workbench UI Latency Issue
Маркетинг и монетизация
• Как я использовал Keynote для создания скриншотов и роликов для App Store
• Приложение Screenable превращает любой iPhone в стартовый телефон для детей
Кроссплатформа
• Шеринг файлов локализации между несколькими пакетами в Flutter
• sys.int64/flutter-raii-simplifying-resource-management-in-your-apps-8d7cc5e46f8b">Flutter RAII: Simplifying Resource Management in Your Apps
iOS
Обратите внимание - Apple обновила TestFlight несколькими новыми фичами.
• Apple обновляет TestFlight
• CoreDataEvolution — безопасная многопоточность для Core Data
• Избавляемся от Context в бизнес логике — как ответить на собеседовании
• Apple открывает исследование безопасности Private Cloud Compute
• App development on iPad
• Why is xcodebuild slower than the Xcode GUI?
• Understanding actors in Swift
• Implement Face ID Authentication in the iOS App
• Simplify Your iOS CI with Makefiles
#ios
Видео и подкасты за неделю на @AppFiles
• (iOS En)
CocoaHeadsNL Meetup
• (iOS En)
Google Engineer Teaches Us How to Set Up Firebase in Your iOS Project
• (iOS En)
App-Wide Overlays | SwiftUI
• (iOS En)
MockData, PreviewModifiers and PreviewTraits in SwiftUI
• (And Ru)
Избавляемся от Context в бизнес логике — как ответить на собеседовании
• (And En)
Studio Jewelry - Android Developers Backstage
• (And En)
How to Migrate Your App to Support the NEW Predictive Back Gestures On Android
• (And En)
How to Implement Image Compression On Android
• (And En)
Practical Tips and Tricks to Improve Your Compose Previews
• (Dev Ru)
Backend vs Frontend: сравниваем опыт разработчиков — что сложнее, перспективнее и кому больше платят
• (Dev Ru)
Grafana: инструкция по применению
• (Dev Ru)
Тесты с душком
• (Dev Ru)
Как писать библиотеки: проектирование API, обратная совместимость
• (Dev En)
Learn Claude AI – Build Text Summarizers, Image Describers, and More with the Anthropic API
• (Dev En)
Gemma Developer Day Tokyo
#ios #android #mobile #video
🥽 Совершенно ожидаемо Apple начала сворачивать производство Vision Pro и может полностью прекратить выпуск текущей версии устройства еще до конца 2024 года. По многочисленным сообщениям, Vision Pro пользуется слабым спросом из-за недостаточного количества контента и высокой цены. Как пишут, поставщики Vision Pro уже произвели достаточно компонентов для 500-600 тысяч гарнитур. Некоторые фабрики приостановили производство компонентов Vision Pro еще в мае, основываясь на слабых прогнозах Apple по продажам, и склады по-прежнему заполнены десятками тысяч непоставленных деталей. Apple, по всей видимости, приостановила работу над вторым поколением Vision Pro как минимум на год, чтобы сосредоточиться на разработке более дешевой гарнитуры. Интересно, что Apple говорила поставщикам подготовиться к производству четырех миллионов недорогих гарнитур за весь жизненный цикл будущего продукта. Это вдвое меньше общего количества Vision Pro, которые Apple предполагала произвести, что говорит о том, что ожидания по продажам более дешевой гарнитуры еще ниже.
Разработка
• Задачи с собеседований: Leetcode — Сложите два числа
• Raspberry Pi выпускает новые ИИ-дополнения
• HUGS упрощают развертывание открытых ИИ-моделей
• A New Coding Paradigm: Declarative Domain Programming
Маркетинг и монетизация
• The future of mobile measurement playbook
Кроссплатформа
• React Native – New Architecture is here
• gizemgizgg/deep-linking-integration-with-flutter-7072a621b2ad">Deep Linking Integration with Flutter
iOS
• Вышла бета-версия iOS 18.2 с Apple Intelligence
• Apple может прекратить выпуск Vision Pro к концу 2024 года
• KeyboardKit Pro — кастомные клавиатуры для iOS и iPadOS
• Изменение модели данных CoreData для iOS приложения с iCloud синхронизацией
• Области тьмы: разбираем неочевидные моменты при использовании памяти в Swift
• How I Used Keynote to Create iOS App Screenshots and Preview Videos from the Same File
• Creating view transitions in SwiftUI
• My Journey as an iOS Developer Intern at Teads
• camposbrunocampos/collapsible-headers-in-swiftui-it-took-three-attempts-to-get-it-just-right-9bd63b06d19e">Collapsible Headers in SwiftUI: It Took Three Attempts to Get It Just Right
#ios