AppFiles - Mobile Development
2.16K subscribers
3.03K photos
41 videos
12 files
4K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
FSNotes - менеджер заметок для macOS/iOS

FSNotes — современный менеджер заметок для macOS и iOS.

Основные фичи iOS-версии:

• Синхронизация через iCloud Drive
• 3D Touch и настраиваемая клавиатура
• Контейнеры TextBundle и EncryptedTextBundle
• Закрепленные заметки, синхронизированные с настольным приложением
• Динамические шрифты
• Темный режим
• Расширение для обмена файлами
• Поддержка зашифрованных заметок
• Поддержка зашифрованных папок
• Интеграция с Git
• Создание веб-страниц

FSNotes на GitHub: https://github.com/glushchenko/fsnotes
Платформа: iOS
⭐️: 7.3K

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
5.webm
227.8 KB
Создано в Compose: диск выбора месяца в Airbnb

В одном из прошлых обновлений Airbnb добавил в приложение циферблат выбора месяца, позволяющий пользователям самым удобным способом выбирать время. Давайте научимся воссоздавать это с помощью моей библиотеки ChromaDial.

Статья: https://apptractor.ru/info/news/sozdano-v-compose-disk-vybora-mesyatsa-v-airbnb.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Анимируем зачеркивание текста в SwiftUI

В процессе работы над одним из наших внутренних инструментов мы обнаружили, что в дизайне необходимо было «зачеркивать» выполненные задачи в списках дел, добавляя приложению немного игривости и физической выразительности. SwiftUI предоставляет модификатор зачеркивания, но он не анимируется. Для нашего инструмента мы хотели, чтобы создавалось ощущение физического рисования, когда текст зачеркивается от одного конца до другого. Сначала это казалось простой функцией, но при попытке реализовать её правильно всё оказалось гораздо сложнее.

Статья: https://apptractor.ru/info/articles/animiruem-zacherkivanie-teksta-v-swiftui.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Material Design 3 Skill for Claude Code - навык языка дизайна для ИИ

Material Design 3 Skill for Claude Code помогает ИИ в создании пользовательского интерфейса, совместимого с MD3, с правильными токенами дизайна, компонентами, темами оформления, макетами и доступностью. Основное внимание уделяется Jetpack Compose — MaterialTheme, композабл элементам Material 3, адаптивным макетам, edge-to-edge и текущим паттернамMaterial3 в Compose.

Также рассматривается Flutter (useMaterial3, ColorScheme.fromSeed и т. д.) на второстепенном уровне, а Web (@material/web) документирован как ограниченный путь: Material Web находится в режиме поддержки, а M3 Expressive не реализован в Web.

Есть режим аудита соответствия MD3, который оценивает приложения по 10 категориям (работает для Compose/Kotlin, Flutter/Dart и web/CSS).

Охватывает M3 Expressive (май 2025 г.) с явной матрицей для каждой платформы.

Material Design 3 Skill for Claude Code на GitHub: https://github.com/hamen/material-3-skill
Платформа: Android
⭐️: 771

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
The Xcode build system has crashed, или Почему рекурсия — это плохо. Используем swift‑build со своими патчами

Представьте ситуацию: вы работаете в огромном проекте, где количество модулей давно перевалило за тысячу. Вы решаете обновиться до свежего Xcode 26.2, ожидая прироста производительности, но вместо заветного «Build Succeeded» получаете молчаливое падение: SWBBuildService quit unexpectedly.

Статья: https://habr.com/ru/companies/yandex/articles/1024298/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Time Profiler в Xcode Instruments: повышение производительности с помощью ИИ

Сегодня у нас невероятно быстрые устройства. Это кажется излишним, и это правда: потребность в профилировании снизилась. Однако я искренне верю, что мы можем значительно улучшить и повысить производительность наших приложений, если будем регулярно обращаться к Xcode Instruments. Хорошая новость в том, что вам больше не нужно проводить анализ самостоятельно: в этом могут помочь ИИ-агенты.

Статья: https://apptractor.ru/info/articles/time-profiler-v-xcode-instruments-povyshenie-proizvoditelnosti-s-pomoschyu-ii.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
MarkupEditor - WYSIWYG редактор для SwiftUI и UIKit

MarkupEditor - WYSIWYG-редактор для SwiftUI и UIKit. Поддерживает представление абзаца или заголовка с предопределенным размером шрифта, маркированные и нумерованные списки, отступы, форматирование (жирный шрифт, курсив, подчеркивание, код, зачеркивание, нижний и верхний индексы), 
встраивание изображений, таблиц и ссылок. Не поддерживает цвет текста и фона, изменение размера шрифта. Если вам нужен более богатый набор функций, вы можете самостоятельно расширить MarkupEditor.

Как работает на самом деле

MarkupEditor отображает вам HTML-документ во время редактирования. Он использует библиотеку JavaScript ProseMirror для изменения базового DOM и колбеки Swift при взаимодействии с документом. MarkupEditor не знает, как сохранить ваш документ или преобразовать его в какой-либо другой формат. Это то, что должно будет сделать ваше приложение, использующее библиотеку. MarkupEditor будет сообщать вашему MarkupDelegate об изменении состояния базового документа, и вы сможете использовать эти уведомления для сохранения и, возможно, преобразования HTML в другую форму.

MarkupEditor на GitHub: https://github.com/stevengharris/MarkupEditor
Платформа: iOS
⭐️: 454

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Unidirectional Data Flow архитектура

В inDrive  написали новую статью про архитектуру в iOS. В ней подробно разобрали реальный кейс: как в компании перевели большой проект с UDF-архитектуры на Clean Architecture. Со всеми практическими нюансами, компромиссами и проблемами, с которыми столкнулись по пути. Статья показывает, как принимать архитектурные решения в уже большом проекте, когда UDF перестает масштабироваться. Особо задорно то, что раньше у inDrive  было много материалов о том, как у них хорошо работает UDF, а здесь уже честный разбор следующего этапа, так сказать.

Статья: 🇺🇸 https://medium.com/indriver-tech/udf-to-clean-architecture-ios-indrive-e426f1f7ec65
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Android и AccessibilityService: защита чувствительных экранов от чтения интерфейса

При обсуждении защиты чувствительных экранов в Android обычно имеют в виду механизмы защищённого вывода изображения. На практике разработчик чаще всего сталкивается с WindowManager.LayoutParams.FLAG_SECURE и близкими средствами платформы, которые запрещают создание обычных скриншотов, ограничивают вывод окна на небезопасные внешние дисплеи и в ряде сценариев затрудняют захват содержимого экрана системными средствами. Для отдельных поверхностей аналогичная защита может применяться и на уровне SurfaceView. Такой слой важен для экранов, где отображаются платёжные данные, одноразовые коды, персональная информация и другие чувствительные сведения.

Статья: https://habr.com/ru/companies/hex_team/articles/1025368/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
📺 Видео и подкасты за неделю

(iOS En) Все видео try! Swift Tokyo 2026
(iOS En) iOS 26 Custom Animated Keyboard ToolBar Using SwiftUI
(iOS En) Liquid Glass Toasts Using SwiftUI
(iOS En) Q&A: Swift concurrency
(iOS En) Prepare your app for Accessibility Nutrition Labels
(And En) How to build apps faster with Android Studio Panda
(And En) Beginner Course for AI-Assisted Android Development
(And En) Kotlin Flows: Buffer, Conflate, and Debounce
(And En) AI-Driven APG 9 Migration using Android Skills and Firebender - KMP Project
(Dev Ru) Когда API-ключ ушел в свободное плавание: атаки мобильных приложений глазами хакера
(Dev Ru) Хотел делать игры, а стал руководить тимлидами в Авито
(Dev Ru) Как копилот генерит код? Идем под капот
(Anl Ru) Каузальность — почему корреляция врёт, статистика, A/B тесты
(Dsg En) I've Tried the New Claude Design Tool to Create a PL Coding App
(Dsg En) Meet DESIGN.md: A new open standard for AI-generated UI
(Mrk En) Why Nobody Downloads Your App

Прошлогодние видео:

(iOS Ru) Работа в Booking, жизнь в Амстердаме, автогонки в Европе
(iOS Ru) Многопоточность с нуля на примере пиццы
(iOS Ru) Организация и поддержка нативных UI-тестов в iOS
(And Ru) Разработка SDK
(And Ru) Прожарка на код-ревью от Яндекса
(And Ru) Алиса, открой багажник!
(And Ru) Зачем нужен виртуальный дисплей в Android
(And Ru) Находим и увольняем low-перформеров
Please open Telegram to view this post
VIEW IN TELEGRAM
Jetpack Compose — обновление апреля 2026

Google выпустил очередное обновление Jetpack Compose 1.11 - это уже не просто апдейт, а ещё один шаг к окончательному закреплению Compose как основного способа создания UI на Android.

В новой версии заметно усилили стабильность. Всё меньше API остаются экспериментальными, а переходы между версиями становятся более предсказуемыми и безопасными. Это важный сигнал для продакшена: Compose окончательно выходит из стадии «осторожного внедрения» и превращается в стандарт де-факто.

Отдельный акцент сделан на производительности. Улучшения затронули recomposition, работу layout и поведение списков. Интерфейсы стали работать плавнее, особенно в сложных сценариях с большим количеством элементов на экране. Это как раз тот тип изменений, который не всегда видно в changelog, но отлично ощущается в реальных приложениях.

Параллельно развивается и сам UI-слой. Компоненты становятся более гибкими, анимации — более управляемыми, а Material 3 продолжает укрепляться как основа дизайна. Всё это делает Compose более универсальным инструментом, который подходит не только для простых экранов, но и для сложных продуктовых интерфейсов.

Интересно, что Google всё активнее двигается в сторону поддержки разных форм-факторов. Compose всё лучше адаптируется под большие экраны, складные устройства и другие нестандартные сценарии. Это отражает общее направление Android — уход от «только смартфонов» к более широкой экосистеме устройств.

Не забыли и про удобство разработчиков. Инструменты становятся стабильнее, интеграция с Android Studio — глубже, а работа с UI — более предсказуемой. Compose постепенно теряет ощущение «магии» и превращается в понятный и контролируемый инструмент.

Статья: 🇺🇸 https://android-developers.googleblog.com/2026/04/jetpack-compose-april-2026-updates.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Pulsar - библиотека тактильной обратной связи

Pulsar  - SDK для тактильной обратной связи (haptic feedback) для iOS, Android и React Native. Pulsar предоставляет готовые к использованию предустановки тактильной обратной связи, редактор паттернов для создания кастомных последовательностей и редактор в реальном времени для конструирования обратной связи для жестов.

Фичи:

• Предустановки — библиотека встроенных паттернов (молоток, лай собаки, жужжание, пульсация) и стилей (удары, уведомления, выделение)
• Композитор паттернов — Определение кастомных тактильных паттернов с использованием дискретных событий и непрерывных амплитудно-частотных огибающих
• Композитор в реальном времени — Управление амплитудой и частотой в реальном времени для тактильной обратной связи, управляемой жестами
• Кроссплатформенность — Единый API для iOS (Swift), Android (Kotlin) и React Native (TypeScript)
• Совместимость с ворклетами — Все функции предустановок React Native и методы хуков работают внутри ворклетов Reanimated

Pulsar на GitHub: https://github.com/software-mansion/pulsar
Платформа: iOS/Android
⭐️: 231

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Paging 3 хорош. Пока вам не понадобится что-то ещё

Если коротко: пагинация — это когда вы не грузите 100 000 товаров из каталога одним запросом, а показываете их страницами по 20–50 штук и подгружаете следующую порцию, когда пользователь домотал до конца.

Звучит как задача на полдня. На практике — по-разному.

Статья: https://habr.com/ru/articles/1027320/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Мессенджер на Paginator. Боевые задачи

В прошлой статье я сравнивал Paginator с Paging 3 на кошачьем уровне: «вот простой фид, смотрите — три строки вместо тридцати». Это полезно для первого знакомства, но не отвечает на главный вопрос: а как оно себя поведёт, когда продукт начнёт требовать то, ради чего люди обычно и пишут свой велосипед поверх Paging 3?

Статья: https://habr.com/ru/articles/1027686/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание изменяемого циферблата в стиле Ferrari с помощью Compose Multiplatform

Я высоко ценю дизайн, выходящий за рамки функциональности — тот, в котором чувствуется замысел, стоящий за каждой деталью. Поэтому, когда Ferrari представила концепт информационно-развлекательной системы Luce, созданный в сотрудничестве с дизайн-студией Джони Айва LoveFrom, я остановил скроллинг. Показанная приборная панель была не просто красивой — это был отличный пример лаконичного дизайна в сочетании с восхитительными анимациями. Один элемент особенно привлек мое внимание: единый круглый циферблат, плавно трансформирующийся из часов в секундомер и компас. Минималистично, уверенно и дотошно изысканно.

Статья: https://apptractor.ru/info/articles/sozdanie-izmenyaemogo-tsiferblata-v-stile-ferrari-s-pomoschyu-compose-multiplatform.html
Платформа: Android/кроссплатформа

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Waveform - визуализация звука

Waveform - современная библиотека Android на основе Jetpack Compose для визуализации аудиоволн, хода воспроизведения и интерактивного выбора или сегментирования аудиоклипов.

Фичи:

• Визуализация графиков: отображение линейных и столбчатых диаграмм для данных об амплитуде звука
• Визуализатор воспроизведения: отображение прокручиваемой, центрированной волновой формы, синхронизированной с воспроизведением звука
• Инструмент сегментации звука: выбор нескольких аудиосегментов с помощью интуитивно понятного интерфейса временной шкалы
• Выбор аудиосегмента: масштабирование областей волновой формы и точная настройка отдельного сегмента

Waveform на GitHub: https://github.com/karya-inc/Waveform
Платформа: Android
⭐️: 12

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Flutter после увольнений: вот честная оценка, которую никто не хочет давать

В апреле 2024 года Google уволил инженеров из команд Flutter, Dart и Python — за несколько недель до Google I/O, конференции, где они годами объявляли о светлом будущем Flutter.

Никто из Google не подтвердил точное количество. CNBC сообщило о примерно 200 сотрудниках во всех командах. Кевин Мур, менеджер по продуктам Flutter, через несколько часов написал на Reddit: «Flutter и Dart пострадали не больше и не меньше, чем другие. Это был тяжёлый день».

Сообщество читало между строк ещё несколько недель.

А затем произошло нечто интересное: Flutter продолжил выпускать релизы. Impeller стал стабильным. Dart 3.x вышел. Дорожная карта на 2024 год была выпущена практически без изменений. Два года спустя Flutter работает в продакшене в BMW, Alibaba и eBay. Опрос Stack Overflow 2024 показал, что Flutter используется в кроссплатформенных фреймворках на уровне 46%, опережая React Native с 35%.

Так что кризис закончился, верно? Те, кто говорил, что «Flutter мертв», ошибались, заверения были точными, и у истории счастливый конец?

Я не думаю, что все так просто. И я думаю, что разработчики, принявшие любой из выводов — «Flutter кончился» или «Flutter в полном порядке» — совершили ошибку, которая их еще настигнет.

Статья: https://apptractor.ru/info/articles/flutter-posle-uvolneniy-vot-chestnaya-otsenka-kotoruyu-nikto-ne-hochet-davat.html
Платформа: кроссплатформа/Flutter

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1💩1
AgentRunKit - SDK для создания агентов

AgentRunKit - Swift 6 SDK, предназначенный для создания агентов на основе LLM с типобезопасным вызовом инструментов.

Фичи:

• Циклы работы агентов с настраиваемыми ограничениями по количеству итераций и бюджетами токенов
• Потоковая передача данных с использованием AsyncThrowingStream и обертки SwiftUI с аннотацией @Observable
• Типобезопасные инструменты с проверкой JSON-схемы на этапе компиляции
• Композиция суб-агентов с контролем глубины и распространением потоковой передачи
• Управление контекстом: автоматическое сжатие, очистка, бюджеты токенов
• Структурированный вывод с ограничениями JSON-схемы
• Мультимодальный ввод: изображения, аудио, видео, PDF
• Преобразование текста в речь с одновременным разбиением на фрагменты и конкатенацией MP3
• Клиент MCP: передача stdio, обнаружение инструментов, JSON-RPC
• Поддержка расширенной модели мышления/рассуждения

AgentRunKit на GitHub: https://github.com/Tom-Ryder/AgentRunKit
Платформа: iOS
⭐️: 18

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Динамические product flavors в Android: когда статической конфигурации уже мало

Рано или поздно каждый Android‑разработчик сталкивается с задачей «одно приложение — много сборок»: white‑label‑решения, региональные версии, отдельные сборки для разных магазинов приложений, демо для клиентов, внутренние окружения.

Встроенный механизм product flavors в Android Gradle Plugin отлично справляется со своей задачей — пока количество вариантов умещается в голове и в паре экранов build.gradle.kts.

Когда же flavors становится много и каждый отличается не только applicationId, но и набором фич, ключами аналитики и доступностью в конкретном магазине, поддерживать всё это руками уже невозможно.

В этой статье разбирается подход, при котором конфигурация flavors строится динамически: список вариантов и их параметры живут вне build.gradle.kts.

Статья: https://habr.com/ru/articles/1027280/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Декларативные адаптивные макеты: использование метаданных Nav3 для многопанельного пользовательского интерфейса

В мире Android-разработки «адаптивная вёрстка» (Adaptive Layout) перестала быть роскошью — теперь это необходимость. С появлением складных устройств и девайсов с большими экранами приложениям уже недостаточно просто растягиваться — им нужно перестраивать свою структуру UI.

Традиционно реализация сценариев вроде List-Detail или Supporting Pane требовала большого количества бойлерплейта: проверки классов window size, ручное управление back stack и обработка условной логики интерфейса. Nav3 — современный подход к навигации от Google — предлагает новый способ моделирования адаптивного UI через метаданные навигации.

Статья: https://apptractor.ru/info/articles/nav3.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
ConsultMe - шаблон Compose-проекта со Spotless, Detect и Lint

ConsultMe — это шаблонный проект для приложений на Jetpack Compose, включающий интегрированные инструменты для проверки качества кода и автоматизации. Он включает в себя:

• Spotless: автоматическое форматирование и линтинг кода
• Detekt: статический анализ кода
• Lint: линтинг кода Kotlin и Compose

Особенности

• Полностью настроен для Jetpack Compose и многомодульной архитектуры
• Включены и предварительно настроены инструменты проверки качества кода
• 100% кодовая база на Kotlin с использованием корутин и Flow
• Внедрение зависимостей с помощью Hilt

ConsultMe на GitHub: https://github.com/Tarek-Bohdima/ConsultMe
Платформа: Android
⭐️: 20

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM