Dynamic Configuration

Dynamic Config from Studio

The SDK can receive visual and behavioral configuration from JOIN Studio.

If no manual configuration is provided in the app, the SDK applies the Studio configuration when available.
If a Studio setting is missing, the SDK falls back to its default value.
If a manual configuration is provided in the app, it always takes priority over the Studio configuration.

Configuration priority

Manual configuration in app
        ↓
Studio configuration
        ↓
SDK default value

If a value is manually configured in the app, it always overrides the Studio value.
If no manual value is provided, the SDK uses the Studio value when available.
If no Studio value is available, the SDK uses its default value.

Studio settings mapping

Studio settingApplies toVisual effectDefaultManual override in app
Item spacingBubbles, Cards (grid/list)Space between itemsBubbles: 12; Cards: Grid 8, List 3Bubbles: BubbleConfiguration.thumbViewSpacing; Cards: CardConfiguration.spacing
Show play iconBubbles, CardsShow/hide play glyph overlayOnBubbles: BubbleConfiguration.showPlayButton; Cards: CardConfiguration.showPlayButton
Play icon styleBubblesChoose icon style (minimalist/outline/fill)MinimalistBubbleConfiguration.playIcon (values: "minimalist", "outline", "fill")
Show labelsBubbles, CardsShow/hide labels under itemsOnBubbles: BubbleConfiguration.showLabel; Cards: CardConfiguration.showLabel
Card corner radiusCards (grid/list)Card roundingGrid: 8, List: 10Grid: CardGridConfiguration.cardRadius; List: CardListConfiguration.cardRadius
Player corner radiusPlayerPlayer view rounding0PlayerConfiguration.playerCornerRadius
Show cover and title (player)PlayerShow/hide cover/title overlayOnPlayerConfiguration.showFeedStoryCoverAndTitle
Read / unread effectBubbles, CardsEnables read state behavior for storiesOffBubbleConfiguration.enableRead
Reorder read storiesBubbles, CardsDisplays unread stories firstOffBubbleConfiguration.reorderedReadStories, CardConfiguration.reorderedReadStories
Viewed indicatorBubblesDisplays a viewed indicator on read bubblesOffBubbleConfiguration.storyViewedIndicatorColor
Loader ring colors (brand)BubblesGradient around bubbleJOIN default gradient (red→orange)`BubbleConfiguration.loaderColors
  • Note: Widget type (“shape”) is always selected in code (manual integration), not from Studio.

Read / unread behavior

Reorder read stories and Viewed indicator are only applied when Read / unread effect is enabled in Studio.

If Read / unread effect is disabled, these settings are ignored.

To let Studio control these behaviors, enable Read / unread effect in Studio and avoid forcing the related values manually in the app.

bubbleTriggerView.bubbleConfiguration = BubbleConfiguration(
    enableRead = null,
    reorderedReadStories = null
)

If the app explicitly overrides a value, the manual configuration takes priority:

bubbleTriggerView.bubbleConfiguration = BubbleConfiguration(
    reorderedReadStories = false
)

In this case, Studio cannot enable Reorder read stories dynamically.