28 сентября 2026 года мы взяли первые 100 приложений из раздела «Топ приложений» RuStore и посмотрели, что лежит внутри их APK. Если коротко, крупные российские компании пишут под Android нативно. Flutter или React Native составляют основу только 9 приложений из ста, и пять из этих девяти государственные. Ниже разбор по брендам, способ проверки и таблица, которую можно перепроверить.
Коротко
- Основа на Flutter у 5 приложений, на React Native у 4. Остальные 91 написаны нативно, на Kotlin или Java. У восьми из них внутри есть отдельные модули на Flutter, React Native или Unity.
- Больше всех Flutter использует Яндекс: он есть в Яндекс Go, Картах, Навигаторе и Яндекс Про. В Яндекс Про кода на Flutter больше, чем на Kotlin и Java.
- Jetpack Compose нашёлся у 76 приложений. У 15 есть следы Compose Multiplatform от JetBrains, среди них Альфа-Банк, Wildberries, Магнит, Пятёрочка и Яндекс Маркет.
- Android 7.0 поддерживает только четверть топа, 25 приложений. Самая частая нижняя планка Android 8.0, так у 44 приложений.
Как мы проверяли
- Выборка. Первые 100 приложений раздела «Топ приложений» на сайте RuStore 28.09.2026. Игры магазин показывает отдельным списком, их в выборке нет. Порядок задаёт сам RuStore, и он не совпадает с числом скачиваний: у MAX на первом месте 7 млн скачиваний за месяц, у сотого приложения 464 тысячи. В выборку попали 14 приложений Яндекса, 9 приложений VK, 4 приложения Сбера, банки, маркетплейсы, госсервисы, операторы связи и немного случайного вроде «Скачать ТикТок видео». Так выглядит настоящий топ, мы его не чистили.
- APK. Ссылку на установочный файл отдаёт API RuStore, тот же запрос делает приложение магазина. Все сто APK весят 15,6 ГБ, но качать их целиком не нужно. APK это ZIP-архив, а оглавление архива лежит в самом конце файла. Запросами с диапазоном байтов мы прочитали только оглавление (имя и размер каждого файла) и
AndroidManifest.xml. На все сто приложений ушло меньше 100 МБ трафика. - Признаки. У каждого фреймворка есть файлы, без которых он не работает. Flutter кладёт в APK движок
libflutter.soи скомпилированный код приложенияlibapp.so. React Native кладёт JavaScript-бандлindex.android.bundleи библиотекуlibreactnative.soилиlibhermes.so. Unity, .NET и Cordova узнаются так же. Jetpack Compose видно по служебным файламMETA-INF/androidx.compose.*.version, Compose Multiplatform по библиотеке ресурсов JetBrains. - Основа или модуль. Flutter внутри большого нативного приложения ещё не делает его Flutter-приложением. Поэтому мы сравнили объём кода: скомпилированный Dart или JS-бандл против Java и Kotlin (файлы
classes*.dex). Если кода на фреймворке не меньше половины, считаем фреймворк основой, иначе модулем. Правило грубое, но граница на данных видна чётко: у «основ» соотношение от 0,7 до 3,5, у модулей не больше 0,23.
Итоговая таблица лежит в открытом доступе: JSON и CSV, лицензия CC BY 4.0. Ограничения стоит держать в голове. Мы смотрели только Android, версия для iPhone у той же компании может быть написана иначе. Kotlin Multiplatform без Compose по APK не отличить от обычного Kotlin. Код Mir Pay спрятан упаковщиком, его не видно. У семи приложений сборка вычищает служебные файлы библиотек, и про Compose у них сказать нечего. И это снимок одного дня: 87 приложений из ста обновились за последний месяц.
Что внутри у ста приложений
Главное, что видно по этим цифрам: кроссплатформенные фреймворки в топе есть, но почти не в самых больших приложениях. Банки, маркетплейсы, соцсети и мессенджеры пишут под Android отдельно, а интерфейс собирают на Jetpack Compose. Это уже стандарт. Там, где служебные файлы на месте, Compose не нашёлся только у 17 приложений, и восемь из них написаны на Flutter или React Native.
Flutter и React Native живут в двух нишах. Первая: государственные и городские сервисы, где подрядчику нужно быстро выпустить приложение сразу под две платформы. Вторая: модули внутри больших приложений, когда отдельная команда делает свой раздел и хочет один код на Android и iOS.
На чём написаны приложения Сбера, Озона, Госуслуг, MAX, ВК и Яндекса
Эти бренды чаще всего ищут вместе с вопросом «на чём написано приложение», поэтому начнём с них.
| Приложение | Основа | Интерфейс | Что заметно внутри |
|---|---|---|---|
| СберБанк Онлайн | Kotlin, Java | Jetpack Compose | больше тысячи компонентов в манифесте, карты 2ГИС, нейросети на ONNX Runtime, 3D-движок Filament |
| OZON | Kotlin, Java | Jetpack Compose | карты Яндекса, вход через VK ID и Госуслуги, оплата SberPay |
| Госуслуги | Kotlin, Java | Jetpack Compose и 2111 XML-вёрсток | распознавание лиц и документов, ГОСТ-криптография, карты Яндекса |
| MAX | Kotlin, Java | XML-вёрстка, про Compose не видно | всего 30,6 МБ, WebRTC для звонков, сбор сбоев VK Tracer |
| ВКонтакте | Kotlin, Java | Jetpack Compose | VK ID, VK Tracer, реклама myTarget |
| Telegram | Java и C++ | свой интерфейс без XML-вёрстки и без Compose | ядро на C++ в libtmessages.so |
| Яндекс Go | Kotlin, Java | Compose, модуль на Flutter, Compose Multiplatform | карты Яндекса, AppMetrica |
| Яндекс Про | Flutter по объёму кода | Flutter и Compose | 72 МБ скомпилированного Dart против 59 МБ Kotlin |
| Яндекс Карты, Навигатор | Kotlin, Java | Compose, модуль на Flutter | 328 и 320 МБ, одни из самых тяжёлых в топе |
| Яндекс с Алисой AI, Яндекс Старт, Браузер | C++ (Chromium), Kotlin | про Compose не видно | движок браузера 153 МБ, в «Яндексе» и «Старте» ещё и llama.cpp |
| Wildberries | Kotlin, Java | Compose и Compose Multiplatform | самое тяжёлое приложение топа, 344 МБ |
| Т-Банк | Kotlin, Java | 10 598 XML-вёрсток | карты Яндекса, TensorFlow Lite, криптография КриптоПро |
Размеры указаны по странице приложения в RuStore. «Про Compose не видно» значит, что сборка вычищает служебные файлы библиотек.
Несколько наблюдений, которые не влезли в таблицу.
MAX, самое популярное приложение топа, весит 30,6 МБ, и в его APK 2569 файлов. У приложений VK размер от 42 до 163 МБ, а у VK Видео и ВКонтакте в APK 14 и 18 тысяч файлов. Видно, что за размером MAX следят отдельно.
В приложениях «Яндекс» и «Яндекс Старт» лежат libllama.so и libggml.so. Это llama.cpp, движок для запуска языковых моделей прямо на телефоне. Какая модель через него работает, по APK не понять, но сам движок в приложения уже встроили.
Госуслуги собраны из смеси Compose и классической XML-вёрстки. Для большого приложения с долгой историей это нормально: новые экраны пишут на Compose, старые переписывают постепенно. У Т-Банка XML-вёрсток больше десяти тысяч, а Compose по его APK не видно.
Кто пишет на Flutter и React Native
| Приложение | Фреймворк | Роль | Код фреймворка, МБ | Java и Kotlin, МБ |
|---|---|---|---|---|
| Амина (Москва) | Flutter | основа | 9,6 | 3,4 |
| ГдеБЕНЗ | Flutter | основа | 9,8 | 4,0 |
| Госуслуги Дом | Flutter | основа | 5,1 | 3,2 |
| Лига Ставок | Flutter | основа | 16,0 | 11,4 |
| Яндекс Про | Flutter | основа | 72,1 | 59,3 |
| Яндекс Go | Flutter | модуль | 10,1 | 65,6 |
| Мой МТС | Flutter | модуль | 5,4 | 51,1 |
| Яндекс Карты | Flutter | модуль | 4,6 | 50,2 |
| Яндекс Навигатор | Flutter | модуль | 4,6 | 50,3 |
| Моя школа Дневник | React Native | основа | 22,3 | 6,4 |
| Дневник МЭШ | React Native | основа | 22,2 | 6,4 |
| Налоги ФЛ | React Native | основа | 7,9 | 11,0 |
| СДЭК | React Native | основа | 6,9 | 7,1 |
| Купер | React Native | модуль | 7,6 | 32,8 |
| Bigo Live | React Native | модуль | 1,8 | 27,5 |
| t2 | React Native | модуль | 0,9 | 19,0 |
Код фреймворка: сжатый размер libapp.so для Flutter или index.android.bundle для React Native. Java и Kotlin: сжатый размер всех classes*.dex.
Из девяти приложений, где фреймворк составляет основу, пять государственные: московская «Амина», Госуслуги Дом, два электронных дневника и «Налоги ФЛ». Коммерческих три: СДЭК на React Native, Лига Ставок и небольшое приложение ГдеБЕНЗ на Flutter. Отдельно стоит Яндекс Про, приложение для водителей такси. В нём много нативного кода, но Flutter-кода ещё больше.
Для заказчика здесь важен вывод: в топ RuStore можно попасть с приложением на Flutter или React Native, и госзаказчики этим активно пользуются. А вот банки, маркетплейсы и соцсети с десятками команд держат основу нативной и берут кроссплатформу точечно.
Jetpack Compose и Kotlin Multiplatform: что видно по APK, а что нет
Jetpack Compose есть у 76 приложений. Реальная цифра может быть выше: у семи приложений (MAX, Т-Банк, МегаФон, Лемана ПРО и три приложения Яндекса на Chromium) сборка вычищает служебные файлы, по которым мы узнаём Compose. Там, где файлы на месте, без Compose обходятся Telegram, Госключ, ПСБ, «Мой налог» и ещё несколько приложений.
С Kotlin Multiplatform сложнее. Общий код на Kotlin после сборки под Android превращается в обычный dex, и отличить его от кода, написанного только под Android, нельзя. Видно другое: у 15 приложений есть библиотека ресурсов Compose Multiplatform от JetBrains. Она нужна только интерфейсу, который написан как мультиплатформенный. Это Альфа-Банк, Wildberries, WB Банк, Магнит, Пятёрочка, АЗС «Газпромнефть», Лемана ПРО, Wink, Яндекс Go, Яндекс Маркет, Яндекс Почта, Яндекс Про, «Где мои дети», Zona и CapCut.
Какую долю приложения занимает такой код, по APK не понять. У Магнита, например, так собран модуль с настройками адресов доставки, у CapCut раздел с покупками. Но сам факт показателен: мультиплатформенный интерфейс от JetBrains уже есть в каждом седьмом приложении топа, в том числе у двух банков и двух крупнейших продуктовых сетей.
Какую версию Android и какой размер закладывают
| Минимальная версия | Приложений |
|---|---|
| Android 4.2 и 5.0 | 2 |
| Android 6.0 | 8 |
| Android 7.0 и 7.1 | 17 |
| Android 8.0 и 8.1 | 45 |
| Android 9 | 24 |
| Android 10 и 11 | 4 |
Самая частая нижняя планка Android 8.0. Android 7.0 поддерживают 25 приложений из ста, Android 6.0 только десять. Дальше всех назад смотрят Telegram (Android 5.0) и SHAREit (Android 4.2). Выше всех планка у приложения для электронного голосования ДЭГ, оно требует Android 11.
С целевой версией картина ровнее: 65 приложений собраны под Android 16 (API 36), десять уже под API 37. Отстают пять: ПСБ, СберМобайл и Pinterest собраны под API 34, SHAREit и Zona под API 33.
Медианный размер приложения на странице RuStore 84 МБ. Десять приложений тяжелее 200 МБ: Wildberries (344 МБ), Яндекс Карты (328 МБ), Навигатор (320 МБ), Яндекс Про (312 МБ), 2ГИС (282 МБ) и другие. Девять из десяти работают с картами, десятое это видеоредактор CapCut.
Как понять, на чём написано приложение
Проверить любое Android-приложение можно за пару минут, если есть компьютер и телефон с включённой отладкой по USB.
- Узнайте, где на телефоне лежит APK:
adb shell pm path ru.sberbankmobile(вместоru.sberbankmobileподставьте имя пакета, оно есть в адресе страницы приложения в RuStore или Google Play). - Скачайте файл:
adb pull <путь из первой команды> app.apk. Если команда выдала несколько путей, скачайте все: библиотеки.soчасто лежат не вbase.apk, а вsplit_config.arm64_v8a.apk. - Посмотрите список файлов:
unzip -l app.apkили откройте APK в Android Studio через Build, Analyze APK.
Дальше ищите знакомые имена. Вот как это выглядит у «Амины» на Flutter и у СДЭК на React Native в нашей выборке (размеры в сжатом виде):
ru.mos.amina.app
lib/arm64-v8a/libflutter.so 10,6 МБ движок Flutter
lib/arm64-v8a/libapp.so 9,6 МБ код приложения на Dart
assets/flutter_assets/AssetManifest.bin
com.logistic.sdek
assets/index.android.bundle 6,9 МБ код приложения на JavaScript
lib/arm64-v8a/libreactnative.so 5,9 МБ движок React Native
| Файл в APK | Что это значит |
|---|---|
libflutter.so, libapp.so |
Flutter |
index.android.bundle, libreactnative.so, libhermes.so |
React Native |
libunity.so, libil2cpp.so |
Unity |
libmonodroid.so, assemblies/ |
.NET (Xamarin, MAUI) |
assets/www/cordova.js, capacitor.config.json |
Cordova, Capacitor, Ionic |
META-INF/androidx.compose.*.version |
Jetpack Compose |
composeResources/, org.jetbrains.compose в манифесте |
Compose Multiplatform |
ничего из этого, много classes*.dex |
нативное приложение на Kotlin или Java |
Если фреймворк нашёлся, сравните размеры: крупный libapp.so или бандл при небольших classes*.dex значит, что фреймворк и есть приложение. Маленький бандл внутри большого dex значит, что это отдельный модуль.
Что это значит, если вы заказываете приложение
Топ RuStore показывает, как выбирают крупные компании, но у них другие условия. Десятки команд, годы развития, NFC-платежи, биометрия, ГОСТ-криптография и тяжёлые карты. Под такие задачи натив и Compose логичны, и почти все лидеры рынка выбрали именно их.
У заказчика, который выпускает первую версию продукта, задачи обычно проще: каталог, формы, личный кабинет, оплата, пуши. Такие приложения хорошо получаются на Flutter или Kotlin Multiplatform, и в топе есть живые примеры: Госуслуги Дом, «Амина», электронные дневники, СДЭК. Одна команда и один код на две платформы экономят заметную часть бюджета, а пользователь разницы не видит.
Мы решаем это по списку функций, а не по моде. Если в проекте много системных возможностей телефона, пишем нативно. Если основная часть это экраны с данными, берём общий код для Android и iOS. Подробнее о том, как мы делаем кроссплатформенные приложения и нативные приложения под Android. Сравнение с третьим вариантом, мини-приложением в мессенджере, есть в статье «Telegram Mini App или нативное приложение», а какие SDK аналитики, пушей и оплаты стоят в тех же ста приложениях, мы разобрали отдельно.
Проверку повторим через три месяца и обновим цифры в этой статье.