Order Book Implementation for Mobile Exchange Apps

We have been developing mobile exchange applications for over 5 years and have completed 30+ projects with real-time data integration. One of the most demanding components is the order book. Data updates every 100 ms, the list can contain up to 500 price levels, and the interface must remain respons

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Order Book Implementation for Mobile Exchange Apps
Medium
~3-5 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    599

We have been developing mobile exchange applications for over 5 years and have completed 30+ projects with real-time data integration. One of the most demanding components is the order book. Data updates every 100 ms, the list can contain up to 500 price levels, and the interface must remain responsive even under peak load. Without optimization, the app lags at just 50 levels — users flee to competitors. We handle all technical challenges: from protocol selection and snapshot synchronization to rendering virtualization and decimal precision handling. Contact us for a consultation on implementing an order book tailored to your exchange.

How to Avoid Lags When Rendering the Order Book

Rendering the order book is the primary source of performance issues. 100 price levels × updates every 100 ms = 10,000 updates per second. On a mobile device, this causes lags without optimizations.

Virtualization is the key technique. We display only visible levels, not all 100. On iOS — UITableView with reloadRows(at:with:) for changed rows, not reloadData(). On Android — RecyclerView with DiffUtil to compute minimal changes. In Flutter — ListView.builder with itemCount. This reduces UI load by 2.5x.

Batching updates. Do not update the list on every WebSocket event. We accumulate updates and apply them every 250–500 ms. The user does not notice the difference, and the renderer does 2.5x less work.

Approach iOS Android Flutter
Virtualization UITableView RecyclerView ListView.builder
Updating reloadRows DiffUtil itemBuilder
Batching CADisplayLink Choreographer Timer

Colors and highlighting: on price decrease — red background, on increase — green, then smoothly return to neutral. We implement this via color animation with CABasicAnimation (iOS) or ValueAnimator (Android). Do not keep timers on each row — use a single timer for the entire list.

Data Source: WebSocket

The exchange order book updates via WebSocket — HTTP polling is unacceptable due to latency. WebSocket provides 10+ times lower delay than polling, which is critical for trading. Standard approach: get a snapshot via REST, then subscribe to incremental updates via WS.

Example for Binance API (pattern used by most exchanges):

GET https://api.binance.com/api/v3/depth?symbol=BTCUSDT&limit=100 → snapshot with full bids and asks WSS wss://stream.binance.com:9443/ws/btcusdt@depth@100ms → incremental updates every 100ms 

Applying incremental updates: if a price level already exists in the book, update quantity. If quantity is 0, remove the level. If price is new, add it. This is the standard diff algorithm for an order book. The Binance API documentation describes this method.

How to Sync Snapshot and Stream?

A critical point often implemented incorrectly: the WebSocket starts sending updates before the REST request for snapshot has returned. You must buffer WS events, obtain the snapshot with its lastUpdateId, then apply all buffered events with firstUpdateId <= lastUpdateId + 1. Missed an event? Desynchronized? The only way out is to reconnect and get a new snapshot. Do not attempt to recover state from partial data.

Why Is Number Precision Critical for Order Book?

Prices and volumes on exchanges are decimals with high precision. BTC trades with 8 decimal places. Using Double leads to rounding errors. We use Decimal (iOS) or BigDecimal (Android) for correct display and summation. Comparison: Double gives up to 0.0001% error over 1000 operations, while Decimal gives zero. Formatting: different trading pairs have different tick sizes (minimum price step). For BTC/USDT tick size is 0.01, for altcoins up to 8 decimals. The number of displayed decimals is taken from pair metadata, not hardcoded.

Comparison of Synchronization Approaches

There are three main ways to synchronize order book data. The first is periodic full snapshot requests: simple to implement, but generates high traffic and increases latency. The second is subscribing to incremental updates via WebSocket: low latency, but complex synchronization, especially on packet loss. The optimal is hybrid: one-time snapshot on connection, then incremental updates. This approach requires buffering WS events until snapshot receipt and order correction, but gives the best balance of performance and reliability. We use this in all projects — it reduces traffic by 20x compared to full snapshot and provides update latency under 50 ms.

Step-by-Step Synchronization Implementation

  1. Establish WebSocket connection and start buffering all incoming messages.
  2. Send REST request to obtain snapshot with the last update id.
  3. After receiving the snapshot, apply buffered events with firstUpdateId <= lastUpdateId + 1.
  4. If event loss or desynchronization is detected — reconnect and repeat steps 1-3.
  5. After successful synchronization, switch to real-time stream processing using the diff algorithm.

Depth Chart

Visualize volumes via an accumulated histogram (depth chart) — we accumulate volume from the best price to worst. Draw using CAShapeLayer / Canvas / CustomPainter in Flutter. Update no more than once per second — it's a visualization, not a trading tool.

Offline and Reconnection

On connection loss, we clear the book and show a "No Data / Reconnecting" state. Do not display an outdated book as current — it misleads during trading. Reconnection logic: exponential backoff from 1 s to 30 s. After restoration, we re-fetch the snapshot and resubscribe.

What's Included

  • Architecture of WebSocket connection with snapshot/incremental synchronization.
  • Implementation of virtualized list with batching and animation.
  • Integration of depth chart and number formatting with tick size.
  • Handling offline mode and reconnection with exponential backoff.
  • Testing on real data and performance optimization.
  • Documentation and source code delivery.

Cost and Savings

The cost of order book implementation is calculated individually — it depends on integration complexity, number of trading pairs, and customization needs. On average, ordering a ready module costs 30-50% less than developing from scratch and saves 2-4 weeks of team time. Contact us for a project estimate.

We guarantee correct synchronization and responsive interface under any load. Get a consultation — we will analyze your API and propose the optimal solution.