Added remote theme support for static Clips Player like icons through light/dark.player.icons.like.initial and light/dark.player.icons.like.liked URL pairs. Missing or incomplete remote icon pairs keep the existing default or local theme icons.
Added remote caption styling for Stories and Clips through theme.behavior.player.captions, including typography, colors, opacity, padding, and corner radius.
Added async StorytellerGAMModuleConfiguration.configureAdRequest so Google Ad Manager integrations can await bidder work and mutate the prepared Google Mobile Ads request before Storyteller loads native, custom-template, or bottom banner GAM Ads
Added the new Followable Category profile screen for Clips, including a branded category header, follow/unfollow controls, remotely selectable Stories and Clips content, Latest/Popular paged category feeds, light/dark customization under theme.light.profileScreen and theme.dark.profileScreen, and rollout through theme.behavior.player.clips.enableProfileScreen. See Followable Category Profile theming for more information.
Populated the exact adUnitId on GAM and AdMob request, load, failure, paid, and rendered Ad analytics events, including native/banner fallback attempts and GAM VAST tag overrides. Host-provided GAM and AdMob modules can opt into exact request attribution through StorytellerAdRequestTrackingModule. See Ad Unit ID and Request-aware ad modules for more information.
Improved Clip Players opened from SDK owned FollowableCategory screen Clips grids so they preserve the originating presentation configuration
Fixed Stories rows with high poll volume failing to load when poll hydration created an oversized request. Poll hydration now uses bounded requests and preserves successful poll batches when another batch fails.
Fixed the tvOS Clip Player losing video, playing mismatched audio, or becoming unresponsive during rapid or backward navigation.
Fixed tvOS row focus after dismissing the Story Player or Clip Player, preventing Clips rows from jumping to the beginning and Stories focus from following a viewed story to the end of the row.
Fixed the AdChoices icon not responding to taps on AdMob native image and video Ads in Clips.
Fixed AdMob native video Ads emitting OpenedAd analytics event on completion without a confirmed replay.
Fixed the Story Player title and eyebrow block being misaligned with the header controls.
Fixed a crash caused by SDK resource resolution and made missing audio resources non-fatal, allowing image Stories to continue progressing.
Fixed Embedded Clips canGoBack so it returns true only when the SDK's internal navigation stack has a previous category screen to pop, and false at the collection root or before navigation is ready. Versions 10.6.0 through 11.5.1 returned the inverse result; integrations that negated it as a workaround should remove that negation when upgrading. See Embedded Clips back navigation for more information.
Fixed an issue where scrubbing the Clip Player progress bar could dismiss the Player.
Fixed a visible hard edge at the bottom of 9:16 video in modal Clips Players configured with theme.behavior.player.clips.modalContentBottomAnchor: screen.
Improved Clips reloads through StorytellerClipsViewController.reloadData() and StorytellerClipsModel.reloadData() by preserving the selected For You or Following feed.
Improved For You and Following Clips feeds so visible empty feeds refresh after followed categories change.
Fixed Embedded Clips configured with theme.player.clips.progressBar.position: aboveAction so the progress bar no longer prevents taps on a visible primary action.
Fixed category navigation from an Embedded Clips Following feed so the selected category loads its complete feed instead of remaining limited to followed clips.
Fixed Storyteller.shared.user.setFollowedCategories(_:) failing an entire app-managed replacement when Storyteller could not resolve one or more supplied category IDs. Unresolved IDs are now omitted while the resolved subset is applied, and genuine request failures still preserve the previous followed state.
Added theme.player.clips.topGradient and bottomGradient using the existing Theme.Gradient type, with independent feed-specific, tenant/global, and host light/dark inheritance while preserving the current Clips Player scrims by default. See Clips player gradients for more information.
Added theme.player.clips.progressBar.position with bottom and aboveAction values so Embedded Clips can place the progress bar above a visible primary action while preserving the existing layout by default. See Clips progress bar position for more information.
Added theme.behavior.player.clips.modalContentBottomAnchor so modal Clips Players can keep the 9:16 media frame unchanged while anchoring lower Player UI to either the video or the screen safe area. See Modal Clips content bottom anchor for more information.
Added optional titleToCategoriesSpacing, categoriesToMoreSpacing, metadataToProgressBarSpacing, and progressBarToActionSpacing controls under theme.player.clips.spacing for Embedded Clips. See Embedded Clips spacing for more information.
Added optional typography controls for selected and unselected theme.player.clips.feedSwitcher states, theme.player.clips.title.fontWeight, and theme.player.clips.categoryNavigation, including Dynamic Type-scaled line heights and field-by-field remote theme inheritance. StorytellerFontWeight now includes .light; exhaustive client switches must handle the new case when recompiling. See Clips player typography for more information.
Expanded the supported theme.player.clips.actionIconSize range to 24...38 while preserving the existing 32pt default and 48pt action-button tap targets.
Added the StorytellerVASTIntegration module for vendor-neutral fullscreen VAST Ads in Stories and Clips. See Storyteller VAST SDK for setup and behavior details
Added StorytellerGAMVASTModule and StorytellerGAMVASTModuleConfiguration so Google Ad Manager VAST tag requests can be configured through the VAST integration without adding Google Mobile Ads or IMA dependencies
Added SDK-owned VAST request parameters for GAM VAST tags and Sliide bid enrichment, including size/mute context and host override support. See VAST and GAM VAST Parameter Tables
Added the TileVisible analytics event for Story and Clip list tiles, including the 1-based tileIndex payload field. See List Tile Events
Added remote theme support for theme.behavior.following.feedSwitcher.selectionStyle so Clips For You / Following switchers can use the legacy selected underline or the new selected text-weight styling. Missing or unknown values default to underline.
Added remote theme support for theme.behavior.search.filters so tenant settings can hide Search filter sections while hidden filters reset to their default values.
Added tenant-configured Clips opening pre-roll Ads with timeout fallback. See Clips Opening Pre-Roll Ads
Added StorytellerClipsAdConfiguration and optional StorytellerClipCollectionConfiguration.adConfiguration so individual Clips presentations can opt into opening pre-roll and bottom banner Ad placements
Added Storyteller.shared.user.setFollowedCategories(_:) so app-managed following integrations can asynchronously replace the full followed category set before reloading Storyteller content. See Followed Categories for more information
Added remote theme support for theme.behavior.player.clips.categoryNavigation so CMS configuration can customize the delimiter between Clips category navigation labels and optionally hide the leading # in the category Player title
Fixed an issue where unmuted video Cards could restart audio while the host app was in the background
Fixed an issue where rapidly reopening a Sheet action could resume playback behind the visible Sheet
Fixed a Clips Player issue where Pull to Refresh during fast swiping could leave the Player aligned to a stale clip with broken next/previous navigation
Fixed an issue where the Clip Player right-swipe dismiss gesture could stop working after switching from For You to Following and back
Fixed an issue where in-app actions opened from a nested search-result Clip Player could briefly reveal the underlying navigation stack while dismissing the Player
Fixed an iOS 18 Cards issue where visible video Cards could fail to autoplay because the visibility check treated same-Card SwiftUI hit-test views as overlays
Fixed an issue where Card audio toggles could show stale mute state after another Card changed the shared Cards audio state
Fixed iPad sheet sizing when rotating with a Sheet open from the Story or Clip Player
Fixed an issue where mounted Embedded Clips could keep showing the previous user's feed after the SDK user changed until the host app manually reloaded data
Fixed a tvOS Clips Player issue where primary action button titles using custom fonts could truncate after returning from Recents
Fixed an issue where Player mute/unmute taps at zero system volume would not toggle the mute button on the Player
Fixed a tvOS Clips Player issue where Siri Remote up/down presses could sometimes be ignored
Added StorytellerGAMModuleConfiguration.publisherProvidedId so Google Ad Manager integrations can pass a request-level Publisher Provided ID (PPID) for audience targeting
Fixed a Clips playback issue where some looped clips could briefly show the first frame again near the end while audio continued playing
Fixed an issue where returning to Embedded Clips after updating followed categories could reset the selected tab and leave the Player in an invalid state until Pull to Refresh was triggered
Added Storyteller.shared.useCustomShareHandling and StorytellerDelegate.onShareButtonTapped(text:title:url) so integrators can intercept Story and Clip share taps, receive the SDK-generated payload, and resume playback with Storyteller.shared.resumePlayer() after their custom share flow is dismissed
Added Storyteller.shared.user.getFollowableCategories() to fetch backend-backed followable category metadata and SDK-derived current followed state for custom category management UIs. See Followed Categories for more information
Added support for Clips Player instructions onboarding screen
Added theme.player.icons.like.animation for Lottie based Clips like/unlike button animations
Fixed an issue where reloading Embedded Clips while on a clip ad could hide the collection title on the first clip
Fixed an issue where Banner Ads were draggable
Fixed an issue with right swipe in certain scenarios in Clips Player
Fixed an issue where the Less button would not hide when navigating to another Clip within the Player
Fixed an issue where some images might disappear after backgrounding and foregrounding the app
Fixed an issue where top UI elements could remain hidden in Clips Player when fast swiping through Non Skippable Ads
Fixed an issue where image-based Clips Player titles and visible clip content titles could be skipped by VoiceOver swipe navigation
Fixed an issue where Player live badges could be visible for non-live content or content without badge titles
Fixed an iPad Clips Player issue where the search/category navigation control could shift outside the Player after rotation and returning from category navigation
Fixed an issue where first Card analytics could report an incorrect isMuted value before the first visible video Card settled as primary
Added a preventive fix for a rare crash that could occur while images were loading and the AssetDownloader was deinitialized
Fixed Clips Player category navigation ordering so the selected/current category is shown last in the list
Fixed an issue where AdMob native video controls in the Story Player could trigger Story navigation instead of responding to play/pause or mute taps
Added Cards audio controls for video Cards, including tenant-driven audio behavior support, known no-audio handling, active-card-only playback, session-scoped mute state, and optional Cards-specific mute-state persistence. See Video Card Audio for more information
Added theme.cards.audio.mutedIcon and theme.cards.audio.unmutedIcon to customize Cards audio control icons. See Cards theming for more information
Added the CardAudioToggled analytics event with audioToggleFrom, audioToggleTo, and isMuted, and added known isMuted state to video Card analytics events. See Card Audio Toggled for more information
Important: 11.3.1 supersedes 11.3.0. Do not use 11.3.0, as it shipped with a broken distributed Swift interface in the packaged SDK binary that could prevent consumer apps from importing the SDK.
Fixed a packaging issue where the distributed Swift interface emitted by StorytellerSDK could prevent the packaged SDK binary from being imported by consumer apps
Added theme.engagementUnits.poll.showImageAnswerGradientOverlay to control the gradient overlay behind the text in image Poll Answers (default true). See Themes for more information
Added theme.player.enableFollowableCategorySwipeFromRightEdge to control opening Followable Category with right-edge swipe in the Clips Player (default true)
Added theme.player.clips.eyebrow to customize the Clips Player eyebrow font family, text size, optional line height, and text color
Added theme.player.clips.title to customize the Clips Player main title font family, text size, optional line height, and text color
Added theme.player.icons.back to customize the Clips Player back button icon. See Themes for more information
Added theme.player.icons.mute.muted, theme.player.icons.mute.unmuted, theme.player.icons.captions.enabled, and theme.player.icons.captions.disabled to customize the Player mute and captions icons in Stories and Clips. See Themes for more information
Added theme.player.clips.showButtonBackgrounds, theme.player.clips.actionIconSize, and theme.player.clips.spacing to customize Clips Player button backgrounds, action icon sizing, and layout spacing. See Themes for more information
Added Cards theme support for explicit heading/subheading spacing, explicit button spacing, a per-theme Dynamic Type toggle, an optional full-bleed text panel background for text-below-content cards with light/dark background overrides, and appearance-aware heading/subheading/button text colors
Added support for AdMob Ads via StorytellerAdMobModule. See Ads for more information
Added support for externalApp CTA handling in Custom Native Ads on iOS
Added Storyteller.shared.isPlayerMuted to expose the current mute state of the Player
Added AdOpportunity analytics event, emitted when the SDK reaches an eligible ad slot before requesting an ad. See Analytics for details
Added AdRequested analytics event, emitted when the SDK initiates a Google ads request (GAM/AdMob). See Analytics for details
Added AdLoaded analytics event, emitted after a successful ad load with ad source metadata and adapter latency details. See Analytics for details
Added AdFailedToLoad analytics event, emitted when a Google ads request fails. See Analytics for details
Added AdPaid analytics event, emitted when impression-level paid revenue info is available. See Analytics for details
Added AdSessionSummary analytics event, emitted once when a root Storyteller player session ends (Clips or Stories). See Analytics for details
Added CardVideoStarted, CardVideoHeartbeat, and CardVideoCompleted analytics events for video cards. See Analytics for details
Added StorytellerModule.adSource: StorytellerAdSource? for declaring integrating-app ad sources. See StorytellerModule.adSource for more information
Added adSource to ad analytics events. Supported values include storyteller for Storyteller First Party Ads, gam, admob, and custom integrating-app source values. The value is nil when the source is not resolvable (including AdOpportunity, which is emitted before module resolution)
Embedded Clips now fetch and prepend a missing destination clip when it isn't in the first page
Fixed an issue where rapid swipes through Clips could prevent clip open tracking from being recorded correctly, which could affect fresh-feed ordering after dismissing the Player
Fixed Cards heading.textSize and subHeading.textSize so they still apply when no custom font family is provided
Fixed Card video restarting and blinking when the host app triggers a full collection view reload
Fixed a rare issue where the video card would not play after a reload
Fixed an issue where Clips video ads could emit duplicate OpenedAd and impression tracking for custom native Ads
Fixed an issue where the Stories instruction CTA text could be unreadable in dark mode when opening Stories from Search or Followable Categories
Added startedAware Story ordering mode that groups Stories by progress: unread → in progress → completed. This feature is gated behind the pageReadStatus functional feature flag
Added paging functionality to Clips rows and scrollable grids
Skipped Story analytics event is no longer fired when the user is on the last page of a story, as navigating from the last page is not considered a "skip". See Analytics for details
Improved experience of resuming Stories that were previously opened or fully viewed
Updated StorytellerTileType to include categories: [StorytellerCategoryDetail] for both .clip and .story cases in StorytellerListViewDelegate.onTileTapped(type:). For more information, see onTileTapped
Fixed an issue where rapid swiping through clips could cause new clips to be inserted before the currently viewed clip
Fixed UI issues in the WebView on iOS 26
Fixed an issue where calling Storyteller.shared.openCollection with a destination parameter was being ignored
Fixed an issue where the Stories Rows and Grids themes were not applied to the Instructions screen
Fixed an issue where the Poll Answer View did not occupy the full available width
Fixed a case where the Story Player close animation would target the center of the screen instead of the proper Story Tile
Fixed an issue where a native video ad might use an incorrect duration from the GAM module
Fixed an issue where the Clips Player close animation targeted the tile instead of the center of the screen when an Ad was displayed
Fixed an issue where Ad Banners were not accessible when VoiceOver mode was active
Constrained round tile live chip custom images to not overflow the tile's bounds and resize to fit
Fixed several tvOS focus issues while navigating through the lists and after dismissing the Player
Fixed an issue where currentCategory could be missing in analytics for Stories lists configured with the following category
Fixed an issue where embedded clips could have no sound or fail to resume playback after dismissing a player presented on top
Fixed issues with the Followable Category button where it could remain in a pressed state after a cancelled swipe and the icon was not respecting the theme color
Added StorytellerClipCollectionConfiguration.openReason to track the reason a Clip Collection was opened for analytics purposes, such as when opened via external deeplinks
Removed the default value for isScrollable in SwiftUI grids. You must now explicitly pass isScrollable when initializing StorytellerStoriesGrid and StorytellerClipsGrid.
Updated StorytellerListViewDelegate.onTileTapped method to provide richer context via the StorytellerTileType enum. See onTileTapped for more information
Changed Storyteller class from using static methods to a shared instance pattern. All API calls must now use Storyteller.shared instead of calling methods directly on the class (e.g., Storyteller.shared.initialize() instead of Storyteller.initialize())
eventTrackingOptions can now only be set during SDK initialization by passing a StorytellerEventTrackingOptions object to the initialize method. Runtime modifications are no longer supported. The property remains publicly readable via Storyteller.shared.eventTrackingOptions. To change tracking options, you must reinitialize the SDK. See Privacy and Tracking for more information
Introduced a new Following Model where Storyteller is handling all following logic, without the need for storing and syncing followed categories app-side
Added support for custom context data in analytics events. Context allows integrators to provide additional analytics attribution data for Storyteller rows, grids and cards. For details, see Context
Added automatic user attribute management for followed categories. See Followed Categories for more information
Added support for setting default mute state when opening Clip and Story players, and ability to persist mute state between app launches. Both settings are configurable in the CMS
Added theme.lists.enablePlayerOpen property to control whether the SDK automatically opens the player when a tile is tapped. See Theme for more information
Card collections can now be sorted by viewed/tapped ordering, which means a new Card will be shown every time a Card from the collection has been viewed or tapped.
Introduced the Independent Functional Behavior Toggles for better privacy control. For details, see the Privacy and Tracking documentation
Updated the Between Pages Ad strategy to insert ads based on viewed page count
Introduced an initial index for the betweenStoriesAndPages, betweenPages and betweenClips ads strategies, that will be the index after which the first ad will appear. Can be configured in the CMS.
Introduced two new analytics events for enabling and disabling Story captions
Added a mute toggle button to the Stories and Clips players for improved audio control, which can be enabled in the CMS
Introduced new analytics events for mute actions: Muted Story, Unmuted Story, Muted Clip, Unmuted Clip, Muted Ad and Unmuted Ad
Added isMuted property to all Story, Clip and Ad analytics events to track the current mute state
Introduced a new field in ad-related events, called Ad Strategy
Added nextClip parameter to the clips case in StorytellerAdRequestInfo to provide information about the next Clip in the sequence for improved Ad targeting
Added support for Followable Category limits, allowing restrictions on the number of categories users can follow
Added support for Eyebrows - additional contextual text that appears next to the main title of rectangular tiles, Stories and Clips inside the Players.
Added the onTileTapped method to StorytellerListViewDelegate to notify the delegate when a tile is tapped before the player is presented
Added the adIndex parameter to the clips case in StorytellerAdRequestInfo and to all ad-related analytics events to track the position of ads within a collection
Pausing adjacent stories when playing a new one while fast swiping
Fixed an issue where the currently displayed Story could occasionally restart and freeze on iPad devices
Fixed an issue where the web view navigation buttons did not correctly reflect their enabled or disabled states
Fixed an issue where the followable categories might report incorrect following status
Fixed a rare issue where the Clips or Stories Player could become unresponsive after rapidly dismissing the share sheet
Fixed an issue where an incorrect real time update setting could cause infinite data reload calls
Fixed an issue where GAM video ads in Stories would be silent if the device's mute switch was on, even after the user had unmuted Stories via the Volume buttons
Fixed an issue where audio from adjacent video Stories would continue playing when fast swiping between them
Fixed an issue where video ads continued playing when a controller was presented on top
Fixed a rare crash when reloading Stories after an ad was inserted
Fixed an issue where SkippedAd and FinishedAd events were not being sent when swiping away from ads in the Clips player
Fixed an issue with Search content overlapping on iOS 15 in some cases when using custom fonts
Fixed playback issues in scenarios where other content is presented on top of our players, e.g. Search or a Web View
Fixed an issue where search analytics events were using incorrect action properties when opened from clips
Fixed an issue where Clips could freeze when fast swiping between them
Improved clips loading priority for ForYou/Following mode
Added support for first class Sheet actions from the Empty Following screen and from Followable Category actions
Updated openedReasonanalytics property to have value instanceMethod when opening a Story or a Page through Storyteller.openStory(id:) and Storyteller.openPage() methods
Added Storyteller.getStoriesCount(for:)method that returns the total number of Stories for provided Category IDs.
Added Storyteller.getClipsCount(for:)method that returns the total number of Clips in the Collection.
Removed SharePlay option from the Share sheet when sharing stories or clips
Ensured the Clips Player Captions button state updates correctly after caption settings are modified in other instances of the Clips Player
Added right swipe to dimiss gesture support to the Clips Player
Deprecated Storyteller.isPlayerVisible in favour of Storyteller.isPresentingContent property. Storyteller.isPlayerVisible returns the same value as Storyteller.isPresentingContent and will be removed in a future version.
Deprecated Theme.EngagementUnits.Poll.showVoteCount property in favour of a value that can be set in the CMS. Starting from this version, this Theme property has no effect. Default value for the CMS property is true.
Deprecated Theme.Tiles.Title.show property in favour of a value that can be set in the CMS. Starting from this version, this Theme property has no effect. Default value for the CMS property is true.
Deprecated StorytellerClipsOpenReason enum. Use StorytellerOpenReason instead
Fixed VoiceOver reading order of elements in the Clips Player
Fixed an invalid app state that could occur when backgrounding the app during interactive push transition from the Clips Player to the Followable Category screen
Fixed an issue where Ads would occasionally disappear when switching between "For You" and "Following" tabs in the Clips Player
Resolved audio problems with GAM video Ads when the iPhone mute switch was enabled
Fixed truncation of Story timestamps for Stories with longer titles
Fixed an issue where duplicate OpenedClip events would be sent in some rare cases when switching from For You to the Following tab in the Clips Player
Fixed an issue where Filter Settings were not sent in the DismissedSearch event
Fixed an issue where Clip Ads events didn't populate categories property
Fixed an issue where SkippedStory didn't trigger when skipping the last page of a Story
Fixed an issue where OpenedClip event's openedReason property would be swipe instead of categoryBackTap property when dismissing a Category inside the Clips Player
Fixed an issue where NextClip and PreviousClip events would have properties of the Clip user navigated to, instead of the Clip it was navigated from
Fixed an issue where transitioning to and from page ads would erroniously record an OpenedStory event
Tapping on For You or Following tab when it's already selected will reload that tab's Clips
Improved the animation when applying Filters on the Search screen
Added clipIndex property to all Ad analytics events and captionsEnabled to all Clips analytics events
Added ability to set the Search.heading property in the Theme, refer to the Theme documentation
Added default implementation for topLevelBackTapped in the StorytellerClipsViewController to pop it from the nearest navigation controller
Added support for Live badge to the Clips Player
Replaced the configuration property with the configure method on the Storyteller List Views. configuration property can still be used, but will be deprecated in the next major version
Added support to show a fixed number of tiles in list rows, via a property called visibleTiles. For details, refer to the StorytellerListViews documentation
Adding theme properties to allow integrators to customize appearance of list tiles, badges and the headings of the Instructions screen. For details, refer to the Theme documentation
Improved loading experience when videos are buffering
Updated duration of Player open and close animations
Updated configure method on StorytellerClipsViewController to not do any checks on whether to reload the collection or not. It will always reload the collection when called, regardless of the previous value of the StorytellerClipCollectionConfiguration passed in.
The following methods on Storyteller have gotten their async version. The old ones are deprecated and will be removed in a future release:
dismissPlayer(animated:, dismissReason:)
initialize(apiKey:, userInput:)
openDeepLink(url:)
openStory(id:)
openStory(externalId:)
openPage(id:)
openCategory(category:)
openCollection(configuration:)
openClipByExternalId(collectionId:, externalId:)
openSearch()
set(collectionId:initialClipId:openedReason) method on StorytellerClipsViewController has been deprecated in favor of the new method configure(with:) where the configuration parameter is of type StorytellerClipCollectionConfiguration. See EmbeddedClips for more details.
removed liveChipImage in favor of the new LiveChip struct where image, textColor, backgroundColor and backgroundGradient can be set. image precedes backgroundGradient and backgroundGradient precedes backgroundColor. See Themes for more details.
Updated Privacy Manifest file for Required Reasons API requirements
Added set(collectionId: String, initialClipId: String?) method in StorytellerClipsViewController. This method allows loading a specific clip within a clip collection directly.
Deprecated collectionId property in StorytellerClipsViewController and it will be removed in the future. Use set(collectionId: String, initialClipId: String?) instead.
{"slug": "changelog", "page_title": "Release Notes", "page_url": "Changelog/", "canonical_url": "/ios/Changelog/", "markdown": "# Changelog\n\n## **11.6.1** - 14/08/2026\n\n### Bug fixes\n\n- Fixed a case where tapping a Clip category label on the second row could open the incorrect category.\n\n## **11.6.0** - 07/08/2026\n\n### New Features\n\n- Added remote theme support for static Clips Player like icons through `light/dark.player.icons.like.initial` and `light/dark.player.icons.like.liked` URL pairs. Missing or incomplete remote icon pairs keep the existing default or local theme icons.\n- Added remote caption styling for Stories and Clips through `theme.behavior.player.captions`, including typography, colors, opacity, padding, and corner radius.\n- Added async `StorytellerGAMModuleConfiguration.configureAdRequest` so Google Ad Manager integrations can await bidder work and mutate the prepared Google Mobile Ads request before Storyteller loads native, custom-template, or bottom banner GAM Ads\n- Added the new Followable Category profile screen for Clips, including a branded category header, follow/unfollow controls, remotely selectable Stories and Clips content, Latest/Popular paged category feeds, light/dark customization under `theme.light.profileScreen` and `theme.dark.profileScreen`, and rollout through `theme.behavior.player.clips.enableProfileScreen`. See [Followable Category Profile theming](Themes.md#followable-category-profile) for more information.\n\n### Improvements\n\n- Populated the exact `adUnitId` on GAM and AdMob request, load, failure, paid, and rendered Ad analytics events, including native/banner fallback attempts and GAM VAST tag overrides. Host-provided GAM and AdMob modules can opt into exact request attribution through `StorytellerAdRequestTrackingModule`. See [Ad Unit ID](Analytics.md#ad-unit-id) and [Request-aware ad modules](StorytellerModule.md#request-aware-ad-modules) for more information.\n- Improved Clip Players opened from SDK owned FollowableCategory screen Clips grids so they preserve the originating presentation configuration\n\n### Bug fixes\n\n- Fixed Stories rows with high poll volume failing to load when poll hydration created an oversized request. Poll hydration now uses bounded requests and preserves successful poll batches when another batch fails.\n- Fixed the tvOS Clip Player losing video, playing mismatched audio, or becoming unresponsive during rapid or backward navigation.\n- Fixed tvOS row focus after dismissing the Story Player or Clip Player, preventing Clips rows from jumping to the beginning and Stories focus from following a viewed story to the end of the row.\n- Fixed the AdChoices icon not responding to taps on AdMob native image and video Ads in Clips.\n- Fixed AdMob native video Ads emitting `OpenedAd` analytics event on completion without a confirmed replay.\n- Fixed the Story Player title and eyebrow block being misaligned with the header controls.\n- Fixed a crash caused by SDK resource resolution and made missing audio resources non-fatal, allowing image Stories to continue progressing.\n- Fixed Embedded Clips `canGoBack` so it returns `true` only when the SDK's internal navigation stack has a previous category screen to pop, and `false` at the collection root or before navigation is ready. Versions 10.6.0 through 11.5.1 returned the inverse result; integrations that negated it as a workaround should remove that negation when upgrading. See [Embedded Clips back navigation](EmbeddedClips.md#back-navigation) for more information.\n- Fixed an issue where scrubbing the Clip Player progress bar could dismiss the Player.\n\n## **11.5.4** - 05/08/2026\n\n### Bug fixes\n\n- Fixed a visible hard edge at the bottom of 9:16 video in modal Clips Players configured with `theme.behavior.player.clips.modalContentBottomAnchor: screen`.\n\n## **11.5.3** - 30/07/2026\n\n### Improvements\n\n- Improved Clips reloads through `StorytellerClipsViewController.reloadData()` and `StorytellerClipsModel.reloadData()` by preserving the selected For You or Following feed.\n- Improved For You and Following Clips feeds so visible empty feeds refresh after followed categories change.\n\n### Bug fixes\n\n- Fixed Embedded Clips configured with `theme.player.clips.progressBar.position: aboveAction` so the progress bar no longer prevents taps on a visible primary action.\n- Fixed category navigation from an Embedded Clips Following feed so the selected category loads its complete feed instead of remaining limited to followed clips.\n\n## **11.5.2** - 27/07/2026\n\n### Bug fixes\n\n- Fixed `Storyteller.shared.user.setFollowedCategories(_:)` failing an entire app-managed replacement when Storyteller could not resolve one or more supplied category IDs. Unresolved IDs are now omitted while the resolved subset is applied, and genuine request failures still preserve the previous followed state.\n\n## **11.5.1** - 22/07/2026\n\n### New Features\n\n- Added `theme.player.clips.topGradient` and `bottomGradient` using the existing `Theme.Gradient` type, with independent feed-specific, tenant/global, and host light/dark inheritance while preserving the current Clips Player scrims by default. See [Clips player gradients](Themes.md#clips-player-gradients) for more information.\n- Added `theme.player.clips.progressBar.position` with `bottom` and `aboveAction` values so Embedded Clips can place the progress bar above a visible primary action while preserving the existing layout by default. See [Clips progress bar position](Themes.md#clips-progress-bar-position) for more information.\n- Added `theme.behavior.player.clips.modalContentBottomAnchor` so modal Clips Players can keep the 9:16 media frame unchanged while anchoring lower Player UI to either the video or the screen safe area. See [Modal Clips content bottom anchor](Themes.md#modal-clips-content-bottom-anchor) for more information.\n- Added optional `titleToCategoriesSpacing`, `categoriesToMoreSpacing`, `metadataToProgressBarSpacing`, and `progressBarToActionSpacing` controls under `theme.player.clips.spacing` for Embedded Clips. See [Embedded Clips spacing](Themes.md#embedded-clips-spacing) for more information.\n- Added optional typography controls for selected and unselected `theme.player.clips.feedSwitcher` states, `theme.player.clips.title.fontWeight`, and `theme.player.clips.categoryNavigation`, including Dynamic Type-scaled line heights and field-by-field remote theme inheritance. `StorytellerFontWeight` now includes `.light`; exhaustive client switches must handle the new case when recompiling. See [Clips player typography](Themes.md#clips-player-typography) for more information.\n\n### Improvements\n\n- Expanded the supported `theme.player.clips.actionIconSize` range to `24...38` while preserving the existing 32pt default and 48pt action-button tap targets.\n\n## **11.5.0** - 01/07/2026\n\n### New Features\n\n- Added the `StorytellerVASTIntegration` module for vendor-neutral fullscreen VAST Ads in Stories and Clips. See [Storyteller VAST SDK](Ads.md#storyteller-vast-sdk) for setup and behavior details\n- Added `StorytellerGAMVASTModule` and `StorytellerGAMVASTModuleConfiguration` so Google Ad Manager VAST tag requests can be configured through the VAST integration without adding Google Mobile Ads or IMA dependencies\n- Added SDK-owned VAST request parameters for GAM VAST tags and Sliide bid enrichment, including size/mute context and host override support. See [VAST and GAM VAST Parameter Tables](Ads.md#vast-and-gam-vast-parameter-tables)\n- Added the `TileVisible` analytics event for Story and Clip list tiles, including the 1-based `tileIndex` payload field. See [List Tile Events](Analytics.md#list-tile-events)\n- Added remote theme support for `theme.behavior.following.feedSwitcher.selectionStyle` so Clips For You / Following switchers can use the legacy selected underline or the new selected text-weight styling. Missing or unknown values default to `underline`.\n- Added remote theme support for `theme.behavior.search.filters` so tenant settings can hide Search filter sections while hidden filters reset to their default values.\n- Added tenant-configured Clips opening pre-roll Ads with timeout fallback. See [Clips Opening Pre-Roll Ads](Ads.md#clips-opening-pre-roll-ads)\n- Added `StorytellerClipsAdConfiguration` and optional `StorytellerClipCollectionConfiguration.adConfiguration` so individual Clips presentations can opt into opening pre-roll and bottom banner Ad placements\n- Added `Storyteller.shared.user.setFollowedCategories(_:)` so app-managed following integrations can asynchronously replace the full followed category set before reloading Storyteller content. See [Followed Categories](Users.md#followed-categories) for more information\n- Added remote theme support for `theme.behavior.player.clips.categoryNavigation` so CMS configuration can customize the delimiter between Clips category navigation labels and optionally hide the leading `#` in the category Player title\n\n### Improvements\n\n- Improved Card audio toggle placement so it follows the resolved Card theme layout for padding, horizontal margins, and rounded corners\n- Improved SDK startup behavior by deferring I/O operations during initialization\n\n### Bug fixes\n\n- Fixed an issue where unmuted video Cards could restart audio while the host app was in the background\n- Fixed an issue where rapidly reopening a Sheet action could resume playback behind the visible Sheet\n- Fixed a Clips Player issue where Pull to Refresh during fast swiping could leave the Player aligned to a stale clip with broken next/previous navigation\n- Fixed an issue where the Clip Player right-swipe dismiss gesture could stop working after switching from For You to Following and back\n- Fixed an issue where in-app actions opened from a nested search-result Clip Player could briefly reveal the underlying navigation stack while dismissing the Player\n- Fixed an iOS 18 Cards issue where visible video Cards could fail to autoplay because the visibility check treated same-Card SwiftUI hit-test views as overlays\n- Fixed an issue where Card audio toggles could show stale mute state after another Card changed the shared Cards audio state\n- Fixed iPad sheet sizing when rotating with a Sheet open from the Story or Clip Player\n- Fixed an issue where mounted Embedded Clips could keep showing the previous user's feed after the SDK user changed until the host app manually reloaded data\n- Fixed a tvOS Clips Player issue where primary action button titles using custom fonts could truncate after returning from Recents\n- Fixed an issue where Player mute/unmute taps at zero system volume would not toggle the mute button on the Player\n- Fixed a tvOS Clips Player issue where Siri Remote up/down presses could sometimes be ignored\n\n## **11.4.1** - 12/06/2026\n\n### New Features\n\n- Added `StorytellerGAMModuleConfiguration.publisherProvidedId` so Google Ad Manager integrations can pass a request-level Publisher Provided ID (PPID) for audience targeting\n\n### Improvements\n\n- Replaced the `lottie-ios` dependency with `StorytellerLottie` for Clips like/unlike animations\n\n### Bug fixes\n\n- Fixed a Clips playback issue where some looped clips could briefly show the first frame again near the end while audio continued playing\n- Fixed an issue where returning to Embedded Clips after updating followed categories could reset the selected tab and leave the Player in an invalid state until Pull to Refresh was triggered\n\n## **11.4.0** - 18/05/2026\n\n### New Features\n\n- Added `Storyteller.shared.useCustomShareHandling` and `StorytellerDelegate.onShareButtonTapped(text:title:url)` so integrators can intercept Story and Clip share taps, receive the SDK-generated payload, and resume playback with `Storyteller.shared.resumePlayer()` after their custom share flow is dismissed\n- Added `Storyteller.shared.user.getFollowableCategories()` to fetch backend-backed followable category metadata and SDK-derived current followed state for custom category management UIs. See [Followed Categories](Users.md#followed-categories) for more information\n- Added support for Clips Player instructions onboarding screen\n- Added `theme.player.icons.like.animation` for Lottie based Clips like/unlike button animations\n\n### Improvements\n\n- Added support for Cards with `aspectRatio = \"3:4\"`\n- Documentation: reorganized the docs navigation and refreshed the landing page\n- Ensured First-Party Ad requests send the same parameters as GAM Ad requests for consistent ad targeting\n- Improved Story and Clip action links so Player destinations open over the current Player instead of dismissing it first\n- Improved network cancellation flows across the SDK\n\n### Bug fixes\n\n- Fixed an issue where reloading Embedded Clips while on a clip ad could hide the collection title on the first clip\n- Fixed an issue where Banner Ads were draggable\n- Fixed an issue with right swipe in certain scenarios in Clips Player\n- Fixed an issue where the Less button would not hide when navigating to another Clip within the Player\n- Fixed an issue where some images might disappear after backgrounding and foregrounding the app\n- Fixed an issue where top UI elements could remain hidden in Clips Player when fast swiping through Non Skippable Ads\n- Fixed an issue where image-based Clips Player titles and visible clip content titles could be skipped by VoiceOver swipe navigation\n- Fixed an issue where Player live badges could be visible for non-live content or content without badge titles\n- Fixed an iPad Clips Player issue where the search/category navigation control could shift outside the Player after rotation and returning from category navigation\n- Fixed an issue where first Card analytics could report an incorrect `isMuted` value before the first visible video Card settled as primary\n- Added a preventive fix for a rare crash that could occur while images were loading and the `AssetDownloader` was deinitialized\n- Fixed Clips Player category navigation ordering so the selected/current category is shown last in the list\n- Fixed an issue where AdMob native video controls in the Story Player could trigger Story navigation instead of responding to play/pause or mute taps\n\n## **11.3.3** - 06/05/2026\n\n### Bug fixes\n\n- Fixed an issue where video Cards could fail to show the mute toggle if a Cards collection was rendered before SDK initialization completed\n- Fixed an issue where the Cards audio toggle did not animate with the card shrinking animation when pressing or opening a card\n\n## **11.3.2** - 01/05/2026\n\n### New Features\n\n- Added Cards audio controls for video Cards, including tenant-driven audio behavior support, known no-audio handling, active-card-only playback, session-scoped mute state, and optional Cards-specific mute-state persistence. See [Video Card Audio](Cards.md#video-card-audio) for more information\n- Added `theme.cards.audio.mutedIcon` and `theme.cards.audio.unmutedIcon` to customize Cards audio control icons. See [Cards theming](Themes.md#cards) for more information\n- Added the `CardAudioToggled` analytics event with `audioToggleFrom`, `audioToggleTo`, and `isMuted`, and added known `isMuted` state to video Card analytics events. See [Card Audio Toggled](Analytics.md#card-audio-toggled) for more information\n\n### Bug fixes\n\n- Fixed an issue where the empty Following screen in Clips could hide its CTA\n\n## **11.3.1** - 14/04/2026\n\n> Important: `11.3.1` supersedes `11.3.0`. Do not use `11.3.0`, as it shipped with a broken distributed Swift interface in the packaged SDK binary that could prevent consumer apps from importing the SDK.\n\n### Bug fixes\n\n- Fixed a packaging issue where the distributed Swift interface emitted by `StorytellerSDK` could prevent the packaged SDK binary from being imported by consumer apps\n\n## **11.3.0** - 13/04/2026\n\n> Superseded by `11.3.1`. Do not use `11.3.0`.\n\n### Breaking Changes\n\n- Removed `offset` from `StorytellerStoriesListConfiguration` and `StorytellerClipsListConfiguration`\n\n### New Features\n\n- Added `theme.engagementUnits.poll.showImageAnswerGradientOverlay` to control the gradient overlay behind the text in image Poll Answers (default `true`). See [Themes](Themes.md#engagement-units) for more information\n- Added `theme.player.enableFollowableCategorySwipeFromRightEdge` to control opening Followable Category with right-edge swipe in the Clips Player (default `true`)\n- Added `theme.player.clips.eyebrow` to customize the Clips Player eyebrow font family, text size, optional line height, and text color\n- Added `theme.player.clips.title` to customize the Clips Player main title font family, text size, optional line height, and text color\n- Added `theme.player.icons.back` to customize the Clips Player back button icon. See [Themes](Themes.md#player) for more information\n- Added `theme.player.icons.mute.muted`, `theme.player.icons.mute.unmuted`, `theme.player.icons.captions.enabled`, and `theme.player.icons.captions.disabled` to customize the Player mute and captions icons in Stories and Clips. See [Themes](Themes.md#player) for more information\n- Added `theme.player.clips.showButtonBackgrounds`, `theme.player.clips.actionIconSize`, and `theme.player.clips.spacing` to customize Clips Player button backgrounds, action icon sizing, and layout spacing. See [Themes](Themes.md#player) for more information\n- Added Cards theme support for explicit heading/subheading spacing, explicit button spacing, a per-theme Dynamic Type toggle, an optional full-bleed text panel background for text-below-content cards with light/dark background overrides, and appearance-aware heading/subheading/button text colors\n- Added support for AdMob Ads via `StorytellerAdMobModule`. See [Ads](Ads.md#storyteller-admob-sdk) for more information\n- Added support for `externalApp` CTA handling in Custom Native Ads on iOS\n- Added `Storyteller.shared.isPlayerMuted` to expose the current mute state of the Player\n- Added `AdOpportunity` analytics event, emitted when the SDK reaches an eligible ad slot before requesting an ad. See [Analytics](Analytics.md#ad-opportunity) for details\n- Added `AdRequested` analytics event, emitted when the SDK initiates a Google ads request (GAM/AdMob). See [Analytics](Analytics.md#ad-requested) for details\n- Added `AdLoaded` analytics event, emitted after a successful ad load with ad source metadata and adapter latency details. See [Analytics](Analytics.md#ad-loaded) for details\n- Added `AdFailedToLoad` analytics event, emitted when a Google ads request fails. See [Analytics](Analytics.md#ad-failed-to-load) for details\n- Added `AdPaid` analytics event, emitted when impression-level paid revenue info is available. See [Analytics](Analytics.md#ad-paid) for details\n- Added `AdSessionSummary` analytics event, emitted once when a root Storyteller player session ends (Clips or Stories). See [Analytics](Analytics.md#ad-session-summary) for details\n- Added `CardVideoStarted`, `CardVideoHeartbeat`, and `CardVideoCompleted` analytics events for video cards. See [Analytics](Analytics.md#card-video-started) for details\n- Added `StorytellerModule.adSource: StorytellerAdSource?` for declaring integrating-app ad sources. See [StorytellerModule.adSource](StorytellerModule.md#adsource) for more information\n- Added `adSource` to ad analytics events. Supported values include `storyteller` for Storyteller First Party Ads, `gam`, `admob`, and custom integrating-app source values. The value is `nil` when the source is not resolvable (including `AdOpportunity`, which is emitted before module resolution)\n\n### Bug fixes\n\n- Embedded Clips now fetch and prepend a missing destination clip when it isn't in the first page\n- Fixed an issue where rapid swipes through Clips could prevent clip open tracking from being recorded correctly, which could affect fresh-feed ordering after dismissing the Player\n- Fixed Cards `heading.textSize` and `subHeading.textSize` so they still apply when no custom font family is provided\n- Fixed Card video restarting and blinking when the host app triggers a full collection view reload\n- Fixed a rare issue where the video card would not play after a reload\n- Fixed an issue where Clips video ads could emit duplicate `OpenedAd` and impression tracking for custom native Ads\n- Fixed an issue where the Stories instruction CTA text could be unreadable in dark mode when opening Stories from Search or Followable Categories\n\n## **11.2.1** - 27/03/2026\n\n### Bug fixes\n\n- Fixed an issue where LIVE chip could be misaglined in circular tiles\n\n## **11.2.0** - 21/01/2026\n\n### New Features\n\n- Added `startedAware` Story ordering mode that groups Stories by progress: unread \u2192 in progress \u2192 completed. This feature is gated behind the `pageReadStatus` functional feature flag\n- Added paging functionality to Clips rows and scrollable grids\n\n### Improvements\n\n- `Skipped Story` analytics event is no longer fired when the user is on the last page of a story, as navigating from the last page is not considered a \"skip\". See [Analytics](Analytics.md#skipped-story) for details\n- Improved experience of resuming Stories that were previously opened or fully viewed\n\n### Bug fixes\n\n- Fixed LIVE chip overlapping story title and incorrect corner radius on circular tiles when using large Dynamic Type with automatic row height\n- Fixed Clips bottom banner ads rendering cut off after rotating the device\n- Fixed Story resume selection to use array indices and filtered empty Stories to prevent crashes in Story opens and deeplinks\n- Fixed an issue where the Search results page could be overlapped by Search suggestions when tapping outside of the text field\n\n## **11.1.0** - 26/12/2025\n\n### Breaking Changes\n\n- Updated `StorytellerTileType` to include `categories: [StorytellerCategoryDetail]` for both `.clip` and `.story` cases in `StorytellerListViewDelegate.onTileTapped(type:)`. For more information, see [onTileTapped](StorytellerDelegate.md#ontiletapped)\n\n### New Features\n\n- Added support for Non Skippable Ads. For more information, see [Non Skippable Ads](Ads.md#non-skippable-ads)\n- Added `setCustomAttributes(_:)` method to [StorytellerUser](Users.md#set-custom-attributes) for setting multiple custom attributes at once by overwriting current ones\n- Implemented support for the `customLiveChipText` parameter for Story Tiles, allowing configuration directly via the CMS\n- Added support for showing Banner Ads at the bottom of the Clips Player. See [Ads](Ads.md) for more information\n- When the Player volume is 0, it will now be treated as muted. The `isMuted` property in analytics events will be set to `true`\n- Like and Share values on the Clips Player can now be hidden, controlled through the CMS\n\n### Bug fixes\n\n- Fixed an issue where rapid swiping through clips could cause new clips to be inserted before the currently viewed clip\n- Fixed UI issues in the WebView on iOS 26\n- Fixed an issue where calling `Storyteller.shared.openCollection` with a destination parameter was being ignored\n- Fixed an issue where the Stories Rows and Grids themes were not applied to the Instructions screen\n- Fixed an issue where the Poll Answer View did not occupy the full available width\n- Fixed a case where the Story Player close animation would target the center of the screen instead of the proper Story Tile\n- Fixed an issue where a native video ad might use an incorrect duration from the GAM module\n- Fixed an issue where the Clips Player close animation targeted the tile instead of the center of the screen when an Ad was displayed\n- Fixed an issue where Ad Banners were not accessible when VoiceOver mode was active\n- Constrained round tile live chip custom images to not overflow the tile's bounds and resize to fit\n- Fixed several tvOS focus issues while navigating through the lists and after dismissing the Player\n- Fixed an issue where `currentCategory` could be missing in analytics for Stories lists configured with the `following` category\n- Fixed an issue where embedded clips could have no sound or fail to resume playback after dismissing a player presented on top\n- Fixed issues with the Followable Category button where it could remain in a pressed state after a cancelled swipe and the icon was not respecting the theme color\n\n## **11.0.5** - 24/11/2025\n\n### Bug fixes\n\n- Fixed an issue where analytics could report a story\u2019s category instead of the configured list category for the `currentCategory` property\n\n## **11.0.4** - 12/11/2025\n\n### Improvements\n\n- Added `StorytellerClipCollectionConfiguration.openReason` to track the reason a Clip Collection was opened for analytics purposes, such as when opened via external deeplinks\n\n## **11.0.3** - 11/11/2025\n\n### Bug fixes\n\n- Resolved an issue where the UIView wrapper for StorytellerCard was incorrectly adding extra safe area padding\n\n### Improvements\n\n- Moved Mute button from the Clips navigation header to the action buttons section\n- Added support for a compact Clips primary action button size, configurable in the CMS\n\n## **11.0.2** - 29/10/2025\n\n### Bug fixes\n\n- Fixed an issue where reloading the Following tab with no clips could throw an error\n- Fixed an issue where `recalculatedSize` could have incorrect values in Grids and Cards views\n- Fixed incorrect progress bar positioning in the Clips player when opened from a list\n\n### Improvements\n\n- Added `removeFollowedCategories(_:)` to [StorytellerUser](Users.md#update-followed-categories)\n\n## **11.0.1** - 06/10/2025\n\n### Bug fixes\n\n- Added support for trackingURL as an optional parameter in GAM adapter, enabling ad rendering functionality regardless of its presence\n- Fixed a memory leak issue affecting Cards when Storyteller was reinitialized multiple times\n\n### Improvements\n\n- Removed `StorytellerClipCollectionConfiguration.openReason` as it is already passed into the `Storyteller.shared.open\u2026` methods\n- Improved component layouts for better display with larger accessibility font sizes\n\n## **11.0.0** - 03/10/2025\n\n### Breaking Changes\n\n- Removed deprecated code from the public API\n- Removed the default value for `isScrollable` in SwiftUI grids. You must now explicitly pass `isScrollable` when initializing `StorytellerStoriesGrid` and `StorytellerClipsGrid`.\n- Updated `StorytellerListViewDelegate.onTileTapped` method to provide richer context via the `StorytellerTileType` enum. See [onTileTapped](StorytellerDelegate.md#ontiletapped) for more information\n- Changed `Storyteller` class from using static methods to a shared instance pattern. All API calls must now use `Storyteller.shared` instead of calling methods directly on the class (e.g., `Storyteller.shared.initialize()` instead of `Storyteller.initialize()`)\n- `eventTrackingOptions` can now only be set during SDK initialization by passing a `StorytellerEventTrackingOptions` object to the `initialize` method. Runtime modifications are no longer supported. The property remains publicly readable via `Storyteller.shared.eventTrackingOptions`. To change tracking options, you must reinitialize the SDK. See [Privacy and Tracking](PrivacyAndTracking.md) for more information\n\n### New Features\n\n- The Story player can now display closed captions\n- Introduced a new [Following Model](Users.md#storyteller-managed-following) where Storyteller is handling all following logic, without the need for storing and syncing followed categories app-side\n- Added support for custom `context` data in analytics events. Context allows integrators to provide additional analytics attribution data for Storyteller rows, grids and cards. For details, see [Context](Analytics.md#context)\n- Added automatic user attribute management for followed categories. See [Followed Categories](Users.md#followed-categories) for more information\n- Added support for setting default mute state when opening Clip and Story players, and ability to persist mute state between app launches. Both settings are configurable in the CMS\n- Added `theme.lists.enablePlayerOpen` property to control whether the SDK automatically opens the player when a tile is tapped. See [Theme](Themes.md#lists) for more information\n- Card collections can now be sorted by viewed/tapped ordering, which means a new Card will be shown every time a Card from the collection has been viewed or tapped.\n\n### Improvements\n\n- Added support for up to 2 lines of text in quiz and poll answers to accommodate longer content\n- Added `isCategoryFollowed(_:)` method and `followedCategories` property to [StorytellerUser](Users.md#common-methods)\n- Added support for muting videos in video poll Stories\n- Row views now automatically adjust their height when iOS Dynamic Type text size changes, improving accessibility\n- Added support to show a button for Cards. See [Cards](Cards.md) for more information\n- Revisiting accessibility in the Clips Player\n- When no limit is provided, non-scrollable grids default to rendering at most 30 items\n- Improved ads analytics tracking with proper predecessor IDs for Stories and Clips\n- Added `actionLinkId` event property. See [Action Link ID](Analytics.md#action-link-id) for details\n\n### Bug fixes\n\n- Resolved an issue where poll deeplinks with an answer were not handled\n- Fixed an issue where rotating the device on the Search page caused the Stories player layout to break\n- Fixed an issue where sometimes Pull to Refresh was not working after reloading embedded Clips\n- Fixed an issue where Story ad video sound would sometimes continue playing after switching to a different Story page\n- Fixed an issue were Polls with video background were showing the buttons before the video was actually loaded\n- Fixed Poll Image Answer Containers not tappable outside of the buttons, which prevented navigating to the next/previous page\n- Fixed a rare bug where Clip captions could sometimes overlap with the \"For You\"/\"Following\" switcher\n- Fixed an issue where `pageActionText` appeared in `StorytellerUserActivityData` even when the Page action did not exist\n- Fixed an issue where applying a search filter could result in a blank search results screen\n- Fixed an issue where the Story player, when opened from lists in horizontal orientation on iOS, could behave incorrectly during playback\n- Fixed a rare issue where new Story Pages wouldn\u2019t appear until host application relaunch\n- Fixed an issue where `Muted Ad` and `Unmuted Ad` analytics events were sent when `enableAdTracking` was disabled. See [Privacy and Tracking](PrivacyAndTracking.md#ads-tracking)\n- Fixed an issue where `Opened Clip` event was not sent when dismissing a Clip Category at the top level\n- Fixed an UI issue where certain Functional Behavior Toggles could render incorrect Clip button states\n- Recovering Cards playback if a Media Services Reset event occurs\n\n## **10.13.4** - 24/09/2025\n\n### Bug fixes\n\n- Fixed several Pull to Refresh issues in Clips\n\n### Improvements\n\n- Added `StorytellerCardView.recalculatedSize` to expose the updated card size after layout calculations\n- A `displayLimit` of `0` or negative value is now treated as unlimited (equivalent to passing `nil`)\n\n## **10.13.3** - 18/08/2025\n\n### Bug fixes\n\n- Fixed an issue where the Search suggestions view was missing horizontal padding\n- Fixed an issue where PTR could sometimes trigger on the 2nd clip during fast swiping\n- Fixed an issue where `excludeFromAnalytics` would not be properly set on analytics events\n\n## **10.13.2** - 12/08/2025\n\n### Improvements\n\n- Made guest User ID persistent across login/logout sessions to maintain consistent user experience and viewed history\n- Improved Card text gradient display for better readability when text is overlaid on content\n\n### Bug fixes\n\n- Fixed Search Results screen UI layout issues on iOS 15\n\n## **10.13.1** - 07/08/2025\n\n### Bug fixes\n\n- Fixed an issue where Card Video wouldn't properly update when URL changes\n\n## **10.13.0** - 05/08/2025\n\n### New Features\n\n- Introduced the Independent Functional Behavior Toggles for better privacy control. For details, see the [Privacy and Tracking](PrivacyAndTracking.md#independent-functional-behavior-toggles) documentation\n- Updated the Between Pages Ad strategy to insert ads based on viewed page count\n- Introduced an initial index for the `betweenStoriesAndPages`, `betweenPages` and `betweenClips` ads strategies, that will be the index after which the first ad will appear. Can be configured in the CMS.\n- Introduced two new analytics events for enabling and disabling Story captions\n- Added a mute toggle button to the Stories and Clips players for improved audio control, which can be enabled in the CMS\n- Introduced new analytics events for mute actions: `Muted Story`, `Unmuted Story`, `Muted Clip`, `Unmuted Clip`, `Muted Ad` and `Unmuted Ad`\n- Added `isMuted` property to all Story, Clip and Ad analytics events to track the current mute state\n- Introduced a new field in ad-related events, called [Ad Strategy](Analytics.md#ad-strategy)\n- Added `nextClip` parameter to the `clips` case in `StorytellerAdRequestInfo` to provide information about the next Clip in the sequence for improved Ad targeting\n- Added support for Followable Category limits, allowing restrictions on the number of categories users can follow\n- Introduced three new analytics events for Followable Category limits: [Followable Category Limit Shown](Analytics.md#followable-category-limit-shown), [Followable Category Limit Action Button Tapped](Analytics.md#followable-category-limit-action-button-tapped), and [Followable Category Limit Dismissed](Analytics.md#followable-category-limit-dismissed)\n- Added support for Eyebrows - additional contextual text that appears next to the main title of rectangular tiles, Stories and Clips inside the Players.\n- Added the [onTileTapped](StorytellerDelegate.md#ontiletapped) method to `StorytellerListViewDelegate` to notify the delegate when a tile is tapped before the player is presented\n- Added the `adIndex` parameter to the `clips` case in `StorytellerAdRequestInfo` and to all ad-related analytics events to track the position of ads within a collection\n- Pausing adjacent stories when playing a new one while fast swiping\n\n### Improvements\n\n- Trimmed input values for the GAM module\n- Clip Category images in the Player now download and display sooner\n\n### Bug fixes\n\n- Fixed an issue where the currently displayed Story could occasionally restart and freeze on iPad devices\n- Fixed an issue where the web view navigation buttons did not correctly reflect their enabled or disabled states\n- Fixed an issue where the followable categories might report incorrect following status\n- Fixed a rare issue where the Clips or Stories Player could become unresponsive after rapidly dismissing the share sheet\n- Fixed an issue where an incorrect real time update setting could cause infinite data reload calls\n- Fixed an issue where GAM video ads in Stories would be silent if the device's mute switch was on, even after the user had unmuted Stories via the Volume buttons\n- Fixed an issue where audio from adjacent video Stories would continue playing when fast swiping between them\n- Fixed an issue where video ads continued playing when a controller was presented on top\n- Fixed a rare crash when reloading Stories after an ad was inserted\n- Fixed an issue where `SkippedAd` and `FinishedAd` events were not being sent when swiping away from ads in the Clips player\n- Fixed an issue with Search content overlapping on iOS 15 in some cases when using custom fonts\n- Fixed playback issues in scenarios where other content is presented on top of our players, e.g. Search or a Web View\n- Fixed an issue where search analytics events were using incorrect action properties when opened from clips\n- Fixed an issue where Clips could freeze when fast swiping between them\n\n## **10.12.2** - 10/07/2025\n\n### Bug fixes\n\n- Fixed a bug where passing a nil User ID when initializing Storyteller would cause the user to reset on each app launch, along with its viewed history\n- Fixed an issue where lists weren't respecting the `tiles.title.show` configured in the CMS and were always showing tile titles\n\n## **10.12.1** - 01/07/2025\n\n**Note -** Due to a bug discovered post-release, we do not recommend upgrading to this version. Please use `10.12.2` or above which contains the fix.\n\n### Bug fixes\n\n- Fixed an issue where Storyteller Card `onDataLoadComplete` callback wouldn't be called when Card data was unchanged\n\n## **10.12.0** - 26/06/2025\n\n**Note -** Due to a bug discovered post-release, we do not recommend upgrading to this version. Please use `10.12.2` or above which contains the fix.\n\n### Improvements\n\n- Introduced `enableRemoteViewingStore` option in tracking preferences. For details, see the [Privacy and Tracking](PrivacyAndTracking.md#remote-viewing-store) documentation\n\n### Bug fixes\n\n- Fixed an issue where poll answers were not displayed in Video Stories\n- Fixed an issue where the theme text casing was not applied to the Story CTA button and the CTA on the empty 'Following' screen in Clips\n\n## **10.11.1** - 20/06/2025\n\n**Note -** Due to a bug discovered post-release, we do not recommend upgrading to this version. Please use `10.12.2` or above which contains the fix.\n\n### Bug fixes\n\n- Fixed an issue where Video Cards wouldn't sometimes properly load or playback would stall\n\n## **10.11.0** - 16/06/2025\n\n**Note -** Due to a bug discovered post-release, we do not recommend upgrading to this version. Please use `10.12.2` or above which contains the fix.\n\n### Bug fixes\n\n- Fixed an issue where Embedded Clips with \"For You\" / \"Following\" enabled wouldn't resume playback after being reloaded in the background\n- Fixed an issue where the Clip Player wouldn't resume playback after being foregrounded with an alert displayed\n- Fixed some cases when the Clip and Story Player buttons can be pressed multiple times\n\n### Improvements\n\n- Introduced `enableFullVideoAnalytics` option in tracking preferences. For details, see the [Privacy and Tracking](PrivacyAndTracking.md#videos-tracking) documentation\n- Added support for Cards in StorytellerHome\n- Improved privacy and security by hashing all user IDs in the SDK\n- Added Cards support to `StorytellerHome`\n- Implemented SHA256 hashing when storing user ID's, for improved privacy and security\n\n### Deprecations\n\n- Deprecated `Storyteller.currentUserId` property. It now always returns an empty string and will be removed in a future release.\n- Deprecated `isAnonymousUser` property on `StorytellerUserActivityData`. It now always returns `nil` and will be removed in a future release.\n- Deprecated `id` property on `StorytellerAdRequestInfo`. It's now always an empty string and will be removed in a future release.\n\n### Breaking Changes\n\n- Removed deprecated public APIs\n\n## **10.10.0** - 26/05/2025\n\n### New Features\n\n- Introduced a new `StoryInstructionsScreenViewed` [analytics event](Analytics.md#story-instructions-screen-viewed)\n- Added support for Clip secondary actions\n- Added support for [Cards](Cards.md), flexible components for promoting your content\n- Added support to set titles in the CMS for Collections with \"For You\" / \"Following\" enabled\n- Added ability to specify `openReason` when opening Stories and Clips\n\n### Improvements\n\n- Improved clips loading priority for ForYou/Following mode\n- Added support for first class Sheet actions from the Empty Following screen and from Followable Category actions\n- Updated `openedReason` [analytics property](Analytics.md#opened-reason) to have value `instanceMethod` when opening a Story or a Page through `Storyteller.openStory(id:)` and `Storyteller.openPage()` methods\n- Added `Storyteller.getStoriesCount(for:)` [method](AdditionalMethods.md#getstoriescount) that returns the total number of Stories for provided Category IDs.\n- Added `Storyteller.getClipsCount(for:)` [method](AdditionalMethods.md#getclipscount) that returns the total number of Clips in the Collection.\n- Removed SharePlay option from the Share sheet when sharing stories or clips\n- Ensured the Clips Player Captions button state updates correctly after caption settings are modified in other instances of the Clips Player\n- Added right swipe to dimiss gesture support to the Clips Player\n\n### Bug fixes\n\n- Fixed an issue where clips would not automatically resume playback when returning to the player after executing an `inApp` clip action\n- Fixed an issue where buttons stayed disabled after swiping past the last or first page inside the Clips player\n- Fixed an issue where the Player wouldn't properly revert audio settings when getting dismissed\n- Fixed an issue where the nearby Clips Player could start playing unexpectedly when \"For You\" or \"Following\" is enabled and the device is rotated\n- Fixed playback and layout issues on the Story and Clips Player that occasionally occurred during device rotation\n- Fixed a bug around clips category navigation and paging where duplicate clips would be appended while navigating through categories\n\n### Deprecations\n\n- Deprecated `Storyteller.isPlayerVisible` in favour of [Storyteller.isPresentingContent](AdditionalMethods.md#ispresentingcontent) property. `Storyteller.isPlayerVisible` returns the same value as `Storyteller.isPresentingContent` and will be removed in a future version.\n- Deprecated `Theme.EngagementUnits.Poll.showVoteCount` property in favour of a value that can be set in the CMS. Starting from this version, this Theme property has no effect. Default value for the CMS property is `true`.\n- Deprecated `Theme.Tiles.Title.show` property in favour of a value that can be set in the CMS. Starting from this version, this Theme property has no effect. Default value for the CMS property is `true`.\n- Deprecated `StorytellerClipsOpenReason` enum. Use `StorytellerOpenReason` instead\n\n## **10.9.2** - 01/04/2025\n\n### Bug fixes\n\n- Fixed analytics tracking for Followable Category follow and unfollow actions\n\n## **10.9.1** - 26/03/2025\n\n### Bug fixes\n\n- Fixed a crash that occurred when fetching ads in apps built with Swift 6 mode\n\n## **10.9.0** - 24/03/2025\n\n### New Features\n\n- Added progress bar to the Clips player\n- Added support for first class Sheets, enabling web content to overlay on top of the current Story or Clip Player\n\n### Improvements\n\n- Introduced `enableAdTracking` option in tracking preferences. For details, see the [Privacy and Tracking](PrivacyAndTracking.md#ads-tracking) documentation\n- Implemented theme support for `StorytellerClipsViewController`. For details, refer to the [Embedded Clips](EmbeddedClips.md#loading-clips) documentation\n- Added continuous play mode for Clips on tvOS, where the player auto-advances to the next clip once the current one finishes\n- Introduced two Player lifecycle methods to the [StorytellerDelegate](StorytellerDelegate.md)\n\n### Bug fixes\n\n- Fixed VoiceOver reading order of elements in the Clips Player\n- Fixed an invalid app state that could occur when backgrounding the app during interactive push transition from the Clips Player to the Followable Category screen\n- Fixed an issue where Ads would occasionally disappear when switching between \"For You\" and \"Following\" tabs in the Clips Player\n- Resolved audio problems with GAM video Ads when the iPhone mute switch was enabled\n- Fixed truncation of Story timestamps for Stories with longer titles\n\n## **10.8.4** - 18/03/25\n\n### Bug fixes\n\n- Fixed some crashes occuring in low network conditions\n\n## **10.8.3** - 11/03/25\n\n### Improvements\n\n- Added support for deeplink URL's to Clips and Stories using external ID's\n\n## **10.8.2** - 25/02/25\n\n### Bug fixes\n\n- Fixed an issue where duplicate `OpenedClip` events would be sent in some rare cases when switching from For You to the Following tab in the Clips Player\n- Fixed an issue where Filter Settings were not sent in the `DismissedSearch` event\n- Fixed an issue where Clip Ads events didn't populate `categories` property\n- Fixed an issue where `SkippedStory` didn't trigger when skipping the last page of a Story\n- Fixed an issue where `OpenedClip` event's `openedReason` property would be `swipe` instead of `categoryBackTap` property when dismissing a Category inside the Clips Player\n- Fixed an issue where `NextClip` and `PreviousClip` events would have properties of the Clip user navigated to, instead of the Clip it was navigated from\n- Fixed an issue where transitioning to and from page ads would erroniously record an `OpenedStory` event\n\n## **10.8.1** - 18/02/25\n\n### Bug fixes\n\n- Fixed a bug where the wrong `AVPlayer` would get recorded in some Clips analytics events\n\n## **10.8.0** - 14/02/25\n\n### New Features\n\n- Added Clips Paging functionality to Clips Player to improve performance and user experience\n- Added support for Swift 6\n\n### Improvements\n\n- Tapping on For You or Following tab when it's already selected will reload that tab's Clips\n- Improved the animation when applying Filters on the Search screen\n- Added `clipIndex` property to all Ad analytics events and `captionsEnabled` to all Clips analytics events\n- Added ability to set the `Search.heading` property in the Theme, refer to the [Theme](Themes.md) documentation\n- Added default implementation for `topLevelBackTapped` in the `StorytellerClipsViewController` to pop it from the nearest navigation controller\n- Added support for Live badge to the Clips Player\n- Replaced the `configuration` property with the `configure` method on the Storyteller List Views. `configuration` property can still be used, but will be deprecated in the next major version\n- Improved Captions button styling on tvOS\n\n### Bug fixes\n\n- Fixed various Clips Player issues that could occur when fast swiping, doing Pull to Refresh or going into the background\n- Fixed the positioning of the action button when the Following tab is empty\n- Fixed an issue where Sharing a quiz link would not open the first Page of the quiz\n- Fixed an issue where Captions sometimes wouldn't be visible if Clip is opened through Category or Search screens\n- Fixed an issue where Search Filters would be applied without tapping the `Apply Filters` button\n- Fixed an issue where Ads title and Ad label could be misaligned\n- Fixed an issue where status bar on the Search screen wouldn't properly update its styling in light mode\n- Fixed an issue where `skippedStory` event would be fired when final Page of the Story completes\n- Fixed an issue where Search button in Clips Player could be out of the video frame on iPad in landscape mode\n- Fixed a tvOS issue where Clip title would be too close to the buttons when the Clip title was long\n- Fixed an issue where `clipActionType` would be `none` instead of `nil` for Clips with no action button\n- Fixed an issue where Pull to Refresh wouldn't work in some rare cases inside the Clips Player\n- Fixed an issue where `openClip` wouldn't be sent when going back from a Category in the Clips Player\n- Fixed an issue where Ads wouldn't disappear when scrolling backwards in the Clips Player\n- Fixed an issue with Search suggestion styling on the Search screen\n- Fixed an issue where the Followable category button wouldn't be clickable in rare scenarios\n- Fixed an issue where the `score` parameter would be missing when sharing a quiz link\n\n## **10.7.7** - 10/02/25\n\n### Bug fixes\n\n- Fixed an issue where clips would display an infinite loading spinner when using AirPlay\n\n## **10.7.6** - 28/01/25\n\n### Bug fixes\n\n- Fixed a bug where the Clips Player would resume playback while presenting a modal screen after returning from background\n\n## **10.7.5** - 23/01/25\n\n### Bug fixes\n\n- Resolved an issue where clip ads were inserted into the wrong position\n- Corrected round tile labels for accessibility with large text\n- Removed the CC button from live clips\n\n### New Features\n\n- Introduced two new analytics events for enabling and disabling captions\n\n## **10.7.4** - 24/12/24\n\n### Bug fixes\n\n- Fixed a bug where Pull to Refresh didn't work inside Embedded Clips when the SDK is used from React Native\n\n## **10.7.3** - 17/12/24\n\n### Improvements\n\n- Added support to show a fixed number of tiles in list rows, via a property called `visibleTiles`. For details, refer to the [StorytellerListViews](StorytellerListViews.md#further-configuration) documentation\n- Adding theme properties to allow integrators to customize appearance of list tiles, badges and the headings of the Instructions screen. For details, refer to the [Theme](Themes.md) documentation\n\n### Bug fixes\n\n- Fixed a rare crash that could occur while refreshing visible cells\n- Fixed a layout issue in non scrollable grids for round tiles with visible titles\n\n## **10.7.2** - 02/12/24\n\n### Improvements\n\n- Updating the way custom Followable Category screens are pushed\n\n## **10.7.1** - 27/11/24\n\n### Bug fixes\n\n- Fixed an issue where the custom Followable Category screen was not being pushed using the integrator's navigation stack\n\n## **10.7.0** - 19/11/24\n\n### New Features\n\n- Added mechanism to allow integrators to provide a custom Followable Category screen. For details, refer to the [Followed Categories](Users.md#followed-categories) documentation\n- Added support for presenting a screen modally on top of the Stories/Clips Player when following an action\n\n### Improvements\n\n- Updated the captions button, allowing users to toggle captions directly from the Clips Player and bypassing the menu\n- Adjusted default font sizes for Stories, Clips, and Singletons for `StorytellerHome`. For details, refer to the [Theme](Themes.md) documentation\n- Allowing Clips from lists to support `For You` and `Following` tabs\n- Enhanced reorder animations for lists and improved the closing animations for the Clips and Stories Player\n- Removing native Clip Ads after they've been viewed\n\n### Bug fixes\n\n- Fixed an issue where Stories could not be muted\n- Resolved an issue where analytics events were not being triggered consistently when switching between `For You` and `Following` tabs\n- Addressed an issue causing the Clips Player to unintentionally display in landscape mode\n- Fixed missing category image when opening a live Clip directly\n- Fixed an issue where the Ad Story could play while the `About this Ad` screen was displayed\n- Fixed the like button on Clips occasionally showing an incorrect state after navigating to a Clip category\n- Fixed several issues where the Clips Player could enter an invalid state after quickly swiping between `For You` and `Following` tabs\n\n## **10.6.5** - 08/01/25\n\n### Improvements\n\n- Updated `containerTitle` analytics property to use collection title for clips instead of collection id\n\n## **10.6.4** - 01/11/24\n\n### Improvements\n\n- Following a category inside `For You` feed will now update the `Following` feed\n\n## **10.6.3** - 31/10/24\n\n### Bug fixes\n\n- Fixed an issue where Lists and Grids wouldn't properly reload in certain cases\n\n## **10.6.2** - 25/10/24\n\n### New Features\n\n- Added the `isLive` and `collectionClipCount` properties to `StorytellerUserActivityData`\n\n### Improvements\n\n- Updated `StorytellerGAMModuleConfiguration` to accept `adUnit` as a closure, allowing different Ad Units to be used when fetching Ads\n\n### Bug fixes\n\n- Fixed a crash that occurred during reload animation when swiping quickly through stories\n- Fixed a Player crash when swiping quickly through stories\n\n## **10.6.1** - 15/10/24\n\n### Bug fixes\n\n- Fixed cells resizing while scrolling for collections with custom content inset behavior\n\n## **10.6.0** - 04/10/24\n\n### New Features\n\n- Added For You / Following feature to our embedded clips\n- Added auto reloading support to our lists\n\n### Improvements\n\n- Some of our theme parameters can be configured from CMS\n- Updated our theme parameters documentation\n- Forced audio into loudspeaker for stories in certain cases\n\n### Bug fixes\n\n- Fixed standard banner ads not displaying on iPad\n- Fixed a crash due to reorder animation issues\n\n## **10.5.3** - 16/09/24\n\n### New Features\n\n- Added support for custom URL schemes, allowing direct opening of a Story or Clip\n\n## **10.5.2** - 11/09/24\n\n### Bug fixes\n\n- Fixed a crash on tvOS when opening the clips player\n\n## **10.5.1** - 09/09/24\n\n### Bug fixes\n\n- Fixed an issue where followable category images would render incorrectly\n- Fixed an issue where story playback would sometimes be stuck after viewing a Standard Ad\n- Fixed an issue where `StorytellerClipsView` would erroneously reload after appearing\n- Fixed an issue where Story or Clip action button wouldn't work in some cases when clicked inside Followable Category UI\n- Fixed a crash with non-scrollable grids on iOS 18\n- Fixed a crash when showing a Standard Banner Ad\n- Fixed a crash in the image downloading pipeline\n- Fixed a crash for `StorytellerListView`'s reorder animation\n- Fixed a crash when switching between stories\n\n## **10.5.0** - 26/08/24\n\n### New Features\n\n- Supporting GAM Native Ad Templates. See [Storyteller Ads](Ads.md) for more information\n- Introducing the [Storyteller GAM Module](https://github.com/getstoryteller/storyteller-gam-module-swift). It is used to simplify fetching ads from Google Ads Manager and injecting them inside our Story/Clips Player.\n- This is facilitated by adding a `modules` array of type [StorytellerModule](StorytellerModule.md) on the `Storyteller` class which fulfills some of the StorytellerDelegate duties\n\n### Improvements\n\n- Improved loading experience when videos are buffering\n- Updated duration of Player open and close animations\n- Updated `configure` method on `StorytellerClipsViewController` to not do any checks on whether to reload the collection or not. It will always reload the collection when called, regardless of the previous value of the `StorytellerClipCollectionConfiguration` passed in.\n\n### Bug fixes\n\n- Improved text layout in specific scenarios within the Clips Player\n- Fixed an issue where the grid top inset would not be applied correctly on the first load in full-screen mode\n- Fixed an issue where the cell pop animation would be interrupted and cancelled in some scenarios when closing the Player\n- Fixed an issue where playback would be stuck in certain scenarios when coming back into foreground\n- Fixed a crash that would happen in some cases when reusing Storyteller lists when animations were turned on\n- Fixed an analytics bug where `FinishedAd` would be sent twice when dismissing the Player\n\n## **10.4.1** - 16/08/24\n\n### Bug fixes\n\n- Fix missing metadata for analytics events\n\n## **10.4.0** - 09/08/24\n\n### New Features\n\n- Row animations are now enabled by default\n\n### Improvements\n\n- Improved the animation transition when opening the clips player\n- General accessibility improvements across the SDK\n- Incorporated support for Dynamic Type to adjust text size based on user settings\n- Updated analytics fields tied to action button interactions\n- Preloading of clip category icons to optimize the asset loading times\n\n### Bug fixes\n\n- Corrected the poll results label text\n- Fixed a crash occurring when tapping on the more button on the clips player on the iPad\n\n## **10.3.1** - 17/07/24\n\n### Bug fixes\n\n- Fixing an issue where the live chip badge was not properly centered, but shifted to the left\n\n## **10.3.0** - 15/07/24\n\n### New Features\n\n- Lists can now reload in an animated fashion, controlled by the [animateTilesOnReorder](Themes.md#lists) flag in the Theme.\n- [Storyteller Home](StorytellerHome.md) can now have a fixed UI Style set\n- Adding the ability to customize the Clips Player Like button, as well as hiding it entirely. For details, refer to the [Theme](Themes.md#player) doc.\n\n### Improvements\n\n- Standardizing Clips and Stories Player present/dismiss transitions\n- Improving the Accessibility experience of the Player\n- Made clarifications around how the [User ID](Users.md) is used within the SDK\n- Organized the docs for the [Open Player](OpenPlayer.md) methods\n- Improving the layout and pull-to-refresh behaviour inside Storyteller Home\n- Improving the pull-to-refresh behaviour inside Embedded Clips\n\n### Bug fixes\n\n- Fixing a case where the instructions screen failed to present when opening a deeplink to a Story Category\n- Fixing some Story Player elements not respecting the Theme\n\n## **10.2.1** - 27/06/24\n\n### Improvements\n\n- when an empty String is passed for `StorytellerUserInput` in `Storyteller.initialize(...)` the default user will be used\n\n## **10.2.0** 19/06/2024\n\n### Breaking Changes\n\n- The following methods on Storyteller have gotten their async version. The old ones are deprecated and will be removed in a future release:\n - `dismissPlayer(animated:, dismissReason:)`\n - `initialize(apiKey:, userInput:)`\n - `openDeepLink(url:)`\n - `openStory(id:)`\n - `openStory(externalId:)`\n - `openPage(id:)`\n - `openCategory(category:)`\n - `openCollection(configuration:)`\n - `openClipByExternalId(collectionId:, externalId:)`\n - `openSearch()`\n\n- `set(collectionId:initialClipId:openedReason)` method on `StorytellerClipsViewController` has been deprecated in favor of the new method `configure(with:)` where the configuration parameter is of type `StorytellerClipCollectionConfiguration`. See [EmbeddedClips](EmbeddedClips.md) for more details.\n- removed `liveChipImage` in favor of the new `LiveChip` struct where `image`, `textColor`, `backgroundColor` and `backgroundGradient` can be set. `image` precedes `backgroundGradient` and `backgroundGradient` precedes `backgroundColor`. See [Themes](Themes.md) for more details.\n\n### Improvements\n\n- updated the order of some analytics events\n- added the `chip.show` property to set whether the chip for rectangular tiles is visible. See [Themes](Themes.md) for more details.\n- added ability to set the open reason when configuring the clip collection, used only for analytics purposes. If not set, default logic will be used.\n- added the `canGoBack` property to `StorytellerClipsViewController`. See [EmbeddedClips](EmbeddedClips.md) for more details.\n- added ability to set chip text color based on read / unread status\n- improvements to image loading sequence\n- added ability to set live chip properties for rectangular tiles\n- added ability to open collection with a specific category by using `Destination` property of the `StorytellerClipCollectionConfiguration`\n\n### Bug Fixes\n\n- fixed an issue where the correct font wasn't used for the like count label in Clips Player\n- fixed issues with captions' appearance for longer texts\n- fixed an issue where the Embedded Clip sound would play in the background in rare scenarios\n- fixed a rare crash with analytics\n- fixed an issue with the action button having the wrong color under certain conditions\n\n## **10.1.2** 13/06/24\n\n### Bug Fixes\n\n- fixed a crash due to a race condition when downloading assets\n\n## **10.1.1** 16/05/24\n\n### Bug Fixes\n\n- resolved an issue with the live badge appearance on round cells when using gradients\n\n## **10.1.0** 15/05/24\n\n### New Features\n\n- introduction of First Party Ads\n- added support for Gradient Borders on Circular Tiles\n\n### Improvements\n\n- updated video buffering strategy for enhanced analytics accuracy\n- optimized cell thumbnail fetching to prevent dublicate network calls in rare scenarios\n\n### Bug Fixes\n\n- resolved missing dismiss reason on tvOS clip close analytics event\n- resolved missing `currentCategory` in analytics events\n- hidden more button for Clip ads\n\n## **10.0.1** 07/05/24\n\n### Bug fixes\n\n- fixing color of Follow button to respect the Theme\n- fixing a crash that appears in some edge cases\n\n## **10.0.0** 18/04/24\n\n### New Features\n\n- introducing [Followable Categories](Users.md#followed-categories)\n- Clips now support localized closed captions\n\n### Breaking Changes\n\n- all methods inside the [Storyteller](AdditionalMethods.md) class are now static\n- removed deprecated individual properties on our list views, in favour of the new [configuration objects](StorytellerListViews.md#further-configuration)\n- the Storyteller and list delegates are now weak. It is up to the integrating apps to reference them strongly\n\n### Improvements\n\n- overall improvements to the player performance and user experience\n- using system images where possible throughout the SDK, thus reducing its size\n\n### Bug fixes\n\n- analytics fixes\n- theming fixes\n\n## **9.13.1** 02/04/24\n\n### Improvements\n\n- fixed the order of some analytics events\n\n## **9.13.0** 29/03/24\n\n### Bug fixes\n\n- fixing clip playback issues while presenting search\n\n### New Features\n\n- adding a new [eventTrackingOptions](AdditionalMethods.md#eventtrackingoptions) property to Storyteller, allowing more fine-grained control of user privacy options.\n- introducing [StorytellerHome](StorytellerHome.md), an organized collection of our list views.\n\n## **9.12.1** 26/03/24\n\n### Improvements\n\n- Updated Privacy Manifest file for Required Reasons API requirements\n- Added `set(collectionId: String, initialClipId: String?)` method in `StorytellerClipsViewController`. This method allows loading a specific clip within a clip collection directly.\n- Deprecated `collectionId` property in `StorytellerClipsViewController` and it will be removed in the future. Use `set(collectionId: String, initialClipId: String?)` instead.\n\n## **9.12.0** 20/03/24\n\n### Bug fixes\n\n- fixing various gesture related issues for stories on iOS and tvOS\n- layout round cells properly when the title is hidden\n- analytics fixes\n- describing data usage in privacy manifests required by Apple for SDK's\n\n## **9.11.0** 12/03/24\n\n### Improvements\n\n- addressed missing analytics fields and resolved issues with certain events\n\n## **9.10.0** 28/02/24\n\n### Improvements\n\n- analytics improvements: added missing fields, fixed some events\n\n### Bug fixes\n\n- various bug fixes for embedded clips (clips used via `StorytellerClipsViewController`)\n- fixed rare pausing issues on Polls\n\n## **9.9.1** 13/02/24\n\n### Bug fixes\n\n- fixed the data shipped with `.shareSucces` analytics event\n\n## **9.9.0** 30/01/24\n\n### New Features\n\n- added support for Viewed Clips\n\n### Breaking Changes\n\n- changed Theme property `storyTiles` into `tiles`. Please see [Themes](Themes.md) for more details.\n\n### Bug fixes\n\n- UI fixes related to the Search feature\n- fixed issues with pausing the Story player\n\n## **9.8.1** 09/01/24\n\n### Bug fixes\n\n- fixed some memory leaks related to Stories\n- bugfix for clipping topInset margin on scrollable grids\n\n## **9.8.0** - 13/12/23\n\n### New Features\n\n- added Pull To Refresh mechanism for `StorytellerClipsViewController`\n- added `isScrollable` parameter for StorytellerGridViews in SwiftUI\n- added `StorytellerClipsViewControllerDelegate` to `StorytellerClipsViewController` to handle data load and finished loading events\n- added reloading to first clip in collection on `reloadData` call for `StorytellerClipsViewController`\n\n### Improvements\n\n- Improved accessibility for our lists and players\n\n### Bug fixes\n\n- fixed updating read status across multiple rows on player dismissal\n\n## **9.7.6** - 22/11/23\n\n### Bug fixes\n\n- fixed calling `reloadData` for `StorytellerClipsView`.\n\n## **9.7.5** - 21/11/23\n\n### Bug fixes\n\n- fixed playing audio after failed `StorytellerClipsViewController` playback.\n\n## **9.7.4** - 09/11/23\n\n### Bug fixes\n\n- fixed respecting `theme.player.showShareButton` for Clips.\n\n## **9.7.3** - 27/10/23\n\n### Bug fixes\n\n- fixed some memory leaks related to Clips.\n\n## **9.7.2** - 13/10/23\n\n### Bug fixes\n\n- bug fixes for answer auto-selection in quizzes\n\n## **9.7.1** - 10/10/23\n\n### Bug fixes\n\n- Various bug fixes for embedded clips (clips used via `StorytellerClipsViewController`)\n\n## **9.7.0** - 02/10/23\n\n### New Features\n\n- added `openCategory` method, please see [Additional Methods](AdditionalMethods.md) for more details\n- added `openStory(externalId:)` and `openClipByExternalId` methods, please see [Additional Methods](AdditionalMethods.md) for more details\n- added `storyDisplayTitle` parameter to analytic events, please see [Analytics](Analytics.md) for more details\n- added fixed order rows mode for Stories which can be set up via the CMS\n- added pinned stories support for Stories which can be set up via the CMS\n\n## **9.6.0** - 19/09/23\n\n### New Features\n\n- added preloading of 3 next clips\n\n### Improvements\n\n- updated top and bottom shade gradient on clips\n- more/less button displayed below categories list\n- added sorting stories by ids fallback\n- fixed story progress bar blink\n\n## **9.5.0** - 31/08/23\n\n### New Features\n\n- added support for Page Ads which appear between Pages\n\n### Breaking Changes\n\n- changed signature of ad delegate from `getAdsForList` to `getAd`, please see [Ads](Ads.md) for more details\n- changed classes inside `StorytellerAdRequestInfo`, `StoryInfo` and `ClipInfo` are now single class `ItemInfo`, please see [Ads](Ads.md) for more details\n\n### Improvements\n\n- added `adPlacement` to analytics, please see [Analytics](Analytics.md) for more details\n\n## **9.4.0** - 16/08/23\n\nNew features:\n\n- added support for Clips Category Navigation to the Clips Player\n\n## **9.3.0** - 20/07/23\n\nNew features:\n\n- Replacing public ad entities prefixes from `Client` to `Storyteller`.\n- Added `configuration` property to setup ListViews. Read more [here](StorytellerListViews.md#further-configuration).\n- Use the default webView's user-agent for tracking pixel requests.\n- Added SwiftUI support. Read more [here](StorytellerListViews.md#swiftui).\n\nBug fixes:\n\n- Fixed live badge color on clip player.\n- Fixed other apps audio not resuming when mute switch is turned off.\n- Fixed reloading thumbnails on non scrollable grids.\n\n## **9.2.1** - 05/07/23\n\nNew features:\n\n- setting custom User-Agent for Tracking Pixels\n\n## **9.2.0** - 08/06/23\n\nNew features:\n\n- We have added the `StorytellerClipsViewController` so you can [embed the Clips playback experience](EmbeddedClips.md) in your custom view hierarchy.\n\nBug fixes:\n\n- Fixed some Grids layout issues.\n- Theme fixes for the list tiles.\n- Tracking pixel fixes.\n\nImprovements:\n\n- Resuming other apps' music when closing our Stories or Clips player.\n- Updating the [Category object](Ads.md#storytelleradrequestinfo) for Ads.\n- Introducing the new `StorytellerActionType` for [Ads](Ads.md#storyteller-gam-sdk).\n- Clips playback, analytics and overall improvements.\n\n## **9.1.7** - 31/05/23\n\nBug fixes:\n\n- Fixed a scroll jump when our non-scrolling grids are incorporated inside a Collection View\n- Fixed a layout issue when round cells are used in grids\n\n## **9.1.6** - 25/05/23\n\nBug fixes:\n\n- Fixed reusing same ad injected on `getAdsForList` callback\n\n## **9.1.5** - 22/05/23\n\nBug fixes:\n\n- Fixed not calling `getAdsForList` for first clip\n- Fixed applying `theme.player.liveChipImage`\n\nImprovements:\n\n- User `customAttributes` accept only string type values\n\n## **9.1.4** - 17/05/23\n\nBug fixes:\n\n- Fixed UI issue on the Clip player's action button\n\nImprovements:\n\n- Added ad badge which indicates ad on Clips\n\n## **9.1.3** - 11/05/23\n\nBug fixes:\n\n- Fixed bug where clip ads can get stuck when swiping fast.\n\nImprovements:\n\n- Added `adType` to `StorytellerUserActivityData` returned on StorytellerDelegate's `onUserActivityOccured`.\n- Changed interface of `StorytellerAdRequestInfo.clips`.\n\n## **9.1.2** - 08/05/23\n\nBug fixes:\n\n- Fixed an occasional crash when opening a story from a deep link.\n\n## **9.1.1** - 03/05/23\n\nImprovements:\n\n- Hiding the Quiz Summary share button when sharing is disabled from the `Theme`.\n\n## **9.1.0** - 02/05/23\n\nNew features:\n\n- We support live streaming Clips now.\n- Exposing the grid's dynamic size via the `recalculatedSize` property.\n\nBug Fixes:\n\n- Fixed some memory leaks related to Clips.\n\n## **9.0.5** - 26/04/23\n\nBug Fixes:\n\n- Fixed a bug when stories sometimes weren't showing up in the lists.\n\n## **9.0.4** - 19/04/23\n\nBug Fixes:\n\n- Fixed a rare bug that could crash the App during a network call\n\n## **9.0.3** - 18/04/23\n\nBug Fixes:\n\n- Fix rendering of grids when wrapped in SwiftUI views.\n\nImprovements:\n\n- Stories and Clips playback improvements.\n- Adding support for creating the List Views in xibs/storyboards.\n- Preserve the categories' order of Story rows & grids.\n\n## **9.0.2** - 12/04/23\n\nBug Fixes:\n\n- Fixed a crash when the SDK was built in Release mode.\n- Corrected the way top padding works for grids.\n\nImprovements:\n\n- Clips memory management improvements.\n\n## **9.0.1** - 07/04/23\n\nBug Fixes:\n\n- Fixed an issue with the action button on a Story's page.\n- Fixed a problem with the Clip ads.\n- Fixed issue where tapping back in Quiz selected an answer.\n- Fixed issue with score positioning in Quiz.\n- Fixed an issue where some analytic events were not firing for stories.\n\n## **9.0.0** - 06/04/23\n\nNew features:\n\n- We introduced a better class hierarchy for the `StorytellerListView` Classes.\n\n```text\n StorytellerListView\n \u251c\u2500\u2500 StorytellerRowView\n \u2502 \u251c\u2500\u2500 StorytellerStoriesRowView\n \u2502 \u2514\u2500\u2500 StorytellerClipsRowView\n \u2514\u2500\u2500 StorytellerGridView\n \u251c\u2500\u2500 StorytellerStoriesGridView\n \u2514\u2500\u2500 StorytellerClipsGridView\n```\n\n- The Grid views now have scrollable and non-scrollable variants.\n- Clips can now contain Ads.\n- Added top and bottom insets for Grids, can be set on `StorytellerTheme`.\n- Introducing custom user attributes via `Storyteller.user`.\n\nBug Fixes:\n\n- Fixed an issue when Grid cells weren't updating the read status of stories properly after being watched.\n\nImprovements:\n\n- Improved the inner workings of Grids regarding layout.\n- Removed deprecated methods.\n- Stories Lists no longer support `collectionId` and Clips Lists no longer support `categories`.\n- Reacting properly to setting `overrideUserInterfaceStyle` on UIView.\n- Improving gesture handling of the Stories player.\n\n## **8.4.4** - 8/09/23\n\nImprovements:\n\n- adjust to properly work on iOS17\n\n## **8.4.3** - 27/03/23\n\nImprovements:\n\n- Introduced different thumbnail sizes for better story and clip previews\n\n## **8.4.2** - 16/03/23\n\nBug Fixes:\n\n- Fixed Ads sometimes getting stuck when swiping between stories\n\nImprovements:\n\n- Optimized Clips performance for large collections\n\n## **8.4.1** - 15/02/23\n\nBug Fixes:\n\n- All clip events coming out from `onUserActivityOccurred` delegate callback contain proper data in `StorytellerUserActivityData.categoryDetails`\n- Fixed `theme.lists.backgroundColor` not setup correctly for Dark Mode\n\n## **8.4.0** - 13/01/23\n\nBug Fixes:\n\n- Fixed `storyPageCount`, `storyIndex` and `storyPlaybackMode` not being returned on certain Story events\n- Added missing Clip event data for Opened Clip, Finished Clip and Completed Loop events\n- Fixed story title alignment in some device rotation scenarios\n\n## **8.3.1** - 20/12/22\n\nBug Fixes:\n\n- added Clip Collection and Clip Category event data for all Clip analytics events\n\nImprovements:\n\n- added Current Category to the event data for Story and Ad analytics events\n\n## **8.3.0** - 09/12/22\n\nBug Fixes:\n\n- fixed default value for `answeredMessageTextColor`\n\nImprovements:\n\n- added additional properties to ad events to help identify individual ads\n- modified the `getAdsForList` callback to provide more ad information\n- exposed information about category types on analytic events\n- improvements to the way a Page's read status is implemented\n- adjusted the timestamp property so timescales are updated for each new Page\n- improvements to the loading time of videos in Stories\n\n## **8.2.4** - 30/11/22\n\nImprovements:\n\n- removed unused `onComplete` parameter from `Storyteller.dismissPlayer`\n- implemented `lists.backgroundColor` theme property to change the background color of chips\n\n## **8.2.3** - 25/11/22\n\nImprovements:\n\n- Enforced setting empty UserID to clear local storage\n\n## **8.2.2** - 10/11/22\n\nImprovements:\n\n- Made Clips scrolling experience smoother\n\nBug Fixes:\n\n- Fixed bug with reloadData requests being sent before initialization has finished\n- Fixed bug with StorytellerHome sometimes having incorrect grid sizes\n- Fixed bug with share button on iPads\n- Fixed Action buttons not working in certain cases\n\n## **8.2.1** - 01/11/22\n\nBug Fixes:\n\n- Fixed bug that prevents Action buttons being used after opening the app from a shared link\n- Fixed `getAdViewHandler` returning nil on StoryViewModel\n- Fixed rare crash when opening player\n\nImprovements:\n\n- Analytics parameters are now sent in the same order and empty values have been removed\n- Shortened Story Poll's remaining time to 2 seconds after an answer has been selected\n\n## **8.2.0** - 11/10/22\n\nNew Features:\n\n- Added support for Clips and Collections\n\nBug Fixes:\n\n- Fixed issue that caused `DismissedAd` activity to not run in certain cases\n- Fixed bug that caused `dismissedStory` to miss `dismissedReason` parameters in certain cases\n- Fixed bug that could cause Storyteller to freeze when saving asset to device\n- Fixed bug where tapping to go back on the first Page of the first Story did not start the Page from the start\n- Fixed bug that could cause Story player window to turn white after share activity\n- Fixed setting Categories for a Story row in the demo app\n- Fixed loading icon remaining on screen in certain cases\n- Fixed Story player window becoming white after hiding share activity\n\nImprovements:\n\n- Made the selected answer on Polls semitransparent\n- Implemented better logging solution in Xcode console\n- Reduced content length parameter usage\n- Implemented `AdActionButtonTapped` event\n- Refresh button improvements\n\nDeprecations and Changes:\n\n- Renaming `StorytellerUserActivity.NewEventType` case from .`swipedUpOnPage` to `.pageActionButtonTapped`\n- Renaming `StorytellerUserActivity.EventType.SwipeUp` to `.ActionButtonTapped`\n\n## **8.1.14** - 17/10/22\n\nNew Features:\n\n- Added the ability to open a Clip or Collection directly using the `openCollection` method\n\n## **8.1.13** - 21/09/22\n\nBug Fixes:\n\n- Fixed TriviaQuizScore being set as a String instead of an Int\n- Fixed missing text in sharing screen\n\nDeprecations and Changes:\n\n- Removed `openFeed` from `Storyteller`\n\n## **8.1.12**- 01/09/22\n\nBug Fixes:\n\n- Keeps scroll position of a row when you refresh\n- Fixed Live Story UI and placement bugs\n\n## **8.1.11** - 25/08/22\n\nBug Fixes:\n\n- Removed crash possibility when running public sample code\n- Removed the white line on Live Stories row\n- Fixed progress bar disappearing on Stories and ending playback on rare occasions\n- Fixed bug that could make images in emails not visible when sharing Stories\n- Fixed rare bug that could cause Story playback to stall\n\n## **8.1.10** - 24/08/22\n\nBug Fixes:\n\n- Fixed bug that could cause a blinking black screen when swiping quickly through Stories\n- Fixed bug with the functionality of the Action buttons\n\n## **8.1.9** - 23/08/22\n\nBug Fixes:\n\n- Fixed Story sharing bugs\n\nNew Features:\n\n- Added support for iPad multitasking mode\n\nImprovements:\n\n- UI improvements for light and dark mode\n- Made the order of query parameters on requests deterministic\n\n## **8.1.8** - 12/08/22\n\nBug Fixes:\n\n- fixed issue where the app could get stuck between Stories, showing half of each side of two Stories and a black gap between them\n- fixed issue of watched Stories not moving to the end of the list\n- fixed issue of grids jumping to the bottom of feeds\n- fixed issue with New Chips flickering when going in and out of More Stories grid\n\nUI Changes:\n\n- fixed issue with light mode placeholders being used in dark mode for round Story Tiles\n- Story Row container refinements for circular rows, rectangular rows, and Story grids\n- fixed tiles in grids being the wrong aspect ratio\n- fixed issue of Top Stories row appearing as placeholders\n\n## **8.1.7** - 10/08/22\n\nBug Fixes:\n\n- fixed issue with grids only showing the loading state for 2 tiles\n\nNew Features:\n\n- added the `contentLength` parameter to analytic events - see [Analytics](Analytics.md) for more information\n\n## **8.1.6** - 10/08/22\n\nBug Fixes:\n\n- fixed issue where swiping back to an Ad could make the Ad turn black\n- fixed issue with Ad playing from the point the user stopped watching it at last time the user swipes to it\n\nNew Features:\n\n- enable/disableTracking code\n\nDeprecations and Changes:\n\n- now request ads from the integrating app every few Stories instead of all at once\n- replace `dismissClipView` and `dismissStoryView` with `dismissPlayer` in Storyteller object\n\n## **8.1.5** - 05/08/22\n\nBug Fixes:\n\n- fixed issue with placeholders not appearing for Story Rows\n\n## **8.1.4** - 03/08/22\n\nDeprecations and Changes:\n\n- remove preloading and `specificIdentifier` when reloading data\n\n## **8.1.3** - 02/08/22\n\nBug Fixes:\n\n- fixed issue with playback flailing due to lack of available encoders\n\n## **8.1.2** - 02/08/22\n\nUI Changes:\n\n- added theme properties for circular tile border width\n- adjust `theme.storyTiles.liveChip.readImage` and `theme.storyTiles.liveChip.unreadImage` to:\n\n - `theme.storyTiles.circularTile.liveChip.readImage`\n - `theme.storyTiles.circularTile.liveChip.unreadImage`\n - `theme.storyTiles.rectangularTile.liveChip.readImage`\n - `theme.storyTiles.rectangularTile.liveChip.unreadImage`\n\n## **8.1.1** - 29/07/22\n\nBug Fixes:\n\n- fixes issues related to firing Event Tracking events correctly to provide proper analytics\n\n - `OpenedStory` was triggered by `automaticPlayback` as the `openedReason` and once with `storyListTap` - it is now only triggered by `storyListTap`\n - `SkippedPage` and `CompletedPage` were triggered when skipping a page - it is now only triggered by `SkippedPage`\n - `CompletedStory` was triggered when a user finished watching an Ad - no Story events are triggered in this instance\n - `PausedAdPage` was triggered when skipping an Ad - this is now only triggered when the user pauses the Ad\n - `ViewedAdPageComplete` was triggered when skipping an Ad - this is now only triggered when the viewer has viewed the whole Ad\n - fixed issue to ensure `triviaQuizQuestionAnswered` fires when the users answers a Trivia Quiz or if they time out on a question\n - fixed issue with `triviaQuizScore` not returning upon `triviaQuizCompleted`\n - fixed issue with `skippedAd` not firing\n\n- when closing a Story, issue fixed where the user could return to the wrong position in the list view in the row/grid\n- when sharing a Story Page, fixed an issue where the timer didn't stop to allow the user time to share and return to viewing\n- fixed issue with image answers not appearing on Polls\n- fixed issue with rows with multiple Categories assigned showing Stories swiping into each other and disappearing from the list view\n- fixed issue where Story video preview freezes when swiping back and forth between Stories\n- fixed issue where repeatedly refreshing briefly duplicates rows\n- fixed issue where Story Tiles were incorrectly scaled when displayed across two rows\n\nUI Changes:\n\n- displaying instructions screen correctly on iPad\n- fixed an issue where switching between light and dark mode didn't update the theme on circular Story Tiles\n- max length of Story Grid set to 4 Stories in the loading state\n- fixed issue where webview header wasn't changing colour when switching from light to dark mode\n\n## **8.1.0** - 13/07/22\n\nBug Fixes:\n\n- add empty placeholders when grid view is initialised\n\n## **8.0.2** - 11/07/22\n\nUI Changes:\n\n- when displaying the score of a Trivia Quiz to users, the font size has been made bigger, bolder, and the colour has been changed to white\n- corrected spacing between titles and rows/grids across all devices (set to 12px below and above each title)\n- adjusted left margin to be consistent for titles/rows/grids across all devices\n\nDeprecations and Changes:\n\n- removed `topInset` and `bottomInset` for grids\n- ignore `startInset` and end`Inset for rows inside Home\n\n## **8.0.1** - 24/06/22\n\nUI Changes:\n\n- font sizes, cases, and weights corrected\n- adding action buttons instead of swipe ups for Stories\n- support `storyTiles.title.show` in Story Grids/Rows\n\nNew Features:\n\n- `icons.refresh` property added to the Story Player - see [Themes](Themes.md) for more information\n- adding `displayLimit` parameter to StorytellerListView - please see [Configuring a StorytellerListView](StorytellerListViews.md)\n\nDeprecations and Changes:\n\n- removed `showPercentBarBackground` from theme\n", "copy_markdown_include_header": false, "base_path": "", "ai_dir": "ai", "missing_payload_behavior": "empty"}