Development of UX/UI Design for Crypto Exchange
Exchange design is a balance between professional information density and accessibility for a broad audience. Binance is overloaded. Robinhood is simplified to the point of losing functions. A good exchange finds balance: novice doesn't get lost, professional isn't bored.
Research and Audience
Before design—define target audience. This radically changes decisions:
Retail trader (main mass): accustomed to mobile apps, doesn't understand order book, fears margin. Needs: simple spot trading, clear balances, obvious P&L.
Active trader: trades for hours, uses indicators, wants fast order placement, hotkeys, customizable layout.
Professional/institutional: needs FIX API, detailed history, data export, sub-accounts.
For most exchanges—multi-tier design: Simple Mode and Advanced Mode, switchable with one click.
Trading Screen—Main Interface
Advanced Mode Layout
┌─────────────────────────────────────────────────────────┐
│ LOGO [BTC/USDT ▼] 42,150 +2.35% [Simple | Pro] ⚙ │
├──────────────┬──────────────────────┬────────────────────┤
│ │ │ │
│ ORDER BOOK │ CANDLESTICK CHART │ PLACE ORDER │
│ (DOM) │ (TradingView) │ ┌─────────────┐ │
│ │ │ │ BUY │ SELL │ │
│ ASK │ │ └─────────────┘ │
│ 42,152 1.2 │ │ Limit ▼ │
│ 42,151 0.8 │ │ Price: ______ │
│ 42,150 2.1 │ │ Amount: _____ │
│ ────────── │ │ Total: ______ │
│ 42,149 1.5 │ │ [──────────] │
│ 42,148 3.2 │ │ 25% 50% 75% 100% │
│ BID │ │ [ Place BUY ] │
│ │ │ │
├──────────────┴──────────────────────┤ │
│ TRADE HISTORY ⟷ MY ORDERS │ │
│ 42,150 0.5 14:31:22 B │ │
│ 42,149 1.2 14:31:18 S │ │
└─────────────────────────────────────┴────────────────────┘
Order Form—Critical UX Element
Errors in order placement—direct financial losses. Form requirements:
Slider for position size: user selects 25/50/75/100% of available balance with one click. Entering number in field—slow and error-prone.
Confirmation for large orders: if order > 10% of user's daily volume—confirmation dialog.
Decimal precision: BTC with 8 decimals, USDT with 2. Auto-formatting.
Real-time preview: while user enters amount—instantly show Total: 4,215.00 USDT and Fee: 4.22 USDT.
// Real-time calculation in order form
function OrderForm() {
const [quantity, setQuantity] = useState('');
const [price, setPrice] = useState('');
const total = useMemo(() => {
const q = parseFloat(quantity) || 0;
const p = parseFloat(price) || lastPrice;
return (q * p).toFixed(2);
}, [quantity, price, lastPrice]);
const fee = useMemo(() => {
return (parseFloat(total) * TAKER_FEE_RATE).toFixed(4);
}, [total]);
return (
<form>
<input value={price} onChange={e => setPrice(e.target.value)} placeholder="Price" />
<input value={quantity} onChange={e => setQuantity(e.target.value)} placeholder="Amount" />
<BalanceSlider
available={availableBalance}
price={parseFloat(price) || lastPrice}
onSelect={(pct) => setQuantity(((availableBalance * pct) / parseFloat(price)).toFixed(8))}
/>
<div>Total: {total} USDT</div>
<div>Fee: {fee} USDT</div>
<button type="submit">Place BUY</button>
</form>
);
}
Color Scheme and Typography
Trading Colors
International standard:
- Green (#00B15E or #26A69A): price up, buy buttons, profit
- Red (#E84242 or #EF5350): down, sell buttons, loss
Regional difference: in China and Japan—reverse (red = up). For Asian market need invert option.
Dark vs Light Theme
Traders prefer dark theme: less eye strain with hours of screen time. Light—for mobile in daytime.
:root[data-theme="dark"] {
--bg-primary: #0D0F12;
--bg-secondary: #141619;
--bg-card: #1A1D22;
--border: #2A2D35;
--text-primary: #EAECF0;
--text-secondary: #8B8FA8;
--green: #00B15E;
--red: #E84242;
}
:root[data-theme="light"] {
--bg-primary: #F5F6FA;
--bg-secondary: #FFFFFF;
--bg-card: #FFFFFF;
--border: #E4E7EF;
--text-primary: #1A1D2E;
--text-secondary: #6B7087;
}
Monospace Font for Digits
Prices and volumes—monospace only. JetBrains Mono, Roboto Mono, IBM Plex Mono. Otherwise on rate updates columns "twitch"—different digit widths.
.price, .quantity, .total, .balance {
font-family: 'JetBrains Mono', 'Roboto Mono', monospace;
font-variant-numeric: tabular-nums; /* tabular numbers—same width */
}
Markets / Watchlist Screen
Exchange homepage—list of trading pairs:
┌──────────────────────────────────────────────┐
│ 🔍 Search pair... [Favorites] [All] [BTC]│
├──────┬──────────┬─────────┬─────────┬────────┤
│ ★ │ Pair │ Price │ 24h % │ Volume │
├──────┼──────────┼─────────┼─────────┼────────┤
│ ★ │ BTC/USDT │ 42,150 │ +2.35% │ 1.2B │
│ ★ │ ETH/USDT │ 2,205 │ +1.87% │ 456M │
│ │ SOL/USDT │ 98.5 │ -0.42% │ 89M │
└──────┴──────────┴─────────┴─────────┴────────┘
Key details:
- Sparkline chart in row (miniature 7-day graph)—context without click
- Row color changes on update: flash green/red for 300 ms
- Quick navigation to trading screen on row click
Mobile Design
Mobile layout for trading screen—tab-based, not desktop compression:
Tabs: [Positions | Chart | Order Book | Trade]
Each tab—full screen. Order book on mobile shows 10–15 levels (not 50 like desktop). Order form—bottom sheet appearing on "Buy/Sell" click.
Design Process
- Research (3–5 days): analysis of Binance, OKX, Kraken, Coinbase Advanced, Bybit
- Information Architecture (3–5 days): screen map, userflows for 5 key scenarios
- Wireframes (1–2 weeks): all screens for desktop and mobile
- Design system (1 week): colors, typography, components
- High-fidelity design (3–4 weeks): all screens with animations and states
- Prototype & Testing (1 week): Figma prototype + usability testing
- Developer Handoff (3–5 days): Storybook components, CSS variables, specifications
Full UX/UI design of exchange: 8–12 weeks.







