Создание приложения с меню на Flutter, которое не занимает много памяти
Расскажу вам в этой статье, как я снизил потребление памяти моего macOS-приложения на Flutter более чем на 90%. Это потребовало неожиданно много усилий и включало создание собственного хоста для Flutter, разработку пользовательского плагина для перетаскивания и отладку кучи кода на Rust.
Статья: https://habr.com/ru/companies/piter/articles/976000/
Платформа: кроссплатформа
Расскажу вам в этой статье, как я снизил потребление памяти моего macOS-приложения на Flutter более чем на 90%. Это потребовало неожиданно много усилий и включало создание собственного хоста для Flutter, разработку пользовательского плагина для перетаскивания и отладку кучи кода на Rust.
Статья: https://habr.com/ru/companies/piter/articles/976000/
Платформа: кроссплатформа
👍1
Я уменьшил iOS-приложение с 200 до 8 МБ: побочные эффекты, которых я не ожидал
Уменьшить размер приложения с 200 до 8 МБ — легко.
Жить с последствиями — вот это нелегко.
Это история о том, как я слишком много оптимизировал, слишком поздно это понял и случайно создал один из самых запутанных кошмаров отладки в своей карьере.
Статья: https://apptractor.ru/info/articles/200-8.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Уменьшить размер приложения с 200 до 8 МБ — легко.
Жить с последствиями — вот это нелегко.
Это история о том, как я слишком много оптимизировал, слишком поздно это понял и случайно создал один из самых запутанных кошмаров отладки в своей карьере.
Статья: https://apptractor.ru/info/articles/200-8.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👍2
Cupertino - локальный сканер документации Apple и сервер MCP
Cupertino - инструмент для сканирования, индексирования и предоставления документации Apple для разработчиков агентам искусственного интеллекта через протокол контекста модели (MCP).
Cupertino — это локальная, структурированная, готовая к использованию с ИИ система документации для платформ Apple. Она:
• Сканирует документацию разработчиков Apple, Swift.org, предложения Swift Evolution, рекомендации по проектированию пользовательского интерфейса, устаревшие руководства Apple Archive и метаданные пакетов Swift
• Индексирует всё в быструю, доступную для поиска базу данных SQLite FTS5 с рейтингом BM25
• Предоставляет документацию агентам ИИ, таким как Claude, через протокол контекста модели (MCP)
• Обеспечивает автономный доступ к более чем 302 424 страницам документации для 307 фреймворков
Зачем это нужно?
• Больше никаких галлюцинаций: агенты ИИ получают точную и актуальную документацию по API Apple
• Автономная разработка: работайте с полной документацией без доступа к интернету
• Детерминированный поиск: один и тот же запрос всегда возвращает одинаковые результаты
• Локальный контроль: управляйте своей документацией, проверяйте базу данных, создавайте сценарии рабочих процессов
• Дизайн, ориентированный на ИИ: создан специально для интеграции с агентами ИИ через MCP
Cupertino на GitHub: https://github.com/mihaelamj/cupertino
Платформа: iOS
⭐️: 105
Cupertino - инструмент для сканирования, индексирования и предоставления документации Apple для разработчиков агентам искусственного интеллекта через протокол контекста модели (MCP).
Cupertino — это локальная, структурированная, готовая к использованию с ИИ система документации для платформ Apple. Она:
• Сканирует документацию разработчиков Apple, Swift.org, предложения Swift Evolution, рекомендации по проектированию пользовательского интерфейса, устаревшие руководства Apple Archive и метаданные пакетов Swift
• Индексирует всё в быструю, доступную для поиска базу данных SQLite FTS5 с рейтингом BM25
• Предоставляет документацию агентам ИИ, таким как Claude, через протокол контекста модели (MCP)
• Обеспечивает автономный доступ к более чем 302 424 страницам документации для 307 фреймворков
Зачем это нужно?
• Больше никаких галлюцинаций: агенты ИИ получают точную и актуальную документацию по API Apple
• Автономная разработка: работайте с полной документацией без доступа к интернету
• Детерминированный поиск: один и тот же запрос всегда возвращает одинаковые результаты
• Локальный контроль: управляйте своей документацией, проверяйте базу данных, создавайте сценарии рабочих процессов
• Дизайн, ориентированный на ИИ: создан специально для интеграции с агентами ИИ через MCP
Cupertino на GitHub: https://github.com/mihaelamj/cupertino
Платформа: iOS
⭐️: 105
👍2
Улучшение доступности в Android-приложениях
В этом руководстве вы узнаете, как используя инструменты Android создавать приложения, доступные для всех. Обеспечение корректного описания контента, удобных сенсорных областей и читаемого цветового контраста — это простые шаги, которые сделают наше приложение более доступным и удовлетворят потребности каждого пользователя.
Статья: https://apptractor.ru/info/articles/uluchshenie-dostupnosti-v-android-prilozheniyah.html
Платформа: Android
В этом руководстве вы узнаете, как используя инструменты Android создавать приложения, доступные для всех. Обеспечение корректного описания контента, удобных сенсорных областей и читаемого цветового контраста — это простые шаги, которые сделают наше приложение более доступным и удовлетворят потребности каждого пользователя.
Статья: https://apptractor.ru/info/articles/uluchshenie-dostupnosti-v-android-prilozheniyah.html
Платформа: Android
❤1
Android Gradle Graph Plugin - мониторинг зависимостей проекта
Gradle плагин поможет оптимизировать модули в больших многомодульных Android-проектах. Он показывает лишние зависимости в модулях, подскажет, какие модули лучше переделать в котлин модуль, сгенерирует граф зависимостей и метрики.
Плагин был одним из инструментов для ускорения сборки. Подробнее об опыте ускорения сборки проекта 1Fit можете узнать в докладе.
Android Gradle Graph Plugin на GitHub: https://github.com/Anelkad/gradle-portal-verification-PENLI5B8
Платформа: Android
⭐️: 17
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Gradle плагин поможет оптимизировать модули в больших многомодульных Android-проектах. Он показывает лишние зависимости в модулях, подскажет, какие модули лучше переделать в котлин модуль, сгенерирует граф зависимостей и метрики.
Плагин был одним из инструментов для ускорения сборки. Подробнее об опыте ускорения сборки проекта 1Fit можете узнать в докладе.
Android Gradle Graph Plugin на GitHub: https://github.com/Anelkad/gradle-portal-verification-PENLI5B8
Платформа: Android
⭐️: 17
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Forwarded from Mobile Development by AppTractor
В сотрудничестве с облачной платформой Nebius AI компания JetBrains запустила серию из десяти бесплатных мини-курсов для разработчиков, демонстрирующих, как интегрировать ИИ в рабочий процесс, чтобы повысить производительность.
Всего на платформе есть 10 курсов и один Live-урок:
• Техники промптинга
• Программирование с ИИ-агентом
• Теория агентского рабочего процесса
• Обзор ИИ-инструментов для разработчиков
• ИИ-агенты как ваша команда
• Создание собственного ИИ-агента
• ИИ в QA
• Введение в ИИ для DevOps
• Легальные риски использования ИИ для программирования
• Создание приложения с ИИ с нуля
• Лабораторная ИИ разработки
Внутри 25 практических задач, выпускной проект. Предполагаемое время на все - около 20 часов. Все бесплатно. Также есть план за $500, который включает более сложную программу обучения и в итоге позволяет получить сертификат.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Ускорение CI сборок в Xcode с кэшированием слотов
Я прошел через множество трудностей, чтобы прийти к этому, и нигде не был описан подход, который я в итоге выбрал. Я подозреваю, что это связано с тем, что относительно немногие используют собственную инфраструктуру CI на macOS, что является обязательным требованием для этой конфигурации.
Далее следует полный технический анализ решения, которое я в итоге реализовал, которое я называю кэшированием с подогревом слотов.
Статья: https://apptractor.ru/info/articles/uskorenie-ci-sborok-v-xcode-s-keshirovaniem-slotov.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я прошел через множество трудностей, чтобы прийти к этому, и нигде не был описан подход, который я в итоге выбрал. Я подозреваю, что это связано с тем, что относительно немногие используют собственную инфраструктуру CI на macOS, что является обязательным требованием для этой конфигурации.
Далее следует полный технический анализ решения, которое я в итоге реализовал, которое я называю кэшированием с подогревом слотов.
Статья: https://apptractor.ru/info/articles/uskorenie-ci-sborok-v-xcode-s-keshirovaniem-slotov.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Snowdrop - простая работа с сетью
Snowdrop — типобезопасный, простой в использовании фреймворк на основе Swift Macros, созданный для того, чтобы вы могли с легкостью создавать и поддерживать сложные сетевые запросы.
Функции:
• Создание типобезопасных сервисов с помощью макроса
• Поддержка различных типов методов запроса (например,
• Пиннинг SSL/сертификатов
• Перехватчики
• Возможность создания мок-объектов
Snowdrop на GitHub: https://github.com/neothXT/Snowdrop
Платформа: iOS
⭐️: 67
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Snowdrop — типобезопасный, простой в использовании фреймворк на основе Swift Macros, созданный для того, чтобы вы могли с легкостью создавать и поддерживать сложные сетевые запросы.
Функции:
• Создание типобезопасных сервисов с помощью макроса
@Service• Поддержка различных типов методов запроса (например,
@GET, @POST, @PUT, @DELETE, @PATCH, @CONNECT, @HEAD, @OPTIONS и т.п.)• Пиннинг SSL/сертификатов
• Перехватчики
• Возможность создания мок-объектов
Snowdrop на GitHub: https://github.com/neothXT/Snowdrop
Платформа: iOS
⭐️: 67
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Все не так с Codable
Опыт нашей команды в работе над производительностью показал, что оптимизации базовых технологий и компонентов намного ценнее точечных оптимизаций. Точечные оптимизации очень хрупкие: немного изменится граф инициализации, последовательность выполнения некоторых функций, добавится новый аргумент в конструктор — и все, точечная оптимизация уже не работает или неактуальна.
А такие базовые компоненты, как
Статья: https://habr.com/ru/companies/tbank/articles/977694/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Опыт нашей команды в работе над производительностью показал, что оптимизации базовых технологий и компонентов намного ценнее точечных оптимизаций. Точечные оптимизации очень хрупкие: немного изменится граф инициализации, последовательность выполнения некоторых функций, добавится новый аргумент в конструктор — и все, точечная оптимизация уже не работает или неактуальна.
А такие базовые компоненты, как
JSONDecoder/Encoder, используются в iOS-проектах повсеместно, и ускорение их работы дает ощутимое влияние на общую производительность приложений.Статья: https://habr.com/ru/companies/tbank/articles/977694/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Android UI-тесты с Maestro без тяжелой инфраструктуры
Maestro в Android-проекте: mock flavor, базовые сценарии и локальный прогон UI-тестов через Git pre-push без тяжелой инфраструктуры.
Статья: https://www.codingpas.ru/posts/android-ui-tests-maestro-pre-push/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Maestro в Android-проекте: mock flavor, базовые сценарии и локальный прогон UI-тестов через Git pre-push без тяжелой инфраструктуры.
Статья: https://www.codingpas.ru/posts/android-ui-tests-maestro-pre-push/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Опенсорс-библиотека Implicits от Яндекс Браузера: новый шаг в передаче зависимостей Swift
Когда iOS‑приложение вырастает до сотен тысяч строк, появляется проблема: добавление зависимости в глубокий компонент требует изменений во всех промежуточных функциях. Эти функции зависимость не используют — они просто передают её дальше. Сигнатуры разбухают, рефакторинг превращается в массовую правку файлов, и значительная часть кода становится техническим шумом.
Проблема известна. Scala использует implicit parameters на уровне языка, Kotlin экспериментирует с context receivers, Android полагается на Dagger. А Swift не предлагает встроенного решения. Поэтому мы в команде Яндекс Браузера создали библиотеку Implicits — механизм неявной передачи зависимостей с compile‑time‑проверками. Она успешно работает в продакшне Браузера на полутора миллионах строк Swift‑кода, а ещё доступна в опенсорсе.
Статья: https://habr.com/ru/companies/yandex/articles/976898/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Когда iOS‑приложение вырастает до сотен тысяч строк, появляется проблема: добавление зависимости в глубокий компонент требует изменений во всех промежуточных функциях. Эти функции зависимость не используют — они просто передают её дальше. Сигнатуры разбухают, рефакторинг превращается в массовую правку файлов, и значительная часть кода становится техническим шумом.
Проблема известна. Scala использует implicit parameters на уровне языка, Kotlin экспериментирует с context receivers, Android полагается на Dagger. А Swift не предлагает встроенного решения. Поэтому мы в команде Яндекс Браузера создали библиотеку Implicits — механизм неявной передачи зависимостей с compile‑time‑проверками. Она успешно работает в продакшне Браузера на полутора миллионах строк Swift‑кода, а ещё доступна в опенсорсе.
Статья: https://habr.com/ru/companies/yandex/articles/976898/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Я попытался сделать Offline-First приложение, и это чуть не уничтожили проект
Мы, разработчики, иногда проводим эксперименты ради удовольствия. А иногда такие эксперименты превращаются в фильмы ужасов.
Мой эксперимент с приоритетом офлайн-подключения должен был быть простым: сделать так, чтобы всё iOS-приложение работало даже при отсутствии сети.
Никаких индикаторов загрузки.
Никаких «пожалуйста, повторите попытку».
Никаких «проверьте ваше соединение».
Просто мгновенный пользовательский интерфейс, локальная запись и фоновая синхронизация, которая волшебным образом всё исправляет, когда восстанавливается сеть.
В теории? Прекрасно.
В реальности? Я случайно открыл финального босса в прохождении архитектуры — конфликты данных.
И не те милые, что описаны в учебниках.
Я говорю о реальных, запутанных, противоречивых ошибках, поступающих от реальных людей, использующих приложение на разных устройствах, способами, которые ни один менеджер по продукту не мог предсказать.
К концу проекта моя локальная база данных знала о предательстве и несогласованности больше, чем любые человеческие отношения.
Статья: https://apptractor.ru/info/articles/ya-popytalsya-sdelat-offline-first-prilozhenie-i-eto-chut-ne-unichtozhili-proekt.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Мы, разработчики, иногда проводим эксперименты ради удовольствия. А иногда такие эксперименты превращаются в фильмы ужасов.
Мой эксперимент с приоритетом офлайн-подключения должен был быть простым: сделать так, чтобы всё iOS-приложение работало даже при отсутствии сети.
Никаких индикаторов загрузки.
Никаких «пожалуйста, повторите попытку».
Никаких «проверьте ваше соединение».
Просто мгновенный пользовательский интерфейс, локальная запись и фоновая синхронизация, которая волшебным образом всё исправляет, когда восстанавливается сеть.
В теории? Прекрасно.
В реальности? Я случайно открыл финального босса в прохождении архитектуры — конфликты данных.
И не те милые, что описаны в учебниках.
Я говорю о реальных, запутанных, противоречивых ошибках, поступающих от реальных людей, использующих приложение на разных устройствах, способами, которые ни один менеджер по продукту не мог предсказать.
К концу проекта моя локальная база данных знала о предательстве и несогласованности больше, чем любые человеческие отношения.
Статья: https://apptractor.ru/info/articles/ya-popytalsya-sdelat-offline-first-prilozhenie-i-eto-chut-ne-unichtozhili-proekt.html
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
MoviQ - умный трекер фильмов
MoviQ помогает вам управлять списком просмотренных фильмов и открывать для себя новые фильмы с помощью ИИ. Отмечайте фильмы как просмотренные, оценивайте свои любимые, и Gemini 2.0 предложит вам, что посмотреть дальше, исходя из ваших предпочтений.
Автор создал MoviQ как справочник для разработчиков Android, ищущих реальные примеры приложений, использующих масштабируемую чистую архитектуру, Jetpack Compose, интеграцию с Firebase и всестороннее тестирование. Это тот тип кода, который мне самому хотелось бы иметь, когда я изучал современную Android-разработку.
Ключевые архитектурные решения:
• Offline-First: Room как единый источник истины с облачной синхронизацией
• Однонаправленный поток данных: паттерн MVI с закрытыми классами
• Внедрение зависимостей: Hilt для внедрения зависимостей на этапе компиляции
• Фоновая синхронизация: WorkManager с разрешением конфликтов
• Паттерн Репозиторий: Абстрагирование источников данных от бизнес-логики
• Паттерн Use Case: Единая ответственность за каждую бизнес-операцию
MoviQ на GitHub: https://github.com/davidthurman/MoviQ/
Платформа: Android
⭐️: 8
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
MoviQ помогает вам управлять списком просмотренных фильмов и открывать для себя новые фильмы с помощью ИИ. Отмечайте фильмы как просмотренные, оценивайте свои любимые, и Gemini 2.0 предложит вам, что посмотреть дальше, исходя из ваших предпочтений.
Автор создал MoviQ как справочник для разработчиков Android, ищущих реальные примеры приложений, использующих масштабируемую чистую архитектуру, Jetpack Compose, интеграцию с Firebase и всестороннее тестирование. Это тот тип кода, который мне самому хотелось бы иметь, когда я изучал современную Android-разработку.
Ключевые архитектурные решения:
• Offline-First: Room как единый источник истины с облачной синхронизацией
• Однонаправленный поток данных: паттерн MVI с закрытыми классами
• Внедрение зависимостей: Hilt для внедрения зависимостей на этапе компиляции
• Фоновая синхронизация: WorkManager с разрешением конфликтов
• Паттерн Репозиторий: Абстрагирование источников данных от бизнес-логики
• Паттерн Use Case: Единая ответственность за каждую бизнес-операцию
MoviQ на GitHub: https://github.com/davidthurman/MoviQ/
Платформа: Android
⭐️: 8
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
•
(iOS Ru) Ставим приложения на iOS через Android•
(iOS Ru) А ваше приложение похудело к лету?•
(iOS En) Senior iOS Engineer Mock Interview - Hotel Booking System Design•
(iOS En) Apple Books Expandable Menu - SwiftUI•
(iOS En) Truncated Text Effect - Tap to Expand Text View, Text Animations, Text Renderer - SwiftUI•
(iOS En) How I use Codex GPT 5.2 with Xcode (My complete workflow)•
(iOS En) App Store Style Toolbar Scroll Effect - Toolbar Header Scroll Effect - SwiftUI•
(iOS En) Smarter Lists, Labels, and Dictionary Grouping in SwiftUI•
(And Ru) Разработка видеоредактора•
(And En) Navigate Back With Result In Navigation3 (CMP & Native Android)•
(And En) Scenes & Scene Strategies In Navigation3 (CMP & Native Android)•
(And En) Coroutines Need a Scope... and That's a Good Thing!•
(Crs Ru) Да кто такой этот ваш 2D-скролл?•
(Dev Ru) TransmateSDK — ваш товарищ-полиглот•
(Dev Ru) Яндекс обновил процесс найма: что внутри?•
(Dev Ru) Сокращения, AI и рынок СНГ: кто останется востребованным в IT•
(Dev Ru) Онбординг пользователей — Активация, retention, продуктовая ценность•
(Dev Ru) ИИ-агенты в жизненном цикле ПО: от ассистентов к полноценным членам команды•
(Dev En) Unity 2D Pixel Art Game Tutorial•
(Dev En) Intro to Supabase – Full Tutorial for Beginners•
(Dev En) Gemini Flash Native Audio: Build a Voice AI Ordering System in PythonПрошлогодние видео:
•
(And Ru) Публикация Android и KMP библиотеки в Maven Central•
(Crs Ru) Flutter Dev Podcast #49: многомодульность на Flutter•
(Dev Ru) Compose и SwiftUI: найди 10 отличий•
(Dev Ru) Запускаем мобильные UI-тесты эффективно•
(Dev Ru) Как мы писали проигрыватель с нуля под каждую платформу•
(Dev Ru) Как ВКонтакте измеряет перфоманс приложений•
(Dev Ru) Очевидные и неочевидные дыры безопасности в мобильной разработке•
(Dev Ru) Страх и ненависть в мобильных автотестах. Строим своё облачное решениеPlease open Telegram to view this post
VIEW IN TELEGRAM
Как мы перевернули подход к мобильным интерфейсам с Backend Driven UI
Cегодня я расскажу, как мы построили централизованную и гибкую систему управления статусами, добавили условные переводы с хендлерами для проверки бизнес-правил и реализовали динамические сценарии для гибкого формирования UI. Спойлер: теперь наши механики и менеджеры видят только те действия, которые им реально доступны, а бэкенд гарантирует целостность данных на уровне системы.
Статья: https://habr.com/ru/companies/whoosh/articles/977814/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Cегодня я расскажу, как мы построили централизованную и гибкую систему управления статусами, добавили условные переводы с хендлерами для проверки бизнес-правил и реализовали динамические сценарии для гибкого формирования UI. Спойлер: теперь наши механики и менеджеры видят только те действия, которые им реально доступны, а бэкенд гарантирует целостность данных на уровне системы.
Статья: https://habr.com/ru/companies/whoosh/articles/977814/
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как мы перевернули подход к мобильным интерфейсам с Backend Driven UI
После того как наш парк вырос до более 245 тысяч самокатов и велосипедов, а команда сервисных центров начала исчисляться сотнями человек, стало ясно: управлять статусами устройств, задач и процессов в...
👍1
Scyther - инструменты отладки iOS-приложения
Scyther - Комплексный набор инструментов для отладки iOS-приложений, который поможет вам выявлять и устранять ошибки. Scyther предоставляет инструменты для разработчиков, тестировщиков, команд UI/UX и бэкенд-разработчиков.
Среди них:
• Получение информации об устройстве и приложении
• Работы с сетью
• Управление данными (UserDefaults, Keychain и файлы)
• Работы с локацией
• Уведомлениями
• UI/UX (сетка поверх UI, границы представлений, замедленные анимации и т.д.)
Scyther на GitHub: https://github.com/bstillitano/Scyther
Платформа: iOS
⭐️: 113
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Scyther - Комплексный набор инструментов для отладки iOS-приложений, который поможет вам выявлять и устранять ошибки. Scyther предоставляет инструменты для разработчиков, тестировщиков, команд UI/UX и бэкенд-разработчиков.
Среди них:
• Получение информации об устройстве и приложении
• Работы с сетью
• Управление данными (UserDefaults, Keychain и файлы)
• Работы с локацией
• Уведомлениями
• UI/UX (сетка поверх UI, границы представлений, замедленные анимации и т.д.)
Scyther на GitHub: https://github.com/bstillitano/Scyther
Платформа: iOS
⭐️: 113
Please open Telegram to view this post
VIEW IN TELEGRAM
«Liquid Glass» на iOS 16: шейдеры — легко, а скриншоты — боль
С выходом iOS 26 Apple наконец-то обновила UI. Интерфейсы стали «стеклянными»: физически корректное преломление, жирная хроматическая аберрация, глубокий объем. Мне очень нравится как это выглядит, хотя в использовании, довольно часто, есть вопросы с удобством.
Но есть проблема: этот API (как и все другие новые от Apple) доступен только в новейшей системе. Если ваше приложение должно поддерживать iOS 18, 17 или (не дай бог) 14, то там всё по-старому:
Звучит как вызов и я захотел написать свой Liquid Glass на Metal + SwiftUI для iOS 16, который визуально будет 1-в-1 как нативный в iOS 26. Казалось бы, задача простая: пиши/найди/вайбкодь шейдер, и готово.
Статья: https://habr.com/ru/articles/978924/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
С выходом iOS 26 Apple наконец-то обновила UI. Интерфейсы стали «стеклянными»: физически корректное преломление, жирная хроматическая аберрация, глубокий объем. Мне очень нравится как это выглядит, хотя в использовании, довольно часто, есть вопросы с удобством.
Но есть проблема: этот API (как и все другие новые от Apple) доступен только в новейшей системе. Если ваше приложение должно поддерживать iOS 18, 17 или (не дай бог) 14, то там всё по-старому:
UIVisualEffectView, который блюрит фон.Звучит как вызов и я захотел написать свой Liquid Glass на Metal + SwiftUI для iOS 16, который визуально будет 1-в-1 как нативный в iOS 26. Казалось бы, задача простая: пиши/найди/вайбкодь шейдер, и готово.
Статья: https://habr.com/ru/articles/978924/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
От ощущений к цифрам: как мы внедрили метрики перформанса в андроид приложение
В какой-то момент мы поняли: пока перформанс не выражен в цифрах, его невозможно защищать, улучшать и связывать с деньгами. Поэтому мы договорились о наборе метрик, начали стабильно собирать их на устройствах пользователей, и построили понятную систему: меряем → интерпретируем → действуем.
В этой статье я расскажу про важность перформанса на мобильных устройствах, исследования бизнеса о том как перформанс влияет на конверсии, GMV, а также про конкретные метрики и примеры кода как их собирать.
Статья: https://habr.com/ru/articles/978170/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В какой-то момент мы поняли: пока перформанс не выражен в цифрах, его невозможно защищать, улучшать и связывать с деньгами. Поэтому мы договорились о наборе метрик, начали стабильно собирать их на устройствах пользователей, и построили понятную систему: меряем → интерпретируем → действуем.
В этой статье я расскажу про важность перформанса на мобильных устройствах, исследования бизнеса о том как перформанс влияет на конверсии, GMV, а также про конкретные метрики и примеры кода как их собирать.
Статья: https://habr.com/ru/articles/978170/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Tomato - минималистичный Помодоро-таймер для Android
Tomato - это минималистичный Pomodoro таймер для Android, созданный на основе Material 3 Expressive. Внутри Jetpack Navigation 3, Room, Vico для графиков и чартов, MaterialKolor для цветовых схем.
Tomato на GitHub: https://github.com/nsh07/Tomato
Платформа: Android
⭐️: 814
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Tomato - это минималистичный Pomodoro таймер для Android, созданный на основе Material 3 Expressive. Внутри Jetpack Navigation 3, Room, Vico для графиков и чартов, MaterialKolor для цветовых схем.
Tomato на GitHub: https://github.com/nsh07/Tomato
Платформа: Android
⭐️: 814
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Снепшот-тестирование SwiftUI View в legacy-проекте: обходим ограничения
Снепшот-тестирование — один из немногих надёжных способов контролировать визуальную целостность SwiftUI-компонентов. Но что делать, если ваш проект ограничен Xcode 13.3 и Swift 5.6, а большинство компонентов дизайн-системы обёрнуты в UIViewRepresentable?
Меня зовут Денис Третьяков, я iOS-разработчик в ПСБ. В этой статье расскажу, как мы организовали снепшот-тестирование SwiftUI-компонентов в условиях жёстких ограничений, с какими проблемами столкнулись и как их решили.
Статья: https://habr.com/ru/companies/psb/articles/978374/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Снепшот-тестирование — один из немногих надёжных способов контролировать визуальную целостность SwiftUI-компонентов. Но что делать, если ваш проект ограничен Xcode 13.3 и Swift 5.6, а большинство компонентов дизайн-системы обёрнуты в UIViewRepresentable?
Меня зовут Денис Третьяков, я iOS-разработчик в ПСБ. В этой статье расскажу, как мы организовали снепшот-тестирование SwiftUI-компонентов в условиях жёстких ограничений, с какими проблемами столкнулись и как их решили.
Статья: https://habr.com/ru/companies/psb/articles/978374/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
От неработающей к тестируемой навигации в SwiftUI: децентрализованный MVVM подход с координаторами
SwiftUI предоставляет несколько инструментов для управления навигацией, а внедрение NavigationStack и ссылок «значение-цель» улучшило программную навигацию.
Однако в более крупных приложениях стандартная навигация SwiftUI может создавать проблемы с тестируемостью, поддержкой и модульностью. Логика навигации распределена между представлениями, что приводит к связанности и затрудняет поиск кода навигации.
Эти проблемы можно решить путем интеграции координаторов в шаблон MVVM.
Статья: https://apptractor.ru/info/articles/mvvm-coordinator-swiftui.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
SwiftUI предоставляет несколько инструментов для управления навигацией, а внедрение NavigationStack и ссылок «значение-цель» улучшило программную навигацию.
Однако в более крупных приложениях стандартная навигация SwiftUI может создавать проблемы с тестируемостью, поддержкой и модульностью. Логика навигации распределена между представлениями, что приводит к связанности и затрудняет поиск кода навигации.
Эти проблемы можно решить путем интеграции координаторов в шаблон MVVM.
Статья: https://apptractor.ru/info/articles/mvvm-coordinator-swiftui.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1