Опенсорсим yx_navigation — декларативную навигацию для Flutter
Навигация во Flutter — это постоянные компромиссы. Сначала кажется всё просто:
Статья: https://habr.com/ru/companies/yandex/articles/1032600/
Платформа: кроссплатформа/Flutter
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Навигация во Flutter — это постоянные компромиссы. Сначала кажется всё просто:
push и pop. А потом проект растёт, появляются табы, вложенные модули, диплинки — и выясняется, что каждый следующий экран открывается по‑разному, а pop() в одном месте ведёт себя не так, как в другом. Статья: https://habr.com/ru/companies/yandex/articles/1032600/
Платформа: кроссплатформа/Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
Советы и хитрости Xcode 16: скрытые возможности, которые экономят часы работы
Средний iOS-разработчик, скорее всего, использует лишь 30% того, что на самом деле умеет Xcode 16. А остальные 70%? Они прямо перед глазами — и ждут, чтобы сэкономить вам часы работы.
Если вы обновились до Xcode 16 и подумали: «Да ничего не изменилось», — пристегнитесь. Этот материал для вас.
Статья: https://apptractor.ru/info/articles/sovety-i-hitrosti-xcode-16.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Средний iOS-разработчик, скорее всего, использует лишь 30% того, что на самом деле умеет Xcode 16. А остальные 70%? Они прямо перед глазами — и ждут, чтобы сэкономить вам часы работы.
Если вы обновились до Xcode 16 и подумали: «Да ничего не изменилось», — пристегнитесь. Этот материал для вас.
Статья: https://apptractor.ru/info/articles/sovety-i-hitrosti-xcode-16.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
10 фич Jetpack Compose, которые изменят ваш подход к разработке Android-приложений
Вы всё ещё копируете и вставляете один и тот же шаблонный код Compose, который использовали два года назад? Тогда вы разрабатываете медленнее, чем могли бы. В Jetpack Compose незаметно появлялись всё новые и новые фичи, которые снова делают разработку Android UI увлекательной. И знание этих возможностей превращает хорошее приложение в отличное.
Статья: https://apptractor.ru/info/articles/10-jetpack-compose-features.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Вы всё ещё копируете и вставляете один и тот же шаблонный код Compose, который использовали два года назад? Тогда вы разрабатываете медленнее, чем могли бы. В Jetpack Compose незаметно появлялись всё новые и новые фичи, которые снова делают разработку Android UI увлекательной. И знание этих возможностей превращает хорошее приложение в отличное.
Статья: https://apptractor.ru/info/articles/10-jetpack-compose-features.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
RvSystem Monitor - мониторинг ресурсов на Jetpack Compose и Rust
RvSystem Monitor — это высокопроизводительное приложение для мониторинга Android-системы, сочетающее в себе выразительные возможности Jetpack Compose с исключительной эффективностью Rust. Оно предоставляет информацию об низкоуровневом аппаратном обеспечении, сохраняя при этом современный и невероятно плавный пользовательский интерфейс.
RvSystem Monitor устраняет разрыв между высокоуровневыми фреймворками пользовательского интерфейса и низкоуровневыми системными API. Используя бэкенд на основе Rust, он минимизирует накладные расходы на производительность, обычно связанные с частым опросом файлов ядра, таких как
Созданное с использованием Material 3 Expressive, приложение предлагает визуально насыщенный интерфейс с адаптивными макетами и сложными переходами, что делает системную диагностику одновременно мощной и красивой.
Стек:
• Языки: Kotlin 2.3.21, Rust (Edition 2024), C (via
• Фреймворки: Jetpack Compose (BOM 2026.05.00), Material 3 Expressive, Hilt DI
• Бридж: JNI via
• Инфраструктура: Gradle Kotlin DSL, Android NDK 30.0, Fastlane
• Библиотеки: Retrofit 3.0, OkHttp 5.3, Coil 3.4, Jetpack DataStore
RvSystem Monitor на GitHub: https://github.com/Rve27/RvSystem-Monitor
Платформа: Android
⭐️: 23
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
RvSystem Monitor — это высокопроизводительное приложение для мониторинга Android-системы, сочетающее в себе выразительные возможности Jetpack Compose с исключительной эффективностью Rust. Оно предоставляет информацию об низкоуровневом аппаратном обеспечении, сохраняя при этом современный и невероятно плавный пользовательский интерфейс.
RvSystem Monitor устраняет разрыв между высокоуровневыми фреймворками пользовательского интерфейса и низкоуровневыми системными API. Используя бэкенд на основе Rust, он минимизирует накладные расходы на производительность, обычно связанные с частым опросом файлов ядра, таких как
/proc и /sys. Этот гибридный подход позволяет осуществлять мониторинг частоты ЦП, драйверов графического процессора, состояния батареи и использования памяти в реальном времени без ущерба для быстродействия устройства.Созданное с использованием Material 3 Expressive, приложение предлагает визуально насыщенный интерфейс с адаптивными макетами и сложными переходами, что делает системную диагностику одновременно мощной и красивой.
Стек:
• Языки: Kotlin 2.3.21, Rust (Edition 2024), C (via
libc)• Фреймворки: Jetpack Compose (BOM 2026.05.00), Material 3 Expressive, Hilt DI
• Бридж: JNI via
jni-rs, cargo-ndk• Инфраструктура: Gradle Kotlin DSL, Android NDK 30.0, Fastlane
• Библиотеки: Retrofit 3.0, OkHttp 5.3, Coil 3.4, Jetpack DataStore
RvSystem Monitor на GitHub: https://github.com/Rve27/RvSystem-Monitor
Платформа: Android
⭐️: 23
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
•
(iOS Ru) SwiftUI: Scroll, Text и немного магии•
(iOS Ru) Когда структуры в Swift — не твои бро•
(iOS En) KeyFramed OnBoarding Setup Animation Using SwiftUI•
(iOS En) How to Build an Infinite Scroll List Without Sacrificing Performance•
(iOS En) X App's New Slide Out Menu Using SwiftUI•
(And En) The Android Show | I/O Edition 2026•
(And En) Android Developers Office Hours - Offline First Architecture•
(And En) Why AI could make native app development great again•
(And En) 5 Tricks for Agentic Android Development (Make your agent output what you want!)•
(And En) Beyond LLMs: Kotlin Game AI•
(And En) Your Code is Eating Recompositions - Optimize it with THIS Trick•
(Crs Ru) Кастомим пейнтер через CustomPainter•
(Crs Ru) Мы пилили монолит. Много нас, а он один•
(Crs Ru) Проблемы геймификации мобильного приложения•
(Dev Ru) Новая эра мобильной разработки: запускаем LLM локально на телефоне•
(Dev Ru) От личной продуктивности к командной: сила шаблонизации в IDE•
(Dev Ru) Живая картинка: анимации и эффекты в кроссплатформенном BDUI-движке•
(Dev Ru) Камера в KasperskyOS Mobile•
(Dev Ru) Релокация разработчика в Австралию — Визы, поиск работы в IT, эмиграция•
(Mrk Ru) Структура пейвола, плейсменты и цены — полный разборПрошлогодние видео:
•
(iOS Ru) Учим Metal и image processing лишь бы не верстать на iOS•
(iOS Ru) Race Condition: проблема гонки потоков — что это и как избежать?•
(iOS Ru) Под капотом iOS-крешей•
(iOS Ru) TextField с автодополнением•
(iOS Ru) SwiftUI-навигация: просто, нативно и декларативно•
(iOS Ru) Удивительный мир внутри .ipa•
(iOS Ru) Core Motion framework в финансовых приложениях•
(And Ru) Тестирование Compose по-новому: простота, надежность, гибкость•
(And Ru) Путешествие к центру Композиции•
(And Ru) Scout: новый фреймворк для ускоренного и безболезненного управления зависимостями•
(And Ru) Компиляторные плагины: модификация и анализ Сompose•
(And Ru) Как я code coverage внедрял да Gradle plugin для baseline писалPlease open Telegram to view this post
VIEW IN TELEGRAM
Mission Impossible: как добиться 0 рекомпозиций в сложном кастомном UI
Сотня рекомпозиций в секунду при скролле — это приговор. Приговор батарее устройства, плавности анимаций и вашей репутации как инженера. Мы привыкли мыслить высокоуровневыми абстракциями: закинуть
Статья: https://habr.com/ru/articles/1035388/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сотня рекомпозиций в секунду при скролле — это приговор. Приговор батарее устройства, плавности анимаций и вашей репутации как инженера. Мы привыкли мыслить высокоуровневыми абстракциями: закинуть
LazyColumn, добавить пару Modifier.padding и отправить в продакшен. Но что делать, когда стандартные компоненты начинают "захлебываться", а Layout Inspector горит красным от избыточных отрисовок?Статья: https://habr.com/ru/articles/1035388/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Conduit - единый Swift SDK для LLM инференса
Conduit — это типобезопасный фреймворк Swift для работы с облачными и локальными языковыми моделями через единый API.
Что это вам даёт:
• Быстрый локальный инференс: оптимизирован для Apple Silicon с первоклассной поддержкой MLX
• Типобезопасный структурированный вывод: макросы Swift 6 проверяют сгенерированные формы во время компиляции
• Одна поверхность для нескольких поставщиков: переключение между моделями Claude, GPT-4o и локальными моделями осуществляется с помощью небольшого изменения конфигурации
• Провайдеры на основе акторов: модель параллельного выполнения остаётся явной и потокобезопасной
Conduit на GitHub: https://github.com/christopherkarani/Conduit
Платформа: iOS
⭐️: 96
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Conduit — это типобезопасный фреймворк Swift для работы с облачными и локальными языковыми моделями через единый API.
Что это вам даёт:
• Быстрый локальный инференс: оптимизирован для Apple Silicon с первоклассной поддержкой MLX
• Типобезопасный структурированный вывод: макросы Swift 6 проверяют сгенерированные формы во время компиляции
• Одна поверхность для нескольких поставщиков: переключение между моделями Claude, GPT-4o и локальными моделями осуществляется с помощью небольшого изменения конфигурации
• Провайдеры на основе акторов: модель параллельного выполнения остаётся явной и потокобезопасной
Conduit на GitHub: https://github.com/christopherkarani/Conduit
Платформа: iOS
⭐️: 96
Please open Telegram to view this post
VIEW IN TELEGRAM
Live Activities: как мы сделали обновление без разрешения пользователя
Если вы iOS‑разработчик и планируете внедрять Live Activities в своё приложение — эта статья для вас. Особенно если обновления LA инициируются событиями на сервере, а не действиями пользователя в приложении. Когда пользователь нажимает кнопку или запускает таймер — приложение само знает об этом и может обновить LA напрямую из кода. Но когда банк одобряет кредит или меняется статус заказа — это происходит на бэкенде, и только сервер знает о событии. В таких случаях без пушей не обойтись. Мы наступили на несколько граблей, нашли неочевидное решение и хотим сохранить вам пару недель отладки.
Статья: https://habr.com/ru/companies/banki/articles/1026866/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Если вы iOS‑разработчик и планируете внедрять Live Activities в своё приложение — эта статья для вас. Особенно если обновления LA инициируются событиями на сервере, а не действиями пользователя в приложении. Когда пользователь нажимает кнопку или запускает таймер — приложение само знает об этом и может обновить LA напрямую из кода. Но когда банк одобряет кредит или меняется статус заказа — это происходит на бэкенде, и только сервер знает о событии. В таких случаях без пушей не обойтись. Мы наступили на несколько граблей, нашли неочевидное решение и хотим сохранить вам пару недель отладки.
Статья: https://habr.com/ru/companies/banki/articles/1026866/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Foundation Models в iOS 26: разбор фреймворка для on-device LLM
Речь пойдёт о Foundation Models Framework: что это, как устроено внутри, как с этим работать в реальном приложении и где у этого фреймворка границы применимости. Я постарался не пересказывать документацию Apple, а сосредоточиться на тех моментах, которые не очевидны при первом знакомстве и о которых я бы хотел узнать раньше, чем начал писать первый прототип.
Статья: https://habr.com/ru/articles/1035022/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Речь пойдёт о Foundation Models Framework: что это, как устроено внутри, как с этим работать в реальном приложении и где у этого фреймворка границы применимости. Я постарался не пересказывать документацию Apple, а сосредоточиться на тех моментах, которые не очевидны при первом знакомстве и о которых я бы хотел узнать раньше, чем начал писать первый прототип.
Статья: https://habr.com/ru/articles/1035022/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Swagger-генерация на Android. Часть 1. Каких проблем нам подкинул бекенд и Android проект
Почти любое мобильное приложение общается с бэкендом, а значит живёт по контракту — чаще всего в виде OpenAPI-схемы. Смотреть на неё удобнее всего в Swagger.
Пока проект маленький, изменения в API можно отслеживать вручную. Но по мере роста схемы и команды ручная проверка становится дорогой и начинает регулярно ломаться.
Автогенерация из OpenAPI решает проблему, но в многомодульном Android-проекте всплывают нюансы: где хранить код, как не тянуть лишнее, как вписать сгенерённый код в архитектуру.
Статья: https://habr.com/ru/companies/dododev/articles/974248/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Почти любое мобильное приложение общается с бэкендом, а значит живёт по контракту — чаще всего в виде OpenAPI-схемы. Смотреть на неё удобнее всего в Swagger.
Пока проект маленький, изменения в API можно отслеживать вручную. Но по мере роста схемы и команды ручная проверка становится дорогой и начинает регулярно ломаться.
Автогенерация из OpenAPI решает проблему, но в многомодульном Android-проекте всплывают нюансы: где хранить код, как не тянуть лишнее, как вписать сгенерённый код в архитектуру.
Статья: https://habr.com/ru/companies/dododev/articles/974248/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
12 приёмов SwiftUI, которые ежедневно используют Senior iOS-разработчики
Junior и Senior разработчики используют один и тот же язык, один и тот же фреймворк, но их код выглядит совершенно по-разному. Дело не в опыте. Дело в специфических методах, которые опытные разработчики накопили за годы работы над созданием и внедрением приложений в продашен.
После 4 лет разработки приложений на SwiftUI для клиентов я собрал 12 приемов, которые использую каждый день. Некоторые из них — это малоизвестные функции API. Некоторые — это архитектурные шаблоны. Но все они значительно упростят ваш код.
Статья: https://apptractor.ru/info/articles/12-priyomov-swiftui-kotorye-ezhednevno-ispolzuyut-senior-ios-razrabotchiki.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Junior и Senior разработчики используют один и тот же язык, один и тот же фреймворк, но их код выглядит совершенно по-разному. Дело не в опыте. Дело в специфических методах, которые опытные разработчики накопили за годы работы над созданием и внедрением приложений в продашен.
После 4 лет разработки приложений на SwiftUI для клиентов я собрал 12 приемов, которые использую каждый день. Некоторые из них — это малоизвестные функции API. Некоторые — это архитектурные шаблоны. Но все они значительно упростят ваш код.
Статья: https://apptractor.ru/info/articles/12-priyomov-swiftui-kotorye-ezhednevno-ispolzuyut-senior-ios-razrabotchiki.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
💅1
Switchboard - типобезопасные флаги функций
Switchboard — это готовый к использованию, типобезопасный механизм управления флагами функций для Android. Он использует Kotlin Symbol Processing (KSP) для преобразования простых объявлений свойств в мощную систему конфигурации, дополненную реактивным отладочным интерфейсом и сетевой диагностикой.
Фичи:
• Сквозная типобезопасность: флаги определяются один раз как свойства Kotlin. Доступ к ним возможен в любом месте с полной поддержкой компилятора — никаких «магических строк», никакого ручного приведения типов.
• Дашборд отладки в реальном времени: автоматически генерируемый интерфейс Jetpack Compose для проверки источника каждого флага (удаленный, локальное переопределение или значение по умолчанию) и переключения переопределений на лету.
• Готовые к использованию бэкенды: первоклассная поддержка Firebase Remote Config с реактивными потоками обновления.
• Производительность без рефлексии: KSP генерирует весь код реестра во время компиляции для максимальной эффективности во время выполнения.
• Диагностика сети: Встроенный перехватчик OkHttp, который соотносит каждый сетевой запрос с конкретными флагами функций, управляющими логикой приложения.
• Встряхивание для отладки: Интегрированный жест встряхивания для мгновенного доступа к консоли отладки в непроизводственных сборках.
Switchboard на GitHub: https://github.com/megh-lath-1012/switchboard
Платформа: Android
⭐️: 6
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Switchboard — это готовый к использованию, типобезопасный механизм управления флагами функций для Android. Он использует Kotlin Symbol Processing (KSP) для преобразования простых объявлений свойств в мощную систему конфигурации, дополненную реактивным отладочным интерфейсом и сетевой диагностикой.
Фичи:
• Сквозная типобезопасность: флаги определяются один раз как свойства Kotlin. Доступ к ним возможен в любом месте с полной поддержкой компилятора — никаких «магических строк», никакого ручного приведения типов.
• Дашборд отладки в реальном времени: автоматически генерируемый интерфейс Jetpack Compose для проверки источника каждого флага (удаленный, локальное переопределение или значение по умолчанию) и переключения переопределений на лету.
• Готовые к использованию бэкенды: первоклассная поддержка Firebase Remote Config с реактивными потоками обновления.
• Производительность без рефлексии: KSP генерирует весь код реестра во время компиляции для максимальной эффективности во время выполнения.
• Диагностика сети: Встроенный перехватчик OkHttp, который соотносит каждый сетевой запрос с конкретными флагами функций, управляющими логикой приложения.
• Встряхивание для отладки: Интегрированный жест встряхивания для мгновенного доступа к консоли отладки в непроизводственных сборках.
Switchboard на GitHub: https://github.com/megh-lath-1012/switchboard
Платформа: Android
⭐️: 6
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание адаптивных макетов в Jetpack Compose
Большинство приложений для Android изначально разрабатывались с учетом одного размера экрана: телефона в портретном режиме. Это хорошо для первой версии, но со временем нужно большее.
Ваше приложение может работать на телефонах, планшетах, складных устройствах, ChromeOS, в режиме разделенного экрана и с изменяемым размером окон. Размер одного и того же устройства может меняться во время работы приложения. Складное устройство может открыться. Приложение для планшета может перейти в режим разделенного экрана. Телефон может повернуться.
Статья: https://apptractor.ru/info/articles/sozdanie-adaptivnyh-maketov-v-jetpack-compose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Большинство приложений для Android изначально разрабатывались с учетом одного размера экрана: телефона в портретном режиме. Это хорошо для первой версии, но со временем нужно большее.
Ваше приложение может работать на телефонах, планшетах, складных устройствах, ChromeOS, в режиме разделенного экрана и с изменяемым размером окон. Размер одного и того же устройства может меняться во время работы приложения. Складное устройство может открыться. Приложение для планшета может перейти в режим разделенного экрана. Телефон может повернуться.
Статья: https://apptractor.ru/info/articles/sozdanie-adaptivnyh-maketov-v-jetpack-compose.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Как DoorDash создал систему проверки кода на основе ИИ, к мнению которой инженеры действительно прислушиваются
Многие инженерные организации пытались прикрутить AI-ревьюеров к своим пул-реквестам. Слишком часто такие ревьюеры просто игнорируются. Комментарии многочисленные, рекомендации — слишком общие, и инженеры привыкают пролистывать их.
Мы хотели сделать что-то другое. Последние несколько месяцев мы постепенно разворачивали агента для code review внутри инженерной организации DoorDash. Ключевой проблемой в итоге оказалось внимание: помочь агенту сфокусироваться на тех частях изменений, которые действительно заслуживают пересмотра, и молчать, когда ему нечего полезного добавить.
Планка, которую мы для себя установили, была не в духе «находить проблемы». Критические вопросы были такими:
• Действительно ли инженеры меняют свой код, когда агент оставляет комментарий?
• Сохраняет ли он достаточный уровень доверия, чтобы команды продолжали держать его включённым?
Вот к чему мы пришли.
Статья: https://apptractor.ru/info/articles/kak-doordash-sozdal-sistemu-proverki-koda-na-osnove-ii-k-mneniyu-kotoroy-inzhenery-deystvitelno-prislushivayutsya.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Многие инженерные организации пытались прикрутить AI-ревьюеров к своим пул-реквестам. Слишком часто такие ревьюеры просто игнорируются. Комментарии многочисленные, рекомендации — слишком общие, и инженеры привыкают пролистывать их.
Мы хотели сделать что-то другое. Последние несколько месяцев мы постепенно разворачивали агента для code review внутри инженерной организации DoorDash. Ключевой проблемой в итоге оказалось внимание: помочь агенту сфокусироваться на тех частях изменений, которые действительно заслуживают пересмотра, и молчать, когда ему нечего полезного добавить.
Планка, которую мы для себя установили, была не в духе «находить проблемы». Критические вопросы были такими:
• Действительно ли инженеры меняют свой код, когда агент оставляет комментарий?
• Сохраняет ли он достаточный уровень доверия, чтобы команды продолжали держать его включённым?
Вот к чему мы пришли.
Статья: https://apptractor.ru/info/articles/kak-doordash-sozdal-sistemu-proverki-koda-na-osnove-ii-k-mneniyu-kotoroy-inzhenery-deystvitelno-prislushivayutsya.html
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Actomaton - фреймворк для управления состоянием
Actomaton — это фреймворк для управления состоянием с использованием асинхронного подхода
Actomaton обеспечивает предсказуемый и потокобезопасный подход к управлению состоянием приложения и побочными эффектами в приложениях Swift.
Actomaton на GitHub: https://github.com/Actomaton/Actomaton
Платформа: iOS
⭐️: 262
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Actomaton — это фреймворк для управления состоянием с использованием асинхронного подхода
async/await и Actor на Swift, вдохновленный Elm и swift-composable-architecture.Actomaton обеспечивает предсказуемый и потокобезопасный подход к управлению состоянием приложения и побочными эффектами в приложениях Swift.
Actomaton на GitHub: https://github.com/Actomaton/Actomaton
Платформа: iOS
⭐️: 262
Please open Telegram to view this post
VIEW IN TELEGRAM
Код Telegram iOS — лучший в индустрии. Почему же он так лагает на флагманах?
Telegram — технически самый сложных мессенджер в мире. В iOS приложении 2.1M+ строк, 700+ модулей, 86% Swift, 13 лет кодовой базы, и мало ObjC — это колоссальный труд.
Но при этом приложение лагает на флагманах, AsyncDisplayKit открывает по 10 дублей окон разом(а это явно тормозит ARC), крэши на редактировании изображений стабильны годами.
Почему?
Потому что 86% кода написаны на Swift, но разработчики мыслят все еще в парадигме ООП.
Статья: https://habr.com/ru/articles/1036590/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Telegram — технически самый сложных мессенджер в мире. В iOS приложении 2.1M+ строк, 700+ модулей, 86% Swift, 13 лет кодовой базы, и мало ObjC — это колоссальный труд.
Но при этом приложение лагает на флагманах, AsyncDisplayKit открывает по 10 дублей окон разом(а это явно тормозит ARC), крэши на редактировании изображений стабильны годами.
Почему?
Потому что 86% кода написаны на Swift, но разработчики мыслят все еще в парадигме ООП.
Статья: https://habr.com/ru/articles/1036590/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤪4❤1🔥1💯1
Переезд с XML на Jetpack Compose на проде: базовые классы, архитектура, сложности и готовые решения
Рано или поздно любая растущая кодовая база упирается в потолок своих архитектурных решений. У нас этот момент настал, когда количество экранов выросло до нескольких сотен и команда начала тратить больше времени на борьбу с неконсистентным состоянием UI. Классическая связка XML + ViewBinding + MVVM работала, но с каждым новым экраном мы всё острее чувствовали её ограничения: разрозненные StateFlow, дублирование кода во фрагментах, сложность переиспользования компонентов.
Нужно было что-то менять — пересмотреть сам подход к построению UI. Так мы начали миграцию на Jetpack Compose (который на момент начала перехода уже был стабильным и самодостаточным). Полтора года спустя, пройдя через рефакторинг базовых классов, переход с MVVM на MVI и постепенную замену содержимого всех фрагментов, мы получили стек, на котором разработка ускорилась, а баги, связанные с состоянием экрана, практически исчезли.
Статья: https://habr.com/ru/companies/vk/articles/1036772/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Рано или поздно любая растущая кодовая база упирается в потолок своих архитектурных решений. У нас этот момент настал, когда количество экранов выросло до нескольких сотен и команда начала тратить больше времени на борьбу с неконсистентным состоянием UI. Классическая связка XML + ViewBinding + MVVM работала, но с каждым новым экраном мы всё острее чувствовали её ограничения: разрозненные StateFlow, дублирование кода во фрагментах, сложность переиспользования компонентов.
Нужно было что-то менять — пересмотреть сам подход к построению UI. Так мы начали миграцию на Jetpack Compose (который на момент начала перехода уже был стабильным и самодостаточным). Полтора года спустя, пройдя через рефакторинг базовых классов, переход с MVVM на MVI и постепенную замену содержимого всех фрагментов, мы получили стек, на котором разработка ускорилась, а баги, связанные с состоянием экрана, практически исчезли.
Статья: https://habr.com/ru/companies/vk/articles/1036772/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Как ошибка двухлетней давности привела к тому, что мое Flutter-приложение получило счет за ИИ на €3167
В апреле 2026 года моё Flutter-приложение было представлено на презентации Google Cloud Next’26 для разработчиков в Лас-Вегасе. Три недели спустя я обнаружил, что тот же проект заблокирован за злоупотребление, а за ночь с меня списали 3167 евро за использование Gemini Developer API.
Путь от одного к другому — тема этого поста. Но урок, который из этого следует, гораздо шире, чем мой проект: в эпоху ИИ забытая конфигурация — это кредитная карта, полностью опустошенная ботом за ночь.
Это история о том, как моя конфигурация Firebase привела к утечке данных.
Статья: https://apptractor.ru/info/articles/flutter-3167.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В апреле 2026 года моё Flutter-приложение было представлено на презентации Google Cloud Next’26 для разработчиков в Лас-Вегасе. Три недели спустя я обнаружил, что тот же проект заблокирован за злоупотребление, а за ночь с меня списали 3167 евро за использование Gemini Developer API.
Путь от одного к другому — тема этого поста. Но урок, который из этого следует, гораздо шире, чем мой проект: в эпоху ИИ забытая конфигурация — это кредитная карта, полностью опустошенная ботом за ночь.
Это история о том, как моя конфигурация Firebase привела к утечке данных.
Статья: https://apptractor.ru/info/articles/flutter-3167.html
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Zenith - цифровое благополучие в Material Design 3 Expressive
Zenith — это умный цифровой помощник для поддержания благополучия на Android, созданный с использованием Material Design 3 Expressive. Он использует проактивные методы и мониторинг в реальном времени, чтобы помочь вам избавиться от привычки к бесконечному листанию социальных сетей с плавным и динамичным интерфейсом.
Основные функции:
• Режим защиты: Защищает от приложений, вызывающих привыкание, предоставляя паузы для осознанного использования и ограничивая количество использований за временной период.
• Целеустремленность: Помогает достигать целевых показателей времени использования для конкретных приложений (например, образовательных или приложений для повышения производительности).
• Задержка: Принудительно устанавливает временную задержку (например, 5-10 секунд) перед открытием защищенных приложений, давая мозгу время на переосмысление.
• Умное расписание: Автоматическая блокировка или разрешение приложений на основе заданного расписания.
• Экстренное использование: Система разблокировки с помощью удержания кнопки для экстренного использования при достижении лимитов, с ограниченной квотой.
• HUD сессии: Плавающее наложение, которое прозрачно отображает оставшееся время активной сессии приложения.
• Выразительный дизайн: Создан в соответствии с принципами Material Design 3 Expressive, отличается плавной анимацией и современным интерфейсом.
Zenith на GitHub: https://github.com/1372Slash/Zenith
Платформа: Android
⭐️: 64
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Zenith — это умный цифровой помощник для поддержания благополучия на Android, созданный с использованием Material Design 3 Expressive. Он использует проактивные методы и мониторинг в реальном времени, чтобы помочь вам избавиться от привычки к бесконечному листанию социальных сетей с плавным и динамичным интерфейсом.
Основные функции:
• Режим защиты: Защищает от приложений, вызывающих привыкание, предоставляя паузы для осознанного использования и ограничивая количество использований за временной период.
• Целеустремленность: Помогает достигать целевых показателей времени использования для конкретных приложений (например, образовательных или приложений для повышения производительности).
• Задержка: Принудительно устанавливает временную задержку (например, 5-10 секунд) перед открытием защищенных приложений, давая мозгу время на переосмысление.
• Умное расписание: Автоматическая блокировка или разрешение приложений на основе заданного расписания.
• Экстренное использование: Система разблокировки с помощью удержания кнопки для экстренного использования при достижении лимитов, с ограниченной квотой.
• HUD сессии: Плавающее наложение, которое прозрачно отображает оставшееся время активной сессии приложения.
• Выразительный дизайн: Создан в соответствии с принципами Material Design 3 Expressive, отличается плавной анимацией и современным интерфейсом.
Zenith на GitHub: https://github.com/1372Slash/Zenith
Платформа: Android
⭐️: 64
Please open Telegram to view this post
VIEW IN TELEGRAM
Про BDUI грабли на примере простого опросника, который не так прост, как кажется
Однажды у нас появилась задача, которая (на первый взгляд) выглядела очень простой: сделать опросник в приложении. На макетах всего лишь пара экранов, несколько вопросов, кнопка «Далее». Всё красиво, не сухо, с картинками у вариантов ответа и нормальной подачей, а не в формате «Заполните обязательные поля».
Статья: https://habr.com/ru/companies/alfa/articles/1036748/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Однажды у нас появилась задача, которая (на первый взгляд) выглядела очень простой: сделать опросник в приложении. На макетах всего лишь пара экранов, несколько вопросов, кнопка «Далее». Всё красиво, не сухо, с картинками у вариантов ответа и нормальной подачей, а не в формате «Заполните обязательные поля».
Статья: https://habr.com/ru/companies/alfa/articles/1036748/
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Горячая перезагрузка AGSL-шейдеров без пересборки: пошаговое руководство для Compose
В этой статье вы изучите пример мыльного пузыря и точно определите, какие параметры можно настраивать врантайме, почему строка
Статья: https://apptractor.ru/info/articles/goryachaya-perezagruzka-agsl-sheyderov-bez-peresborki-poshagovoe-rukovodstvo-dlya-compose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В этой статье вы изучите пример мыльного пузыря и точно определите, какие параметры можно настраивать врантайме, почему строка
remember(SHADER_SRC) обеспечивает распространение изменений шейдера на запущенную программу, как спецификации анимации на стороне Kotlin сглаживают переходы при изменении числа и какие классы редактирования по-прежнему требуют полной пересборки.Статья: https://apptractor.ru/info/articles/goryachaya-perezagruzka-agsl-sheyderov-bez-peresborki-poshagovoe-rukovodstvo-dlya-compose.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM