KHD
KHD Labs Mobile & Web Studio

Engineering Blog

Technical analyses from our studio: how we profile cross-platform frame drops, resolve multi-device offline sync conflicts, and streamline web platform bundles.

Showing 12 of 12 articles
Category:
Architecture / Offline-First & SQLite
9 min read

Offline Sync Is Never 'Just SQLite': Battle Scars from Multi-Device Conflict Resolution

Why slapping WatermelonDB or raw SQLite on an app doesn't solve offline sync. How edge-case race conditions wipe out customer data, and how we architect idempotent delta streams.

Issue: App corrupts data or loses records when network drops
0 data loss across 1.4M offline field transactions
Read article →
Architecture / Backend & Cloud Economics
11 min read

The $14,000 Cloud Bill That Should Have Been a Single Box: Unwinding Premature Microservices for Mobile Backends

How a 6,000-user mobile product ended up running 14 Kubernetes microservices, paying AWS astronomical NAT gateway bills, and how we collapsed it into a $120/mo monolith that cut latency by 80%.

Issue: Cloud infrastructure costs burning runway before product-market fit
AWS spend: $14,200/mo → $120/mo with 78ms lower p95
Read article →
Web Platforms / Web Vitals & Bundle Dieting
7 min read

Why 4MB JS Bundles Kill Mobile Web Conversion: Real-World Bundle Dieting

Most mobile web visitors bounce before your React bundle hydrates. Here is how we diagnose bloated chunks, kill accidental barrel-file imports, and cut TTI from 6.8s to 900ms on 4G.

Issue: Mobile web bounce rates are high and Lighthouse scores are red
Time-to-Interactive on 4G: 6.8s → 880ms, +22% conversion
Read article →
Architecture / State Management & React Native
8 min read

Stop Using Redux or Zustand as a Second Database: Local Cache vs Remote State

Why frontend teams waste months building normalized client-side stores, how JSON serialization bloat exhausts mobile memory, and what to use instead.

Issue: Mobile app crashes on older phones due to out-of-memory errors
App RAM usage: 310MB → 84MB idle memory
Read article →
Mobile Internals / iOS Systems & Memory
10 min read

Memory Jetsam on iOS: Why Your App Silently Dies in the Background on Older iPhones

Why Sentry and Crashlytics show zero stack traces when iOS kills your app, how dirty memory pages trigger kernel Jetsam eviction, and how to measure real memory footprint.

Issue: Users complain the app constantly restarts when switching between apps
Jetsam background kill rate: 19.4% down to 0.1%
Read article →
Performance / Networking & Battery Profiling
7 min read

WebSockets vs Server-Sent Events for Mobile: A Real Battery & Reconnect Teardown

Why keeping a bidirectional WebSocket open drains phone batteries through cellular radio tail states, and why Server-Sent Events over HTTP/2 are superior for 90% of mobile feeds.

Issue: App burns customer battery and gets flagged in iOS Battery Settings
Battery drain reduced by 34% over 8hr active shift
Read article →
Mobile Internals / Graphics & Memory Optimization
9 min read

Image Pipelines That Don't Choke: Native Downsampling and List Recycling

Why loading 4K images into 60px thumbnails murders mobile scroll performance, how decoded bitmap buffers blow up RAM, and how we implement zero-alloc image downsampling.

Issue: App freezes or crashes when scrolling through image-heavy feeds
List scroll hitch rate: 14.2% → 0.2% on 120Hz
Read article →
Product Engineering / Native vs Cross-Platform
8 min read

The False Economy of 'Write Once, Run Anywhere': When Native Swift and Kotlin Are Actually Cheaper

Most agencies sell cross-platform to protect their own staffing margins. Here are the 4 specific architectural constraints where React Native or Flutter will cost you twice as much as dual native.

Issue: Deciding between native iOS/Android or cross-platform for an upcoming build
Client saved 4 months of rewrite by pivoting to Swift early
Read article →
Architecture / Databases & PostgREST
9 min read

Postgres Row-Level Security for Mobile Clients: High Velocity or Latency Bottleneck?

Direct client-to-database architectures promise instant mobile APIs. Here is why unindexed RLS policies silently destroy Postgres query throughput and how we tune them.

Issue: Supabase or PostgREST backend slows down as user table grows
Query execution: 1,840ms → 14ms on 100k row table
Read article →
Product Engineering / App Store Compliance & Architecture
8 min read

App Store Review Russian Roulette: 5 Real Rejections and the Architectural Defenses We Build

From Guideline 3.1.1 IAP ambushes to Guideline 5.1.1 account deletion requirements, here are the real architectural tripwires that delay product launches and how we build around them.

Issue: Apple App Store or Google Play rejected your build 48 hours before launch
100% first-pass review approval rate across 18 studio releases
Read article →