О компании
Мы всегда ищем толковых ребят — пишите на
в рейтинге разработки мобильных приложений «под ключ»
Рейтинг Рунета
2 место
  • /
  • /
28 апреля 2025

ВРЕМЯ ПРОЧТЕНИЯ — 9 МИН

Интеграция JavaScript в нативные мобильные приложения для криптотрейдинга: нестандартный опыт и технические решения

JavaScript в мобильных приложениях
Как создать мобильное криптоприложение и обеспечить его стабильность
Современные криптотрейдеры всё чаще выбирают смартфон в качестве основного инструмента — по данным отрасли, более 60% сделок совершаются именно с мобильных устройств. Это требует от разработчиков создания не просто красивых приложений, а полноценных, безопасных и быстрых платформ для торговли, где ошибки могут стоить дорого: от некорректного отображения баланса до утерянных средств.

Создание мобильного криптотрейдинга — это не перенос веб‑интерфейса в приложение. Это отдельная инженерная задача со множеством нюансов. Пользователь ожидает, что сможет торговать быстро, удобно и безопасно, не вникая в технические детали.

Среди трендов, которые формируют рынок мобильного криптотрейдинга:

  • Активный переход пользователей с веба в мобайл — интерфейсы становятся более приспособленными к экрану телефона, а требования к производительности выше.
  • Запрос на нативность — приложения должны быть быстрыми, безопасными и «родными» для операционной системы.
В этой статье мы делимся совместным опытом с командой EVEDEX, где мы интегрировали SDK на TypeScript (изначально предназначенный для веба) в нативные приложения, чтобы сохранить единую бизнес‑логику между платформами. Это решение дало массу преимуществ — но и принесло немало сложностей.

Почему мы выбрали SDK и с какими вызовами столкнулись

На веб‑версии EVEDEX уже использовался собственный Exchange SDK — библиотека на TypeScript, которая соединяет API биржи с клиентской частью. Постепенно в ней появилась полноценная бизнес‑логика: от агрегации рыночных данных до подписания ордеров и отправки их на валидацию.

Ключевая задача — обеспечить идентичное поведение на всех платформах. Мы хотели избежать дублирования логики, сократить количество ошибок и ускорить разработку. Это означало: интеграция существующего веб‑SDK в нативные приложения.

Однако SDK был написан на TypeScript и не предусматривал использование за пределами браузера. Это стало главным техническим вызовом.
Мы вместе подробно обсудили возможные варианты реализации. С учётом всего контекста решили попробовать внедрить полноценный SDK на TypeScript в нативное приложение. Для нас это было в новинку — но мы были готовы решить эту нестандартную задачу.
Александр Кияйкин, CTO CleverPumpkin
Первым шагом стало подключение полноценного JavaScript-движка внутрь приложения. На iOS был доступен встроенный JavaScriptCore, но для Android пришлось искать альтернативу. Мы остановились на LiquidCore — независимом JS-движке с открытым исходным кодом.

Чтобы обеспечить удобную работу с SDK из нативного кода, была написана кроссплатформенная обёртка, которая реализовывала взаимодействие между SDK и бизнес-логикой приложения.
Проблемы, с которыми мы столкнулись:

  • Не все JS-движки поддерживают последний синтаксис ECMAScript — нам пришлось понизить уровень трансляции TypeScript в поддерживаемую версию JS.
  • JS-движки не имеют прямого доступа к системным возможностям: HTTP-запросы, WebSocket, работа с сетью — всё это требует реализации в нативном коде.

В результате SDK был модифицирован. Теперь он использует внешние интерфейсы для сетевой логики — HTTP и WebSocket-взаимодействие реализуется на стороне Swift/Kotlin, а логика обработки остаётся в JS. Как итог, бизнес-логика осталась в SDK, а низкоуровневая работа с сетью — за нативным кодом. Это позволило сохранить целостность архитектуры и ускорить разработку без ущерба для производительности.

Работа с кошельками. Реализация депозита и вывода средств

Ни одна криптобиржа не обходится без функциональности депозита и вывода средств. Нашей целью было сделать этот процесс понятным и безопасным. Для удобства пользователей мы добавили возможность гибкого внесения средств с разных сетей, используя сервис LI.FI, что позволило:

  • Переводить активы из одной сети в другую.
  • Делать это в несколько кликов, без необходимости вручную искать бриджи или понимать внутреннюю логику взаимодействия между сетями.
  • Гибко подбирать подходящий вариант по цене/скорости.
Мы сознательно остановили свой выбор на использовании WebView. Несмотря на то, что приложение написано на нативных технологиях, а для работы с JS мы используем отдельный движок, WebView помогло быстро интегрировать интерфейс LI.FI без необходимости повторной реализации его UI в нативе. Это дало возможность сохранить единый пользовательский опыт на вебе и в мобильном приложении, а также упростить обновление функциональности депозитов.
При этом нужно было учесть особенности взаимодействия с криптокошельками в мобильной среде. Для подключения и взаимодействия с ними мы использовали EIP-1193 (Ethereum Provider JavaScript API) — стандарт, определяющий, как приложения могут интегрироваться с Ethereum-кошельками. Мобильное приложение поддерживает разные варианты подключения:

  • С помощью MetaMask.
  • Импорт внешнего кошелька по сид-фразе или приватному ключу.
  • Создание нового кошелька прямо внутри приложения.
Независимо от выбранного способа, приложение умеет выступать в роли провайдера используемого кошелька для страницы депозита. Это позволило использовать уже существующий интерфейс из веб-версии без необходимости создавать для приложения отдельную систему.

NB: на текущем этапе EVEDEX работает с Ethereum‑совместимыми сетями, поэтому альтернативные стандарты не рассматривались.
Интеграция TypeScript SDK в нативное мобильное приложение оказалась задачей нестандартной и местами сложной, но она позволила нам обеспечить идентичное поведение на всех платформах, исключить дублирование логики, сократить количество ошибок и значительно ускорить процесс разработки:

  • SDK для веба можно адаптировать под мобильную среду, но это требует пересмотра архитектуры и грамотной декомпозиции логики.
  • Изоляция бизнес-логики от системных вызовов — ключ к поддерживаемой архитектуре. В нашем случае нативный код взял на себя сетевые операции и работу с WebSocket, а SDK остался отвечать только за логику.
  • Использование стандартов, таких как EIP-1193, позволило сохранить совместимость с кошельками и упростить реализацию.
  • Комбинация нативного кода, JS-движка и WebView дала нужный баланс между скоростью разработки, гибкостью и UX.
Было непросто, но теперь мы точно знаем, как встроить TypeScript SDK в нативное криптоприложение. Это не только ускорило работу, но и дало нам архитектурную основу на будущее.
Влад Комиссаров, CTO EVEDEX
Создание мобильного приложения EVEDEX стало не просто реализацией очередного продукта, а реальным технологическим экспериментом, который теперь может стать отправной точкой для других команд, ищущих нестандартные решения в мире крипты.

Мы в CleverPumpkin разрабатываем и развиваем мобильные приложения, в том числе для сферы финтех и криптовалютных бирж. Если вы ищете команду, которая умеет работать с такими проектами и решать нестандартные задачи — напишите нам.
Другие статьи по теме:
Есть идея?