Skip to main content
Supported on: Android SDK 1.0.33+

Overview

Server-driven screens let growth teams design and deploy native screens from the AppDNA console — no app release needed. The SDK renders screens from JSON config fetched via Firestore. Screens combine content blocks from any SDK module (onboarding, paywalls, surveys, messages) into a single composable surface. You can build feature announcements, upgrade prompts, referral screens, guided tutorials, and more — all without writing native UI code.

Show a Screen

Show a Multi-Screen Flow

Dismiss

Screen Slots (Inline Content)

Place named slots in your Compose views. The console assigns screens to slots.
  • Empty slots render nothing (no visual impact)
  • Content updates on next config refresh
  • Supports audience targeting per slot
Automatically inject screens between app navigations:

Debug Preview

Test screens from raw JSON without publishing to Firestore:

Screen Delegate

The delegate fires for every screen lifecycle event. Result and action payloads are delivered as Map<String, Any?> for forward-compat with new fields the SDK adds (e.g., last_action, duration_ms):
The top-level AppDNA.showScreen(...) / AppDNA.showFlow(...) callbacks DO use the typed ScreenResult / FlowResult data classes (see API Reference) — only the delegate uses untyped maps.

Presentation Modes

Screens support the following presentation modes configured in the Console: Unrecognized values fall through to fullscreen.

Section Types

Screens are composed of ordered sections. The unified section registry includes content from all SDK modules:

Auto-Tracked Events

The last three fire when a screen flow hands an action back to YOUR app: the SDK does not present the message or run the purchase itself, it reports the request and your AppDNAScreenDelegate acts on it. They are emitted on both platforms from the same flow-action dispatch.

Full Example

Screens are rendered using Jetpack Compose. The SDK handles the full UI lifecycle. Screens are delivered via the same Firestore config bundle as other SDK modules.