State of SDUI Before Google I/O 2026: What Every Mobile Developer Should Know

April 6, 2026 · 12 min read · #55

Google I/O 2026 is six weeks away (May 19–20). RemoteCompose is in AndroidX alpha. Nubank just revealed their SDUI serves 115 million customers. Flutter has three new SDUI packages this quarter alone. And Medium is flooded with "RemoteCompose will kill app updates" hot takes.

The server-driven UI space has never been this active — or this confusing. Before I/O adds more fuel to the fire, here's where things actually stand.

The Three Waves of SDUI

Understanding SDUI in 2026 requires understanding how we got here.

Wave 1: Internal Tools (2018–2022)

The big companies built their own. Airbnb had their "Ghost Platform." DoorDash built "Foundry" (internally called Lego). Lyft, Netflix, Uber — all had proprietary SDUI systems powering millions of screens. These were massive investments: DoorDash's system took years and a dedicated team.

The problem? Zero knowledge transfer. Every company reinvented the same wheel: JSON schema → parser → renderer → action system. The architecture patterns were remarkably similar, but the implementations were siloed.

Wave 2: Open Source Attempts (2022–2025)

Yandex released DivKit. Smaller projects like sdui.design appeared. Flutter got early experiments. But adoption was limited — the projects were either too opinionated, too complex, or too tied to specific ecosystems.

The fundamental challenge: SDUI requires deep integration with your component library. A generic solution either gives you generic (ugly) components or forces you to write adapters for every widget anyway.

Wave 3: Platform-Level Recognition (2025–Now)

This is where we are. Google putting RemoteCompose in AndroidX signals that dynamic UI delivery is becoming a platform concern, not just an application pattern. The question is no longer "should we do SDUI?" but "which flavor?"

Key Insight: Wave 3 is different because the problem is now well-understood. The debate has shifted from "what is SDUI?" to "how do we avoid the mistakes of the first two waves?"

The Current Landscape: Who's Doing What

Solution Approach Platform Maturity
RemoteCompose Binary format, drawing-level Android only Alpha (alpha05)
DivKit JSON schema, layout-level Android, iOS, Web Production (Yandex)
Nativeblocks BYOC compiler, native Android, iOS, RN Production
Digia Low-code visual builder Flutter Production
home_library Section templates, JSON Flutter Early (v0.4)
Pyramid BYOC + typed DSL codegen Android, iOS Beta

RemoteCompose: What It Is and What It Isn't

RemoteCompose is the most discussed SDUI-adjacent technology right now, and also the most misunderstood.

What it actually is: A binary format that serializes Compose rendering operations. Think of it like a vector graphics format (SVG) but for Compose UI. The server sends binary instructions; the client renders them exactly.

What it isn't:

The wave of Medium articles claiming "RC will replace app updates" misses this distinction. RC is excellent for certain use cases — dynamic promotional content, seasonal themes, A/B testing visual layouts. It's not a replacement for component-level SDUI with business logic, action handling, and analytics.

What Nubank Taught Us

The most important SDUI story of 2026 isn't RemoteCompose — it's Nubank's InfoQ talk about "Catalyst."

The numbers: 115 million customers. 43% of the app running on SDUI. 3,000+ engineers. Flutter-based tree-walk interpreter. This is SDUI at massive scale, proven in production.

Key architectural decisions from their talk:

  1. Component-level, not drawing-level. They compose known widgets, not arbitrary graphics.
  2. Type-safe schemas. Components have typed props validated at build time.
  3. Gradual adoption. Started with a few screens, expanded to 43% over years.
  4. Custom components first. They use their own design system components, not generic ones.

Nubank validates the approach that mature SDUI teams converge on: bring your own components, type-safe schemas, server-driven composition.

The Five Questions Every Team Gets Wrong

After studying internal systems at DoorDash, Nubank, Airbnb, and others, the same failure patterns emerge:

1. "Let's Build a Generic Component Library"

Every team tries this first. A universal set of components that work for any screen. Three months later, you have 200 "generic" components that are really just wrappers around your actual design system. The fix: Start with your existing components. Map them, don't replace them.

2. "JSON Is Our Schema"

Raw JSON with no type safety is a maintenance nightmare at scale. When a backend developer misspells a prop name, you get a runtime crash, not a compile error. The fix: Typed DSLs that generate validated JSON. Backend developers get autocomplete; mobile developers get guarantees.

3. "We'll Add Analytics Later"

In traditional apps, adding analytics is straightforward — you know which screen the user is on because you wrote the code. In SDUI, the screen is defined by the server. If you don't bake exposure tracking into the SDUI layer, you lose the ability to measure which server-driven variants perform better. The fix: Build analytics into the rendering pipeline from day one.

4. "We Don't Need Versioning"

App version 1.0 has 10 components. Version 2.0 adds 5 new ones. The server sends a response using a v2 component to a v1 client. Crash. The fix: Schema versioning with graceful degradation. Unknown components render fallbacks, not exceptions.

5. "We'll Handle Actions on the Client"

Actions (navigation, API calls, analytics events) are the hardest part of SDUI. Hardcoding action handlers defeats the purpose of server-driven architecture. The fix: A structured action system — navigate, dismiss, HTTP request, deep link — with composable action chains.

What to Watch at Google I/O

Based on the RemoteCompose trajectory and Android ecosystem signals:

Prediction: Google will position RemoteCompose for dynamic content and personalization — not as a general-purpose SDUI replacement. The companies doing real SDUI (DoorDash, Nubank, etc.) need component-level control that RC's drawing-level approach doesn't provide.

The Framework Decision Matrix

Choosing an SDUI approach depends on your team's specific needs. Here's how to think about it:

If You Need... Consider... Avoid...
Dynamic promo content only RemoteCompose Full SDUI (overkill)
Design system integration BYOC approach (Pyramid, Nativeblocks) Generic component libs
Cross-platform consistency DivKit, Flutter SDUI Platform-specific (RC)
Non-dev content authoring Low-code builders (Digia) DSL-only approaches
A/B testing integration SDUI + experimentation (Pyramid) Separate tooling bolted on
Maximum developer control Typed DSL with codegen Visual-only editors

What You Should Do Right Now

Don't wait for I/O to make decisions. Here's actionable advice based on where you are:

If you're considering SDUI for the first time:

If you already have SDUI:

If you're evaluating RemoteCompose:

Build Server-Driven UI the Right Way

Pyramid gives you typed DSL codegen, BYOC architecture, and built-in experimentation for Compose and SwiftUI.

Join the Waitlist

Further Reading