Skip to main content
The AppDNA iOS SDK supports rich media content across onboarding flows, paywalls, in-app messages, and surveys. All rich media is configured in the AppDNA Console — no code changes are needed to add animations, videos, or effects to your flows.

Supported Formats

Lottie Animations

Lottie animation support requires adding lottie-ios as a separate SPM dependency in your project. The SDK includes the rendering infrastructure.
  • Remote URL — provide a URL to a .json Lottie file
  • Inline JSON — embed the animation JSON directly in the config
  • Controls — autoplay, loop, speed, play-on-scroll, play-on-tap
  • Color overrides — remap colors in the animation without re-exporting
Lottie is supported in onboarding content blocks, paywall sections, in-app message hero areas, and survey thank-you screens.

Rive Animations

Rive animation support requires adding rive-ios as a separate SPM dependency in your project. The SDK includes the rendering infrastructure.
  • Remote URL — provide a URL to a .riv file
  • Artboard selection — choose which artboard to display
  • State machine — drive interactive animations with state machine inputs
  • Trigger on completion — fire a state machine trigger when the step or flow completes
Rive is supported in onboarding content blocks and paywall sections.

Video

Inline video playback with native AVPlayer:
  • Remote URL — provide a URL to an MP4 or HLS video
  • Thumbnail — optional poster image shown before playback
  • Controls — autoplay, loop, muted, show/hide controls
  • Sizing — configurable height and corner radius
Video is supported in onboarding content blocks, paywall sections, and in-app message hero areas.

Visual Effects

Haptic Feedback

Haptic feedback is triggered automatically based on Console configuration. Supported haptic types:
TypeDescription
lightSubtle tap
mediumMedium tap
heavyStrong tap
selectionSelection change feedback
successSuccess notification
warningWarning notification
errorError notification
Haptic triggers can be configured for:
  • Step advances (onboarding)
  • Button taps
  • Plan selection (paywalls)
  • Option selection (surveys, forms)
  • Toggle changes
  • Form submission
  • Error and success states

Particle Effects

Particle effects overlay the current screen. Supported effect types:
TypeDescription
confettiColorful falling confetti
sparkleSparkling particles
fireworksBurst effect
snowFalling snowflakes
heartsFloating hearts
Each effect has a trigger (on_appear, on_step_complete, on_purchase, on_flow_complete), duration, intensity (light, medium, heavy), and optional custom colors.

Blur / Glassmorphism

Blur backdrops use native UIVisualEffectView for performant glassmorphism effects:
  • Radius — blur intensity
  • Tint — overlay color tint
  • Saturation — color saturation adjustment
Blur is supported as a backdrop for in-app message modals and fullscreen overlays.

Icons

The SDK supports structured icon references across all modules. Icons are resolved to platform-native equivalents:
LibraryDescriptionExample
lucideMapped to SF Symbols automatically"heart" -> heart.fill
sf-symbolsNative SF Symbols (iOS only)"star.fill"
materialMapped to SF Symbols automatically"favorite" -> heart.fill
emojiUnicode emoji characters"fire" -> fire emoji
Icons are used in onboarding content blocks, paywall feature lists, in-app message CTA buttons, and survey question options.

Content Blocks

Onboarding steps support rich content blocks that are rendered in order. Each block has a type and optional styling:
Block TypeDescription
headingStyled heading (level 1-6)
textBody text with styling
imageRemote image with corner radius and sizing
buttonAction button (next, skip, link, permission)
spacerVertical spacing
listBullet, numbered, or checklist
dividerHorizontal separator
badgeColored badge label
iconIcon with emoji or icon reference
toggleSwitch with label and description
videoInline video player
lottieLottie animation
riveRive animation

Styling

All visual elements support fine-grained styling through the Console:
  • Text styles — font family, size, weight, color, alignment, line height, letter spacing, opacity
  • Backgrounds — solid color, linear/radial gradient, or remote image with overlay
  • Borders — width, color, style, and per-corner radius
  • Shadows — offset, blur, spread, and color
  • Spacing — per-side padding and margin
  • Animations — entry animations (slide, fade, scale), section stagger, CTA pulse/glow/bounce, dismiss animations
The SDK uses platform-native fonts only. Custom web fonts are not supported. Specify system font families like .systemFont in the Console, and the SDK will render them natively.

Dynamic Content Templates

Rich media content supports template interpolation using {{variable}} syntax. Available namespaces:
NamespaceExampleSource
user.*{{user.userId}}Identified user traits
session.*{{session.selected_plan}}App-defined session data
onboarding.*{{onboarding.step1.name}}Onboarding form responses
computed.*{{computed.custom_value}}Data from async hooks
device.*{{device.platform}}Device info (platform, OS, locale, country)
remote_config.*{{remote_config.app_name}}Remote config values
Use the pipe syntax for fallback values: {{user.name | there}} renders as “there” if the user name is not set.

No Code Required

All rich media features are configured in the AppDNA Console. The SDK renders them automatically based on the config bundle. You do not need to write any code to use Lottie, Rive, video, haptics, particles, blur, icons, or content blocks.