Mobile Development by AppTractor
11K subscribers
1.87K photos
38 videos
11 files
4.68K links
Цифры, советы и все интересное о разработке мобильных приложений и сервисов. Комментарии и вопросы можно писать прямо @lbogolubov

• Аудитория https://t.me/apptractor/1066
• Сайт https://apptractor.ru/
Download Telegram
iOS

Многие iOS-разработчики, переходя на async/await, совершают типичные, но серьёзные ошибки — от неправильного использования for await до игнорирования отмены задач. Иногда они просто предполагают, что все асинхронные функции исполняются на фоне, что может привести к «заморозке» интерфейса и отказу приложения при ревью в App Store. Другие часто начинают вручную переписывать существующий код под Swift Concurrency, не учитывая тонкости строгой конкуренции, — и из-за этого миграция растягивается на месяцы. Также опасно создавать задачи внутри onAppear, что может породить дублированные вызовы API и ненужную нагрузку.

The 5 biggest mistakes iOS Developers make with async/await
iOS Developer Struggles Every Swift Dev Should Know
Swift 6.3 Macros: Reducing Boilerplate by 40% in Real Projects
SwiftUI: Eliminating Navigation Registrations
👍61
Android

Подход с неблокирующим сплеш-скрином обеспечивает значительное повышение производительности (на 90% быстрее загрузка страницы при консервативном тестировании и до 95% при сложной анимации), но и здесь есть свои недостатки. Параллельная обработка увеличивает пиковое использование памяти и нагрузку на процессор, что может быть проблематично на устройствах начального уровня. Ключевой вывод: преимущества существенны и измеримы, но они сопровождаются затратами ресурсов, которые необходимо контролировать с помощью стратегий адаптивной реализации.

Преодолевая барьер скорости: как неблокирующие заставки сокращают время запуска приложений Android на 90%
Compose Exploded Layers — слои Compose в 3D
Input to Your Inputs - What Invalidates Gradle Configuration Cache?
Kotlin Mutex: Thread-Safe Concurrency for Coroutines
Scaling Android Apps to Millions of Users: Architecture Lessons
Event-Driven Architecture in Android: Using Flows & SharedFlow for App-wide Events
👍2
Этот репозиторий представляет собой попытку упорядочить ключевые принципы проектирования систем по аналогии с периодической таблицей химических элементов. Автор анализирует десятки фундаментальных работ в области систем (базы данных, операционные системы, распределённые системы и др.) и выделяет более 40 сквозных принципов — таких как Modularity, Scalability, Fault Tolerance, Abstraction Lifting, Consistency Relaxation и др. Каждый принцип снабжён коротким обозначением, группируется по тематическим категориям (структура, эффективность, распределённость, надёжность и т.д.) и сопровождается описанием намерения (intent), без привязки к конкретным технологиям или паттернам. Сильная сторона проекта — универсальность и мастерская синтеза: здесь не «рецепты кода», а словарь концепций, который помогает разработчикам, архитекторам и студентам видеть связи между разными областями систем. Минусы: границы между принципами могут быть нечетки, и некоторые решения подвергаются дублированию или пересечению. В целом, проект полезен как вспомогательный инструмент мышления при проектировании больших систем — как способ быстрее увидеть «что за чем следует» и какие компромиссы заложены в архитектурное решение.

Разработка

OpenAI запускает AgentKit, чтобы помочь разработчикам создавать и поставлять ИИ-агентов
OpenAI запускает приложения внутри ChatGPT
Команда Swift анонсирует Swift Profile Recorder
Supercharge Cursor and Claude with your team’s knowledge
Elements of System Design

Маркетинг

Дилемма локализации

Кроссплатформа

Why Your Compose Multiplatform App Still Needs Native Code
How I Brought a 5-Year-Old Flutter App Back to Life (and What You Can Learn From It)
2😁1
AltStore PAL расширяется

AltStore PAL, запущенный в прошлом году и ставший одним из первых альтернативных магазинов приложений для iOS в ЕС, запускается в новых странах, объявил сегодня его разработчик Райли Тестут. «В частности, мы планируем запуститься в Японии, Бразилии и Австралии до конца года, а в 2026 году — в Великобритании», — говорит Тестут. Запуск в большем количестве стран — «безусловно, наш главный вопрос», хотя команда AltStore всё ещё ждёт от Apple информации о точных сроках.

Тестат также говорит, что AltStore делает серьёзный шаг в сторону федиверса, используя протокол ActivityPub, чтобы «федерализировать приложения, обновления приложений и новости из AltStore в открытой социальной сети». Функции Fediverse появятся в AltStore PAL в «ближайшие несколько месяцев».

AltStore также получает инвестиции в размере 6 миллионов долларов, что позволит команде нанять больше сотрудников и обеспечить «необходимую пропускную способность для завершения интеграции Fediverse и расширения AltStore по всему миру».
🔥41
Apple запрещает бесплатную раздачу приложений

Вынесу из комментариев это видео - Apple начала отправлять разработчикам официальные предупреждения за краткосрочные акции «сделать платное приложение бесплатным на пару дней», рассматривая их как манипуляцию экосистемой App Store и нарушение лицензионного соглашения разработчика.

В ролике приводится кейс Gym AI: за сутки 4 000 установок и всплеск оценок, после чего пришло официальное предупреждение от Apple. Apple указывает на манипулирование чартами, отзывами и поисковым индексом, а также на возможное «скрытие функциональности от ревью‑команды» и «фальсификацию потребительских отзывов», что подпадает под нарушения Apple Developer Program License Agreement. Автор предполагает, что кратковременная «раздача» может трактоваться как предоставление пользователю ценности в обмен на положительный отзыв, то есть как форма стимулированных отзывов, даже если прямой оплаты нет.

По словам автора, как минимум шесть инди‑разработчиков получили такие предупреждения, а в одном случае Apple приостановила будущие выплаты, что усиливает серьёзность последствий. Письма содержат предупреждение о возможной утрате аккаунта разработчика при манипуляциях рейтингами, отзывами или поисковой выдачей, что ставит под удар весь аккаунт и портфель приложений. Если это первое предупреждение, по опыту из видео у разработчика есть окно, чтобы «привести аккаунт в порядок» и устранить нарушения; в кейсе упоминается 30‑дневный срок.

AppGrowth про инди, пет и монетизацию
3
iOS

В статье подробно раскрывается, как в Swift с помощью фреймворка Natural Language и класса NLLanguageRecognizer определить язык произвольного текста. После обработки строки методом processString можно получить доминантный язык, а также набор возможных языков с вероятностями через languageHypotheses. Авторы показывают, как перевести код языка (например, "en") в читабельную строку через Locale.current.localizedString(forIdentifier:). Кроме базового примера, статья также рассматривает улучшения: как сбрасывать состояние распознавателя (метод reset()), как ограничивать список поддерживаемых языков (languageConstraints) или задавать подсказки (languageHints) для повышения точности. В целом, это полезное руководство, чтобы добавить автоматическое определение языка в iOS/Swift-приложение.

AltStore PAL получает инвестиции и расширяется
SwiftyChat — интерфейс чата на SwiftUI
Adapting SwiftUI Sheet to Fit Content Height
Detecting Text Language with NLLanguageRecognizer in Swift
SwiftUI: Image Generation With Foundation Model
👍1
Android

Если вы Андроид-разработчик, думаю, вам часто приходилось сталкиваться с ситуациями, когда код вашего приложения выбрасывает необрабатываемое исключение и ваше приложение закрывается. На сленге можно сказать, что «приложение крашится». В этой статье автор разберётся, почему это происходит и какие механизмы лежат в основе такого поведения.

Почему моё Android-приложение крашится?
Side Effects in Jetpack Compose — Explained Simply
Difference between emit and tryEmit in Kotlin Flow
Medium Android App — Migrating from Apollo Kotlin 3 to 4: Lessons Learned
👍3🤡3
Google представил новую модель искусственного интеллекта Gemini, предназначенную для навигации и взаимодействия с вебом через браузер. Это позволит ИИ-агентам выполнять действия в интерфейсах, разработанных для людей, а не роботов. Модель, получившая название Gemini 2.5 Computer Use, использует «возможности визуального понимания и рассуждения» для анализа запроса пользователя и выполнения задачи, например, заполнения и отправки формы. Google заявляет, что его Computer Use модель «превосходит ведущие альтернативы в нескольких веб- и мобильных бенчмарках». В отличие от ChatGPT Agent и инструмента «использования компьютера» от Anthropic, новая модель искусственного интеллекта Google имеет доступ только к браузеру, а не ко всей компьютерной среде. Google отмечает, что она «пока не оптимизирована для управления ОС» и в настоящее время поддерживает только 13 действий, включая открытие веб-браузера, ввод текста и перетаскивание элементов.

Разработка

Google выпустил Gemini 2.5 Computer Use для работы с браузером
Your Best Mobile Developer Is the “Slow” One
Solving Double Booking at Scale: System Design Patterns from Top Tech Companies

Маркетинг

Apple запрещает бесплатную раздачу приложений
Доход х5 с помощью микроинфлюенсеров

Кроссплатформа

Rijksmuseum — музей на Kotlin Multiplatform
The Flutter Architecture That Saved Our Team 6 Months of Rework
1👍1
Как обеспечить надёжность автотестов: опыт ЮMoney и SimbirSoft 🪲

Bugs Busters — бесплатный митап ЮMoney для QA-специалистов. Опыт ЮMoney и приглашённого спикера из SimbirSoft применим в любых компаниях, для которых важна надёжность и стабильность цифровых сервисов.

На митапе Bugs Busters мы не просто рассказываем про внутренние практики, а делимся решениями, которые можно адаптировать под ваши проекты — от оптимизации автотестов до построения устойчивой мобильной инфраструктуры.

Вот о чём расскажут спикеры из ЮMoney и SimbirSoft:

🟣 UI Automation без UI: стабильные автотесты в мире нестабильных iOS-приложений. Поделимся опытом, как мы адаптировали XCUITests на основе SDK-first тестовой архитектуры.
🟣 Мечтают ли Android-эмуляторы о запуске в Docker? Расскажем, как мы обошлись без классической фермы устройств при запуске Android-автотестов на CI.
🟣 Скелеты в шкафу мобильного тестирования: на примере проектов ЮMoney рассмотрим, как поддерживать сотню устройств всегда готовыми к работе. Разберём риски постоянной зарядки девайсов, расскажем о выбранной стратегии и первых шагах к удалённому управлению через DeviceHub.

15 октября, среда, в 19:00 (мск) — присоединяйтесь онлайн или приходите в офис ЮMoney в Санкт-Петербурге, чтобы пообщаться с командами, которые ежедневно тестируют под реальной нагрузкой.

Зарегистрируйтесь, чтобы принять участие. Все подробности — на сайте митапа Bugs Busters ™️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👻1
Android

Статья отлично разбирает, как устроены таски (tasks) и стек возврата (back stack) под капотом. Автор показывает, что активити — это «глава истории», а стек — это последовательность этих глав, которыми управляет Android по принципу LIFO (последний зашёл — первый вышел). Но самое интересное — как разработчики могут контролировать это поведение. В статье глубоко объясняются launch modes (standard, singleTop, singleTask, singleInstance) и intent flags (FLAG_ACTIVITY_NEW_TASK, FLAG_ACTIVITY_CLEAR_TOP и др.), а также такие нюансы, как taskAffinity, атрибуты вроде clearTaskOnLaunch и поведение кнопки «назад» на Android 12+. Если вы пишете навигацию или сложные потоки переходов в Android-приложении — эта статья точно стоит внимания.

JetCo Library — готовые UI-компоненты Compose
Understanding “Tasks” and the Back Stack in Android — The Story Behind Your App’s Journey
Android App Architecture Patterns 2025: Building Scalable Apps with Hilt, Navigation, and ViewModel
15 Android Developer Productivity Hacks
4
iOS

Хотите добавить генерацию изображений с помощью Foundation Models прямо в SwiftUI-приложение? В этой статье подробно разобрано, как заставить модель создавать картинки на устройстве — без сторонних API и серверов. Автор показывают, какие подходы не работают (и почему), делится реальными примерами кода и объясняет ограничения фреймворка.

Генерация изображений с использованием Foundation Models в SwiftUI
Stop Using Fixed Frames in SwiftUI: The Complete Guide to containerRelativeFrame()
Building AI features using Foundation Models. Streaming.
Taking control of your navigation in SwiftUI with NavigationPath
Building a Real-Time Trading Co-Pilot on iOS
👍1
Занятная история про то, как человек создал цифровой физический продукт - печатный журнал со всеми кофейнями города, печатающийся по запросу.
Если вы разработчик и думаете о создании чего-то, вам не нужно создавать ещё один SaaS-сервис. Рынок просто переполнен. Но есть множество других видов бизнеса с возможностями автоматизации. Физические товары, локальные услуги, контент-бизнес — что угодно.


Разработка

Я навайбкодил физический продукт, вместо очередного SaaS
8 Tiny UI Fixes That Will Make Your Product Feel 10x Smarter

Маркетинг

Исследование мобильных пушей от Mindbox
Новые требования для iOS-приложений в Техасе
Pokémon Sleep исполнилось два года — как обстоят дела у конкурентов?

Кроссплатформа

«Ох, зря я туда полез…»: история о том, как мы переезжали на React Native
1👍41
📺 Видео и подкасты за неделю @AppFiles

(iOS Ru) Неуловимый iOS-ботовод. Задетекти меня, если сможешь: автореги, боты, спамеры
(iOS Ru) Разработка под Apple Vision Pro: исследуем возможности гарнитуры
(iOS En) Secure your app with Memory Integrity Enforcement
(iOS En) Interactive Map with Draggable Bottom Sheet - SwiftUI
(iOS En) iOS App Development in 2025: How to Choose Your Tech Stack and Architecture
(iOS En) Full-Screen Sheets Using SwiftUI
(iOS En) Customized Animated Paywall using Native SwiftUI StoreKit APIs
(And Ru) Автообновление Android: когда можно не бояться санкций сторов
(And Ru) Доверяй, но проверяй: про корневые сертификаты в Android и не только
(And Ru) Как правильно написать фичу. Часть 1
(And Ru) Что ждёт Android-разработчика на собесе в Wildberries (+ все собеседования)
(Crs Ru) Миграция больших приложений на KMP: проблемы, подводные камни, решения
(Crs En) Build Your First Compose Multiplatform Web App
(Crs En) In-depth on Metro — with Zac Sweers
(Dev Ru) Как мы сделали CI, которому можно доверять
(Dev Ru) Почему текстовый поиск устарел — векторные базы, эмбеддинги, RAG
(Dev En) How to build AI agents with memory
(Dev En) You can write code faster. Can you deliver it faster?

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

(iOS Ru) Собеседование iOS-разработчика: проектирование и лайфкодинг
(Crs Ru) Flutter Web глазами мобильного разработчика
(Dev Ru) Мобильная разработка в Алисе и YaOS: как это работает
(Dev Ru) Перформанс мобильных приложений
Please open Telegram to view this post
VIEW IN TELEGRAM
Генерация крашей

В этом еженедельном дайджесте отрисовка SF Symbols в SwiftUI и краши Android-приложений, неблокирующие заставки и история о переезде на React Native, физический продукт, вместо очередного SaaS, запрет бесплатных раздач приложений от Apple, Топ-10 лучших бесплатных нейросетей и многое другое. Заходите!
👍4🔥2
iOS

В статье подробно разбирается, как в SwiftUI воссоздать визуальный эффект свечения в стиле «Apple Intelligence». Автор показывает, как сочетать несколько слоёв Stroke, размытие и анимированные градиенты, чтобы добиться мягкого светящегося ореола вокруг элементов интерфейса. Ключевая идея — создание многоуровневой композиции: один слой без размытия, другой с наложенным блюром, плюс динамическая смена цветовых стопов градиента. Такое решение позволяет получить плавное и живое свечение, которое легко переиспользовать в разных частях приложения через расширения или модификаторы.

Неуловимый iOS-ботовод. Задетекти меня, если сможешь: автореги, боты, спамеры
Разработка под Apple Vision Pro: исследуем возможности гарнитуры
Elegant Emoji Picker — красивый пикер эмодзи
Adopting Liquid Glass: Experiences and Pitfalls
How to add custom actions to iOS push and local notifications in SwiftUI
VIPER vs TCA: What Large iOS Teams Actually Use
An Apple Intelligence-Style Glow Effect in SwiftUI
👍7
Android

Цель этой статьи — подробно разобраться в том, почему появилась новая библиотека Android Jetpack App Startup Library, какие проблемы она решает в текущих шаблонах инициализации приложений и как она помогает сократить это критическое время запуска. Понимание необходимости этой библиотеки — ключ к её эффективному использованию.

Ускоряем запуск приложения — App Startup Library
OTP Helper — копирование кодов из SMS и уведомлений
Liquid — жидкое стекло на Jetpack Compose
Автообновление Android: когда можно не бояться санкций сторов
Доверяй, но проверяй: про корневые сертификаты в Android и не только
Как правильно написать фичу. Часть 1
Что ждёт Android-разработчика на собесе в Wildberries
UI Kit как рычаг роста: как связать Figma и код
Шутки и веселье в публичном Android API
A Simple key to a Better LazyList in Jetpack Compose
Glitch Effect in Jetpack Compose
Reducing Unnecessary Recompositions: 3 Practical Optimization Techniques for Jetpack Compose
Classic Android Lifecycle vs AndroidX Lifecycle (KTX) — Under the Hood
Stop Event-Drilling in Jetpack Compose with Composition Locals
SubComposeLayout and BoxWithConstraints internals in Jetpack Compose
👍4
Иногда разница между «ну и фигня» и «вау» заключается не в какой-то революционной функции, а в мелких деталях, которые делают ваш продукт плавным, современным и простым в использовании. В этой статье 8 небольших исправлений пользовательского интерфейса, которые создадут ощущение, будто его создала команда волшебников из Кремниевой долины (даже если вы и ваш кот пишите код в два часа ночи).

Разработка

8 небольших изменений в UI, которые сделают ваш продукт в 10 раз умнее
Как я заработал 300 тысяч долларов на проекте с открытым исходным кодом менее чем за 4 года
Как мы сделали CI, которому можно доверять
Что такое RAG
Почему текстовый поиск устарел — векторные базы, эмбеддинги, RAG
2025 State of Mobile Release Management Report
I’m a middle-aged developer, and the way I shine has changed

Маркетинг

Необычный вариант использования?
Подражатели Sora заполонили App Store
AI, игры и новые рынки: Adjust представил отчет о росте мобильной индустрии в 2025 году
Fixing Your ASO to Compete Like the Biggest Apps

Кроссплатформа

Миграция больших приложений на KMP: проблемы, подводные камни, решения
Building a cross-platform step tracker with Compose Multiplatform
👍52
МТС приглашает всех, кто пишет на С++, Go, Python, JS, Java, C# и других языках, на True Tech Champ — всероссийский чемпионат по программированию. Соревнование будет проходить в двух треках.

Трек 1. Алгоритмический. Индивидуальный зачет [призовой фонд 2 750 000 рублей]


Реши задачи, которые помогут прокачаться в работе с алгоритмами и структурами данных. Похожие задания встречаются на собеседованиях в МТС и других крупных компаниях. До 240 лучших участников попадут в финал и сразятся в лайв-кодинге.

Трек 2. Программирование роботов. Командный формат [призовой фонд 7 500 000 рублей]

Проведи робота по виртуальному лабиринту, затем управляй им дистанционно на офлайн-полигоне, а в финале — пройди испытания на реальной площадке и выбей соперников с платформы.

🎁 Организаторы отправят командам финалистов по одному роботу Waveshare Cobra Flex для кастомизации. После соревнований они останутся у участников в качестве подарка.

📍 Зрелищный шоу-финал с ИИ-технологиями, кодерскими челленджами и выступлениями международных и российских спикеров пройдет 21 ноября в МТС Live Холл.

Стоит участвовать, чтобы:
— Освежить знания и прокачать новые навыки.
— Заявить о себе на всю страну, получить карьерный буст и шанс лично пообщаться с HR-специалистами МТС.

Регистрация участников до 20 октября на сайте.
3🤡3
iOS

Примерно 65% критических багов в iOS-приложениях можно выловить ещё на этапе разработки, если грамотно использовать встроенные инструменты Xcode. В сети много материалов о сторонних решениях для отладки и контроля качества iOS-приложений, но часто из виду упускается то, что сам Xcode предлагает всё необходимое «из коробки», при этом многие инструменты остаются невостребованными. В этой статье подробно разбирается 4 инструмента, которые используются в команде для отлова тех самых 65% ошибок.

Эффект свечения в стиле Apple Intelligence в SwiftUI
PostgresNIO — клиент PostgreSQL для Swift
Xcode: ключевые инструменты для ручного тестирования мобильных приложений
Microsoft iOS Developer Interview Experience
Little SwiftUI Tip: Adding Interactions to Path
Lazy Text Rendering for large texts in SwiftUI
👍31
Android

Добавление кастомных изображений в ваше приложение может значительно улучшить и персонализировать пользовательский опыт, а также повысить вовлеченность пользователей. В этой статье рассматриваются две новые возможности генерации изображений с помощью Firebase AI Logic: специализированные функции редактирования Imagen, которые в настоящее время находятся в стадии предварительной версии, и общедоступный Gemini 2.5 Flash Image (также известный как «Nano Banana»), предназначенный для создания контекстных или диалоговых изображений.

ИИ-генерация изображений в Firebase AI Logic
Android для новичков: как не наломать дров с корутинами и какие привычки оставить в прошлом
К вопросу о шифровании данных на мобильных устройствах бизнес-пользователей
Kotlin DSLs: The Secret Weapon for Writing Elegant Android Code
Avoid Using !! in Kotlin — Safer Alternatives for Null Handling
WhatsApp like backup in Android Using Google Drive API
👍1
Тут, оказывается, в Европе подоспели новые законы. Новый Закон ЕС о цифровой справедливости (Digital Fairness Act) и Руководящие принципы CPC (CPC Guidelines) будут рассматривать игровые валюты, такие как драгоценные камни Clash или золото Candy Crush, как финансовые инструменты, требуя экранов подтверждения и повторного одобрения родителей при каждой трате. Илкка Паананен по их поводу аж написал открытое письмо безликим регуляторам Брюсселя: «Не убивайте последнюю великую историю успеха Европы в сфере технологий». А Михаил Каткофф - большую статью о том, зачем это и к чему приведет. Абстрагируясь от пафоса Михаила очень рекомендую к прочтению, дальше ,вероятно, придут и за приложениями. Что думаете?

Разработка

I sailed to be a developer. Became a designer instead.

Маркетинг

Supercell против ЕС: как Европа рискует убить свою курицу, несущую золотые яйца
Неуспешный неуспех

Кроссплатформа

I Made My Flutter App Load 3x Faster
1😱1