Встроенный фото-пикер в Jetpack Compose
Встроенный фото-пикер — это не «кастомный интерфейс галереи». Это системный инструмент выбора фотографий, отображаемый внутри вашей иерархии UI, обладающий теми же свойствами безопасности и конфиденциальности, что и классический инструмент выбора, поскольку система отрисовывает его в выделенном SurfaceView (внутренне подключаемом через
Статья: https://apptractor.ru/info/articles/vstroennyy-foto-piker.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Встроенный фото-пикер — это не «кастомный интерфейс галереи». Это системный инструмент выбора фотографий, отображаемый внутри вашей иерархии UI, обладающий теми же свойствами безопасности и конфиденциальности, что и классический инструмент выбора, поскольку система отрисовывает его в выделенном SurfaceView (внутренне подключаемом через
SurfaceView.setChildSurfacePackage). Именно это архитектурное решение открывает ключевой сдвиг в продукте: пользователь остается на вашем экране во время просмотра и выбора, а ваше приложение может реагировать на обновления выбора в реальном времени, поскольку ваша активити остается рабочей.Статья: https://apptractor.ru/info/articles/vstroennyy-foto-piker.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Внедряем Yandex MapKit SDK в SwiftUI приложение. Пишем Demo проект
Сегодня я поделюсь с вами пошаговым планом создания демо приложения на SwiftUI с использованием Yandex MapKit SDK.
Статья: https://habr.com/ru/articles/1010642/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня я поделюсь с вами пошаговым планом создания демо приложения на SwiftUI с использованием Yandex MapKit SDK.
Статья: https://habr.com/ru/articles/1010642/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Copy-On-Write в Swift: семантика, заблуждения и кастомная реализация
Понимание того, как работает этот механизм, дает практические преимущества. Оно проясняет, как коллекции Swift достигают своих характеристик производительности, улучшает понимание поведения памяти и позволяет проектировать пользовательские структуры данных, которые сочетают семантику значений с эффективным управлением памятью.
В этой статье рассматривается проектирование хранилища с механизмом копирования при записи в Swift, модели мышления, которые разработчики часто используют при рассуждениях об этом, и практическая реализация пользовательского контейнера COW.
Статья: https://apptractor.ru/info/articles/copy-on-write-v-swift-semantika-zabluzhdeniya-i-kastomnaya-realizatsiya.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Понимание того, как работает этот механизм, дает практические преимущества. Оно проясняет, как коллекции Swift достигают своих характеристик производительности, улучшает понимание поведения памяти и позволяет проектировать пользовательские структуры данных, которые сочетают семантику значений с эффективным управлением памятью.
В этой статье рассматривается проектирование хранилища с механизмом копирования при записи в Swift, модели мышления, которые разработчики часто используют при рассуждениях об этом, и практическая реализация пользовательского контейнера COW.
Статья: https://apptractor.ru/info/articles/copy-on-write-v-swift-semantika-zabluzhdeniya-i-kastomnaya-realizatsiya.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
NVActivityIndicatorView - индиакторы загрузки
NVActivityIndicatorView - коллекция потрясающих анимаций загрузки. Больше 30 вариантов показать, что ваш контент загружается.
NVActivityIndicatorView на GitHub: https://github.com/ninjaprox/NVActivityIndicatorView
Платформа: iOS
⭐️: 10.7K
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
NVActivityIndicatorView - коллекция потрясающих анимаций загрузки. Больше 30 вариантов показать, что ваш контент загружается.
NVActivityIndicatorView на GitHub: https://github.com/ninjaprox/NVActivityIndicatorView
Платформа: iOS
⭐️: 10.7K
Please open Telegram to view this post
VIEW IN TELEGRAM
Ой, всё упало: 4+ способа достать креш-отчет с iOS-приложения
Если привести аналогии, то логи — это жалобная книга, а креш‑отчет — это заключение судмедэксперта. В нём написано точное время смерти, причина и состояние памяти устройства в последний момент жизни приложения.
Для тестировщиков поймать креш и не допустить его до прода — это как для сапёра обезвредить мину раньше, чем на неё наступят. Работу можно сделать и после взрыва, но цена вопроса уже совсем другая. Сегодня я расскажу о 4+ проверенных способах собрать информацию о креше: от уже знакомых нам способов из предыдущей статьи до продвинутых систем мониторинга.
Статья: https://habr.com/ru/articles/1011212/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Если привести аналогии, то логи — это жалобная книга, а креш‑отчет — это заключение судмедэксперта. В нём написано точное время смерти, причина и состояние памяти устройства в последний момент жизни приложения.
Для тестировщиков поймать креш и не допустить его до прода — это как для сапёра обезвредить мину раньше, чем на неё наступят. Работу можно сделать и после взрыва, но цена вопроса уже совсем другая. Сегодня я расскажу о 4+ проверенных способах собрать информацию о креше: от уже знакомых нам способов из предыдущей статьи до продвинутых систем мониторинга.
Статья: https://habr.com/ru/articles/1011212/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Как заставить Android Studio ругаться на код по вашим правилам: создаем пользовательские Lint и Detekt
Сегодня поговорим о том, как заставить Android Studio самостоятельно следить за порядком в коде – без ручных проверок и без вечных напоминаний в командном чате.
Статья: https://habr.com/ru/companies/sovcombank_technologies/articles/1005922/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня поговорим о том, как заставить Android Studio самостоятельно следить за порядком в коде – без ручных проверок и без вечных напоминаний в командном чате.
Статья: https://habr.com/ru/companies/sovcombank_technologies/articles/1005922/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Remote Compose: назад в будущее
«Дороги? Куда мы едем, дороги не нужны».
И, судя по всему, там, куда мы идем, нам не нужны обновления приложений для изменения пользовательского интерфейса. Давайте вернемся в будущее и посмотрим, что может предложить Remote Compose.
Статья: https://apptractor.ru/info/articles/remote-compose-nazad-v-buduschee.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
«Дороги? Куда мы едем, дороги не нужны».
И, судя по всему, там, куда мы идем, нам не нужны обновления приложений для изменения пользовательского интерфейса. Давайте вернемся в будущее и посмотрим, что может предложить Remote Compose.
Статья: https://apptractor.ru/info/articles/remote-compose-nazad-v-buduschee.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Собеседование на должность iOS-разработчика в Experian: когда все пошло не по плану
Иногда собеседования проверяют ваши знания. Иногда они проверяют ваше терпение. Собеседование в Experian? Оно проверяло мою психику.
Если вам когда-нибудь доведется столкнуться с таким интервьюером, вот мой совет:
• Сохраняйте спокойствие. Сумасшедшие интервьюеры проверяют вашу реакцию под давлением.
• Думайте вслух. Даже если вопрос не имеет смысла, покажите свою логику.
• Помните, дело не в вас. Иногда дело просто в интервьюере.
И, по крайней мере, вы уйдете с собеседования с историей, которая рассмешит ваших друзей.
Статья: https://apptractor.ru/info/articles/sobesedovanie-na-dolzhnost-ios-razrabotchika-v-experian-kogda-vse-poshlo-ne-po-planu.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Иногда собеседования проверяют ваши знания. Иногда они проверяют ваше терпение. Собеседование в Experian? Оно проверяло мою психику.
Если вам когда-нибудь доведется столкнуться с таким интервьюером, вот мой совет:
• Сохраняйте спокойствие. Сумасшедшие интервьюеры проверяют вашу реакцию под давлением.
• Думайте вслух. Даже если вопрос не имеет смысла, покажите свою логику.
• Помните, дело не в вас. Иногда дело просто в интервьюере.
И, по крайней мере, вы уйдете с собеседования с историей, которая рассмешит ваших друзей.
Статья: https://apptractor.ru/info/articles/sobesedovanie-na-dolzhnost-ios-razrabotchika-v-experian-kogda-vse-poshlo-ne-po-planu.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Rebound - мониторинг рекомпозиций
Rebound — это плагин компилятора Kotlin, который инструментирует каждую функцию с аннотацией
Rebound на GitHub: https://github.com/aldefy/compose-rebound
Платформа: Android
⭐️: 41
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Rebound — это плагин компилятора Kotlin, который инструментирует каждую функцию с аннотацией
@Composable легковесными вызовами отслеживания. Во время выполнения он отслеживает частоту рекомпозиции в соответствии с бюджетами для каждого composable-объекта, обнаруживает нарушения и сообщает о них через окно инструментов Android Studio, CLI или logcat. Работает на Android и iOS (Compose Multiplatform). Настройка не требуется — просто примените плагин Gradle. Плагин IDE предоставляет панель мониторинга производительности с 5 вкладками, включающую мониторинг в реальном времени, ранжирование проблемных мест, тепловую карту временной шкалы, анализ стабильности и историю сессий с корреляцией с системами контроля версий.Rebound на GitHub: https://github.com/aldefy/compose-rebound
Платформа: Android
⭐️: 41
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😁1
Отладка iOS-приложений на практике: 3 реальных бага
Понимание того, как именно отлаживать приложение, а также знание инструментов, которые есть в вашем распоряжении, или хотя бы осведомлённость о них — это навык, который экономит массу времени и помогает быстрее переходить к следующей задаче. Для меня это стало особенно важно в работе над собственными независимыми приложениями, где ресурсы и время ограничены и нужно использовать их максимально эффективно, не жертвуя качеством пользовательского опыта.
В этой статье я разберу несколько примеров реальных ошибок, которые недавно исправлял в своих приложениях, и шаг за шагом покажу весь процесс отладки в каждом случае.
Статья: https://habr.com/ru/companies/otus/articles/1011532/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Понимание того, как именно отлаживать приложение, а также знание инструментов, которые есть в вашем распоряжении, или хотя бы осведомлённость о них — это навык, который экономит массу времени и помогает быстрее переходить к следующей задаче. Для меня это стало особенно важно в работе над собственными независимыми приложениями, где ресурсы и время ограничены и нужно использовать их максимально эффективно, не жертвуя качеством пользовательского опыта.
В этой статье я разберу несколько примеров реальных ошибок, которые недавно исправлял в своих приложениях, и шаг за шагом покажу весь процесс отладки в каждом случае.
Статья: https://habr.com/ru/companies/otus/articles/1011532/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Отладка iOS-приложений на практике: 3 реальных бага
Разработчики часто не уделяют должного внимания навыку отладки. При этом он полезен не только для исправления ошибок, но и для того, чтобы лучше понимать кодовую базу и язык, на котором вы...
Monkeyrun - хаос-тестирование Android и iOS приложений
Monkeyrun - готовый к использованию кроссплатформенный CLI для мобильного хаотического (обезьяньего) тестирования Android и iOS приложений. Легковесный, удобный для CI/CD, единый исполняемый файл — без Appium, без сложной настройки.
Запускайте хаотические тесты на основе жестов на уже работающих эмуляторах и симуляторах. Обнаруживайте сбои, регистрируйте каждое событие и генерируйте чистый HTML-отчет.
Фичи:
• CLI-first подход —
• Нулевая настройка — работает с существующими устройствами ADB и загруженными симуляторами iOS
• 12 действий — касание, двойное касание, длительное нажатие, свайп, прокрутка, ввод текста, назад, масштабирование, «Домой», очистка текста, поворот
• Умные скриншоты — гибридный захват (интервал, обнаружение изменений пользовательского интерфейса, сбой) с асинхронным пулом рабочих процессов
• Обнаружение сбоев — Android (logcat) и iOS (поток логов simctl) с уровнями серьезности
• HTML-отчет — темная тема в стиле Playwright с временной шкалой, фильтрами, скриншотами, логами
• Воспроизведение — воспроизведение тестового запуска из записанных событий
• Единый исполняемый файл — нет зависимостей от среды выполнения, кросс-компиляция для macOS/Linux/Windows
Monkeyrun на GitHub: https://github.com/ABNclearroute/monkeyrun
Платформа: тестирование
⭐️: 6
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Monkeyrun - готовый к использованию кроссплатформенный CLI для мобильного хаотического (обезьяньего) тестирования Android и iOS приложений. Легковесный, удобный для CI/CD, единый исполняемый файл — без Appium, без сложной настройки.
Запускайте хаотические тесты на основе жестов на уже работающих эмуляторах и симуляторах. Обнаруживайте сбои, регистрируйте каждое событие и генерируйте чистый HTML-отчет.
Фичи:
• CLI-first подход —
devices, run, report, replay команды• Нулевая настройка — работает с существующими устройствами ADB и загруженными симуляторами iOS
• 12 действий — касание, двойное касание, длительное нажатие, свайп, прокрутка, ввод текста, назад, масштабирование, «Домой», очистка текста, поворот
• Умные скриншоты — гибридный захват (интервал, обнаружение изменений пользовательского интерфейса, сбой) с асинхронным пулом рабочих процессов
• Обнаружение сбоев — Android (logcat) и iOS (поток логов simctl) с уровнями серьезности
• HTML-отчет — темная тема в стиле Playwright с временной шкалой, фильтрами, скриншотами, логами
• Воспроизведение — воспроизведение тестового запуска из записанных событий
• Единый исполняемый файл — нет зависимостей от среды выполнения, кросс-компиляция для macOS/Linux/Windows
Monkeyrun на GitHub: https://github.com/ABNclearroute/monkeyrun
Платформа: тестирование
⭐️: 6
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
•
(iOS En) Threads App Swipe Up To Dismiss Interaction Using SwiftUI•
(iOS En) Backporting iOS 26 Concentric Rectangle for Older iOS Versions•
(iOS En) Build a Searchable, Sortable SwiftUI List with an Index Scrubber•
(iOS En) AppleTV App Animated Carousel Using SwiftUI•
(And Ru) Почему камера в Telegram Android снимает плохо•
(And En) 6 Ways to Make Your Gradle Builds Super Fast•
(Dev Ru) Зачем и как вам контрибьютить в open source•
(Dev Ru) Внутренняя кухня SRE и информационной безопасности•
(Dev Ru) Senior Android за 12 тысяч, рабство в IT и угрозы — Е*аное IT #1•
(Dev Ru) Маленькие языковые модели — Open source, локальный ИИ, SLM•
(Dev Ru) Рынок труда для джунов в 2026 году•
(Dev En) We Don't Need Designers Anymore•
(Dev En) Software Testing Course – Playwright, E2E, and AI AgentsПрошлогодние видео:
•
(iOS Ru) Дивный мир Swift Concurrency•
(iOS Ru) Задачи с собеседований: Leetcode — Недостающее число•
(iOS Ru) Как встроить в TextField индикатор загрузки и кастомную View•
(And Ru) Кастомные лейауты в Jetpack Compose•
(And Ru) Мапим данные из domain в ui модуль в многомодульном проекте•
(Crs Ru) Рецепт приготовления кроссплатформенного мобильного видеоредактора•
(Dev Ru) Собеседование по System Design: проектируем клон АвитоPlease open Telegram to view this post
VIEW IN TELEGRAM
PoolChat - mesh чаты со сквозным шифрованием для iOS
PoolChat — это пакет Swift, обеспечивающий полностью зашифрованный, бессерверный обмен групповыми и личными сообщениями по локальной mesh сети. Он работает поверх ConnectionPool и добавляет согласование ключей Curve25519, шифрование сообщений AES-256-GCM, проверку подлинности по принципу Trust-On-First-Use, расширенные типы сообщений (голосовые, опросы, реакции), зашифрованное сохранение истории и готовые представления SwiftUI. Не требуется подключение к интернету, серверов или учетных записей — только устройства, напрямую взаимодействующие друг с другом с использованием сквозного шифрования.
PoolChat на GitHub: https://github.com/Olib-AI/PoolChat
Платформа: iOS
⭐️: 11
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
PoolChat — это пакет Swift, обеспечивающий полностью зашифрованный, бессерверный обмен групповыми и личными сообщениями по локальной mesh сети. Он работает поверх ConnectionPool и добавляет согласование ключей Curve25519, шифрование сообщений AES-256-GCM, проверку подлинности по принципу Trust-On-First-Use, расширенные типы сообщений (голосовые, опросы, реакции), зашифрованное сохранение истории и готовые представления SwiftUI. Не требуется подключение к интернету, серверов или учетных записей — только устройства, напрямую взаимодействующие друг с другом с использованием сквозного шифрования.
PoolChat на GitHub: https://github.com/Olib-AI/PoolChat
Платформа: iOS
⭐️: 11
Please open Telegram to view this post
VIEW IN TELEGRAM
Как спроектировать сетевой слой в iOS (гайд для собеседования)
Разработка сетевого слоя — одна из самых распространенных тем в проектировании систем (system design) на собеседованиях для опытных iOS-разработчиков. На первый взгляд, задача кажется простой. Каждый iOS-разработчик писал сетевые запросы с использованием URLSession, анализировал JSON-ответы и отображал данные в пользовательском интерфейсе.
Но собеседования проверяют не умение вызывать API, а понимание того, как построить многоразовую, тестируемую, поддерживаемую и масштабируемую сетевую систему.
Надежная сетевая архитектура разделяет задачи, корректно обрабатывает ошибки, поддерживает различные конечные точки и позволяет остальной части приложения взаимодействовать с API предсказуемым образом.
В этой статье мы рассмотрим, как опытные iOS-разработчики подходят к проектированию сетевого слоя и как вы можете четко показать это на собеседованиях.
Статья: https://apptractor.ru/info/articles/networking-layer.html
Платформа: iOS/собеседования
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Разработка сетевого слоя — одна из самых распространенных тем в проектировании систем (system design) на собеседованиях для опытных iOS-разработчиков. На первый взгляд, задача кажется простой. Каждый iOS-разработчик писал сетевые запросы с использованием URLSession, анализировал JSON-ответы и отображал данные в пользовательском интерфейсе.
Но собеседования проверяют не умение вызывать API, а понимание того, как построить многоразовую, тестируемую, поддерживаемую и масштабируемую сетевую систему.
Надежная сетевая архитектура разделяет задачи, корректно обрабатывает ошибки, поддерживает различные конечные точки и позволяет остальной части приложения взаимодействовать с API предсказуемым образом.
В этой статье мы рассмотрим, как опытные iOS-разработчики подходят к проектированию сетевого слоя и как вы можете четко показать это на собеседованиях.
Статья: https://apptractor.ru/info/articles/networking-layer.html
Платформа: iOS/собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Как безопасно хранить и открывать пользовательские файлы локально в Android
Приходилось ли вам браться за задачу, из-за которой прошлый разработчик успел выгореть и сменить компанию? Что ж, мне удалось с такой столкнуться — c задачей обеспечения безопасного локального хранения файлов, которые пользователь загружает в приложение, например, общаясь с технической поддержкой в чате. Обо всех деталях и во всех подробностях я и расскажу в данной статье.
Статья: https://habr.com/ru/companies/alfa/articles/1010032/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Приходилось ли вам браться за задачу, из-за которой прошлый разработчик успел выгореть и сменить компанию? Что ж, мне удалось с такой столкнуться — c задачей обеспечения безопасного локального хранения файлов, которые пользователь загружает в приложение, например, общаясь с технической поддержкой в чате. Обо всех деталях и во всех подробностях я и расскажу в данной статье.
Статья: https://habr.com/ru/companies/alfa/articles/1010032/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как безопасно хранить и открывать пользовательские файлы локально в Android
Приходилось ли вам браться за задачу, из-за которой прошлый разработчик успел выгореть и сменить компанию? Что ж, мне удалось с такой столкнуться — c задачей обеспечения безопасного локального...
Почему многие неверно реализуют MVVM или способы создания абстракций
Сегодня хочу поговорить про особенности реализации MVVM. Не с практической, а с теоретической стороны. С практической стороны этот архитектурный шаблон давно уже изучен вдоль и поперёк. А вот теоретических исследований, особенно применимых к Swift (и в общем, и к SwiftUI в частности), не так уж и много. Давайте вместе попробуем закрыть этот пробел и обосновать с теоретической точки зрения те или иные вариации реализаций в нашей ежедневной работе. Мобильным разработчикам на ObjC, Java и Kotlin данное исследование и обсуждение тоже будет полезно.
Статья: https://habr.com/ru/companies/psb/articles/1010690/
Платформа: архитектура
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Сегодня хочу поговорить про особенности реализации MVVM. Не с практической, а с теоретической стороны. С практической стороны этот архитектурный шаблон давно уже изучен вдоль и поперёк. А вот теоретических исследований, особенно применимых к Swift (и в общем, и к SwiftUI в частности), не так уж и много. Давайте вместе попробуем закрыть этот пробел и обосновать с теоретической точки зрения те или иные вариации реализаций в нашей ежедневной работе. Мобильным разработчикам на ObjC, Java и Kotlin данное исследование и обсуждение тоже будет полезно.
Статья: https://habr.com/ru/companies/psb/articles/1010690/
Платформа: архитектура
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Tracey - "черный ящик" для Compose-приложения
Tracey - Kotlin Multiplatform SDK для Android и iOS для записи жестов, просмотров экранов, навигационных цепочек и сбоев — с последующим воспроизведением их в виде таймлайна.
Фичи:
• Запись жестов. Фиксирует тапы, скроллы, свайпы, долгие нажатия и щипки без какой-либо дополнительной инструментализации.
• Экраны и переходы. Автоматически отслеживает все навигационные события через tracey-navigation или позволяет логировать их вручную.
• События. Логируйте произвольные события из любого места приложения — обновления корзины, API-ошибки, feature flags и не только.
• Повтор сбоя. При падении сохраняет снепшот буфера событий и воспроизводит его при следующем запуске.
• Маскирование приватных данных. Помечайте чувствительные composable-элементы — они отображаются как обычно, но в захватах автоматически скрываются.
• Кастомные репортеры. Отправляйте записанные сессии в Logcat, Crashlytics, Sentry, Slack или в собственный бэкенд.
Tracey на GitHub: https://github.com/hi-manshu/tracey/
Платформа: Android/кроссплатформа
⭐️: 35
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Tracey - Kotlin Multiplatform SDK для Android и iOS для записи жестов, просмотров экранов, навигационных цепочек и сбоев — с последующим воспроизведением их в виде таймлайна.
Фичи:
• Запись жестов. Фиксирует тапы, скроллы, свайпы, долгие нажатия и щипки без какой-либо дополнительной инструментализации.
• Экраны и переходы. Автоматически отслеживает все навигационные события через tracey-navigation или позволяет логировать их вручную.
• События. Логируйте произвольные события из любого места приложения — обновления корзины, API-ошибки, feature flags и не только.
• Повтор сбоя. При падении сохраняет снепшот буфера событий и воспроизводит его при следующем запуске.
• Маскирование приватных данных. Помечайте чувствительные composable-элементы — они отображаются как обычно, но в захватах автоматически скрываются.
• Кастомные репортеры. Отправляйте записанные сессии в Logcat, Crashlytics, Sentry, Slack или в собственный бэкенд.
Tracey на GitHub: https://github.com/hi-manshu/tracey/
Платформа: Android/кроссплатформа
⭐️: 35
Please open Telegram to view this post
VIEW IN TELEGRAM
Миллисекунды стоят миллионы: как и зачем ускорить работу вашего приложения
inDrive выпустили подробную статью о том, как они ускоряли запуск приложения. Ребята разобрали, почему это вообще важно, как скорость запуска влияет на метрики и прибыль компании, объяснили теорию и показали реальные кейсы с инструментами и результатами. Получился практически полноценный гайд по оптимизации запуска: с конкретными цифрами, подходами и выводами. Если вы работаете с производительностью и ускорением запуска приложений - статья именно для вас.
Статья: https://hackernoon.com/milliseconds-make-millions-how-and-why-to-speed-up-your-app-from-indrives-playbook🇺🇸
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
inDrive выпустили подробную статью о том, как они ускоряли запуск приложения. Ребята разобрали, почему это вообще важно, как скорость запуска влияет на метрики и прибыль компании, объяснили теорию и показали реальные кейсы с инструментами и результатами. Получился практически полноценный гайд по оптимизации запуска: с конкретными цифрами, подходами и выводами. Если вы работаете с производительностью и ускорением запуска приложений - статья именно для вас.
Статья: https://hackernoon.com/milliseconds-make-millions-how-and-why-to-speed-up-your-app-from-indrives-playbook
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Как Compose Preview работает под капотом
Compose Preview в Android Studio кажется магией: поставил
Самое интересное — почему preview иногда “ломается”. В preview-среде есть только имитация Android runtime: например, lifecycle переводится сразу в RESUMED, но попытка запустить ActivityResult специально падает с ошибкой, потому что реальной Activity нет. Ещё статья хорошо показывает, откуда берётся
Полезный разбор для тех, кто хочет не просто пользоваться Compose Preview, а понимать, почему он работает именно так — и почему иногда не работает.
Статья: https://doveletter.dev/preview/articles/compose-preview-internals🇺🇸
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Compose Preview в Android Studio кажется магией: поставил
@Preview — и UI уже рендерится в IDE. Но под капотом там довольно сложный пайплайн. @Preview — это не поведение, а просто метаданные, которые Studio считывает из байткода. Дальше IDE собирает synthetic XML, прокидывает его в ComposeViewAdapter, поднимает фейковый lifecycle, а сам composable вызывается через reflection с учётом скрытых параметров, которые добавляет Compose compiler.Самое интересное — почему preview иногда “ломается”. В preview-среде есть только имитация Android runtime: например, lifecycle переводится сразу в RESUMED, но попытка запустить ActivityResult специально падает с ошибкой, потому что реальной Activity нет. Ещё статья хорошо показывает, откуда берётся
LocalInspectionMode.current == true и как Studio потом связывает отрисованные пиксели с конкретными строками исходников через ViewInfo.Полезный разбор для тех, кто хочет не просто пользоваться Compose Preview, а понимать, почему он работает именно так — и почему иногда не работает.
Статья: https://doveletter.dev/preview/articles/compose-preview-internals
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Engine - быстрые идиоматические API и представления SwiftUI
Engine - высокопроизводительный фреймворк для разработки фреймворков и приложений на SwiftUI. Engine упрощает создание идиоматических API и представлений, которые органично вписываются в SwiftUI без ущерба для производительности.
Главная идея Engine не в том, чтобы добавить еще десятки случайных helper-функций, а в том, чтобы закрыть реальные архитектурные пробелы SwiftUI. Пакет помогает строить собственные стилизуемые компоненты, работать с variadic view, организовывать совместимость между версиями SwiftUI и избегать некоторых дорогих по производительности решений вроде бездумного использования AnyView. Engine - фундамент для авторов UI-компонентов, дизайн-систем и внутренних фреймворков.
Engine на GitHub: https://github.com/nathantannar4/Engine
Платформа: iOS
⭐️: 507
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Engine - высокопроизводительный фреймворк для разработки фреймворков и приложений на SwiftUI. Engine упрощает создание идиоматических API и представлений, которые органично вписываются в SwiftUI без ущерба для производительности.
Главная идея Engine не в том, чтобы добавить еще десятки случайных helper-функций, а в том, чтобы закрыть реальные архитектурные пробелы SwiftUI. Пакет помогает строить собственные стилизуемые компоненты, работать с variadic view, организовывать совместимость между версиями SwiftUI и избегать некоторых дорогих по производительности решений вроде бездумного использования AnyView. Engine - фундамент для авторов UI-компонентов, дизайн-систем и внутренних фреймворков.
Engine на GitHub: https://github.com/nathantannar4/Engine
Платформа: iOS
⭐️: 507
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
CatPawSwitch - переключатель с кошачьей лапкой
Компонент MaterialSwitch, который проактивно пытается отключиться, используя анимацию кошачьей лапы.
CatPawSwitch на GitHub: https://github.com/hearsilent/CatPawSwitch
Платформа: Android
⭐️: 11
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Компонент MaterialSwitch, который проактивно пытается отключиться, используя анимацию кошачьей лапы.
CatPawSwitch на GitHub: https://github.com/hearsilent/CatPawSwitch
Платформа: Android
⭐️: 11
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1