Разработка
Анализ приложений Threads
Мы можем немногое узнать, глядя на публичные сборки Meta, но похоже, что Threads в значительной степени заимствует подходы и код Instagram на обеих платформах.
Threads — это новое приложение от команды Instagram, предназначенное «для обмена текстовыми обновлениями и участия в публичных обсуждениях». Возможно, выпуск этого приложения был в планах уже давно, а возможно команда Meta*/Instagram* подумала, что людям может понадобиться новое приложение для обмена текстовыми обновлениями после всего, что происходило с Twitter в последнее время 🤷.
Meta вкладывает значительные внутренние ресурсы в оптимизацию мобильной производительности. Вы можете просмотреть анализ любого приложения, и мобильные приложения Meta достаточно хорошо оптимизированы. Meta использует некоторые паттерны, которые не являются типичными “лучшими практиками”, но у Meta есть инфраструктура и инженерные мощности, чтобы хорошо их реализовать.
Android-приложение Threads
- Версия: 289.0.0.77.109
- Размер: 72.3 MB
- Интерактивная версия: тут
![]()
Как и другие приложения Meta, Threads поставляется в виде универсального APK. AAB считаются лучшей практикой, но Meta активно оптимизирует свои универсальные APK — обфусцирует ресурсы, упаковывает общие библиотеки и использует Redex.
Удивительно, что Threads поставляется с отладочным кодом. Threads имеет такие отладочные пакеты, как com.instagram.debug.devoptions.sandboxselector и com.instagram..debug.quickexperiment.
Разработчики используют React Native для части приложения — InstagramBundle.js.hbc.spk.xz, вероятно, является сжатой версией байткода Hermes (js.hbc).
Имеется большой файл .spo, который выглядит как скомпилированная версия различных нативных библиотек. Вместе с ним упакован файл метаданных:
arm64-v8a/librtc.so 11336240 bda527a307edd868700fccfab15481f403d3f39363289d5d6a717579f284bed7 arm64-v8a/libgojni.so 11330024 616915938eb1face6aa3392aedab8bddce280f2b84423377ac65896a6b3faad7 arm64-v8a/libarfxgraphicsmerged.so 9710600 afb00aa881a63b20371e447dbbad61fefcf4df2c23c922a9e44e2171d7a649ad ...
Можно предположить, что файл .spo представляет собой объединенную версию всех нативных библиотек, вторая запись — смещение/размер, третья — контрольная сумма.
Судя по сообщению @richz (инженер Threads), Threads в основном использует Jetpack Compose для своего пользовательского интерфейса. Часть dex, посвященная compose, относительно мала (~130 КБ) по сравнению с общим размером dex. Это может означать, что они эффективно используют Compose и/или используют код из Instagram, в результате чего его использование кажется меньше, чем есть на самом деле.
Сходство с приложением Instagram
Похоже, что Threads имеет много общего с приложением Instagram (v289.0.0.25.49). Упомянутый выше InstagramBundle.js.hbc.spk.xz аналогичен для Threads и IG. Набор /assets/dsp также одинаков для обоих приложений. Вполне логично, что эти приложения будут использовать общий код, поскольку Threads сильно интегрирован с Instagram.
iOS-приложение Threads
- Версия: 289.0
- Размер: 244.2 MB
- Интерактивная версия: тут
![]()
Для Threads на iOS характерны два момента:
- В Threads нет динамических библиотек, в то время как в приложении Facebook* активно используются динамические фреймворки.
- Threads имеет один из самых больших плагинов, которые мы когда-либо видели. Расширение BarcelonaShareExtension имеет размер 81 МБ. Для сравнения, самый большой плагин Instagram — InstagramNotificationExtension — имеет размер 23.5 МБ. TheInstagramShareExtension имеет размер 5.6 МБ.
Интересно, что FBSharedFramework Instagram имеет много общих элементов с расширением BarcelonaShareExtension от Thread.
Некоторые заметные общие элементы
- FilterAsset.bundle
- ig_signals_cupid_better_recall_v1.mlmodelc и ig_signals_cupid_v2.mlmodelc
- Каталог ассетов практически полностью совпадает
Как и в случае с приложением для Android, похоже, что для ускорения разработки Threads и Instagram смогли поделиться значительным количеством кода. Команда Threads хотела двигаться быстро и брала из Instagram все, что могла, и пихала туда, куда нужно.
Время запуска Threads
Хотя большая часть кода обфусцирована, можно использовать ETTrace для просмотра времени запуска потоков
![]()
Если вы хотите самостоятельно посмотреть время запуска Thread, вы можете скачать этот JSON-файл и загрузить его в ETTrace.
Мы работаем с обфусцированными сборками, поэтому из трассировки стека можно получить очень немногое. Но мы видим, что значительное количество времени уходит на pre-main (~50 мс из трассировки).
При запуске приложения инициализируется WKWebView, который работает довольно медленно. Это говорит о том, что процесс входа в систему не является нативным и отображает веб-вью, либо используется в фоновом режиме для отслеживания.
![]()
Итог
Мы можем немногое узнать, глядя на публичные сборки Meta, но похоже, что Threads в значительной степени заимствует подходы и код Instagram на обеих платформах. Будет интересно посмотреть, изменится ли это.
-
Разработка3 недели назадДаем ИИ видеть SwiftUI: Xcode Preview MCP на практике — проблемы и надежды
-
Новости4 недели назадВидео и подкасты о мобильной разработке 2026.39
-
Новости3 недели назадВидео и подкасты о мобильной разработке 2026.40
-
Новости2 недели назадВидео и подкасты о мобильной разработке 2026.41
