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
Navigation Interception
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 asMap<String, Any?> for forward-compat with new fields the SDK adds (e.g., last_action, duration_ms):
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.

