Available for the following Plan types:
Fullstory Enterprise*
Fullstory Advanced*
Fullstory Business*
Fullstory Free
*with the following add-on:
Fullstory for Mobile Apps
Available to the following User roles:
Admin
Architect
Standard
Apple’s upcoming iOS 26 introduces a new visual design language called Liquid Glass. While these updates enhance the user experience, they also change how iOS renders views. These rendering changes impact how Fullstory captures sessions, applies selectors, and handles privacy.
This guide outlines how key changes in iOS 26 affect Fullstory in your app and what steps you should take to ensure accurate session capture and analytics.
Current status of Fullstory functionality for iOS 26
Fullstory SDK version 1.64.0 added support for iOS 26 and Xcode 26.
Developers who build with either Xcode 16 or Xcode 26 should upgrade to the latest Fullstory for Mobile Apps SDK.
Developers who build with Xcode 26 should also review this document for changes to image capture and selector generation. Review this guide for specific actions you need to take to implement the Fullstory SDK with Xcode 26.
Based on extensive testing, apps with the Fullstory for Mobile Apps SDK 1.64.2 (and above) that are built with Xcode 16 are not affected and will continue to function as expected on iOS 26. For teams that are migrating to Xcode 26 or who are making plans to do so, review this guide to know what you need to do to be ready for Fullstory with iOS 26.
The table below provides a brief overview of Fullstory SDK 1.64.2 functionality and how it is affected by Xcode 26 and iOS 26:
| Xcode 16 | Xcode 26 | |||||||
| UIKit | SwiftUI | UIKit | SwiftUI | |||||
| iOS 18 | iOS 26 | iOS 18 | iOS 26 | iOS 18 | iOS 26 | iOS 18 | iOS 26 | |
| Image capture | ✔ | ✔ | ✔ | ✔ | ⚠︎1 | |||
| Selector stability | ⚠︎2 | ✔ | ⚠︎2 | |||||
ScrollView requires
a
flag to be enabled.
See below.2 Apple's Liquid Glass produces a new view hierarchy, affecting selector stability. See below.
Current status of session data capture on iOS 26
In order to ensure session stability and data privacy, Fullstory has implemented new build-time and server side controls to gate data capture for iOS 26 sessions. Fullstory servers will automatically block data capture for iOS 26 SwiftUI apps that are using 1.61.0 of the SDK or earlier.
Fullstory recommends upgrading to version 1.64.2 of the Fullstory SDK. Review this guide for any additional changes you may need to make.
The table below shows if sessions will be captured or blocked under various SDK versions, build conditions, and iOS versions:
| SDK Version |
MaxOSVersion is unset (default)
|
MaxOSVersion = 18
|
MaxOSVersion = 26
|
|||
| iOS <=18 | iOS 26 | iOS <=18 | iOS 26 | iOS <=18 | iOS 26 | |
| 1.61.0 and below (UIKit) | ✔ | ✔1 |
MaxOSVersion Unavailable
|
|||
| 1.61.0 and below (SwiftUI) | ✔ | ✘2 | ||||
| 1.61.1 - 1.63.3 | ✔ | ✘3 | ✔ | ✘4 | ✔ | ⚠︎5 |
| 1.64.2 and above | ✔ | ✔6 | ✔ | ✘4 | ✔ | ✔ |
UIDropShadowView on iOS 26. Developers
should
review privacy rules.
See below.2 Due to lack of v2 and v3 selector support in earlier versions of the SDK, Fullstory will automatically block iOS 26 sessions for SwiftUI apps using SDK 1.61.0 and below. See below.
3 SDK 1.61.1 adds support for
MaxOSVersion. When
unset, disables data capture for iOS 26.
See below.4 Developers using SDK 1.61.1 and above can explicitly set
MaxOSVersion to 18 to block data capture on iOS 26
while they make adjustments to their selectors.
See below.5 While iOS 26 sessions will still be captured, developers using SDK 1.61.1 - 1.63.3 should not set
MaxOSVersion to 26
because of lack of v2 and v3 selector support.
See below.6 SDK 1.64.2 still observes
MaxOSVersion, but
defaults to capturing iOS 26 sessions if unset.
Guidance for Xcode 16
For apps built with Xcode 16 and the latest version of the Fullstory SDK, all Fullstory functionality is supported and works as expected for apps developed with UIKit and SwiftUI on both iOS 18 and iOS 26.
Action required for Xcode 16
To support session capture on iOS 26 for apps built with Xcode 16, the only required change is to upgrade to Fullstory SDK version to 1.64.2.
Because Apple will eventually remove support for Xcode 16, developers should check this document periodically for guidance on migrating to Xcode 26.
Guidance for Xcode 26
Because of the extensive UI changes introduced in iOS 26, developers who build with Xcode 26 will need to review this migration guide and make any necessary updates. Consider temporarily disabling session capture on iOS 26 in production to avoid data gaps and privacy issues.
How Fullstory behaves by default with Xcode 26
See the table above for a visual representation of how Fullstory makes data capture decisions. For apps compiled with Xcode 26, the following is true:
- Fullstory will automatically block iOS 26 sessions for SwiftUI apps using SDK 1.61.0 and below.
- Developers who upgrade to SDK 1.64.2 and above can control session capture of iOS 26 at build time using
MaxOSVersion.
How to control capture with MaxOSVersion
Starting in SDK 1.61.1, you can manage session capture via the MaxOSVersion setting in the FullStory dictionary of your Info.plist. This value defines the maximum iOS version where Fullstory is allowed to capture data.
The steps below outline an example development workflow using MaxOSVersion to control data capture:
- In your production build, after upgrading to SDK 1.64.2, set:
MaxOSVersion = 18
This disables capture on iOS 26 devices until your team has reviewed this guide and made all necessary updates. - In development or staging, set:
MaxOSVersion = 26
This enables testing on iOS 26 to validate functionality and apply any configuration changes. - Once everything is validated, you can release a new version with:
MaxOSVersion = 26
This will re-enable Fullstory session capture on iOS 26 in production.
What’s changing in iOS 26 for apps built with Xcode 26
If you're building with Xcode 26, be aware of the following impacts to Fullstory's functionality:
Image support in SwiftUI
Due to rendering changes in iOS 26, Fullstory provides a new implementation for how images are captured in SwiftUI. Images in UIKit are unaffected. Most images in SwiftUI that are not in a ScrollView are also unaffected.
With SDK 1.64.2 and above, Fullstory provides a flag for enabling image capture with SwiftUI. If this flag is not enabled, some images may be missing from data capture for the session and those images will not be visible in session replay.
The following considerations should be taken into account when capturing images in SwiftUI:
-
Use the latest SDK
Upgrade to Fullstory SDK version 1.64.2 or greater. -
Flag Required
Images will only be captured inScrollViewifNeedsWorkaroundXcode26ImageCaptureis set toYESin theFullStorydictionary of yourInfo.plist -
Privacy
Because of differences in how missing images are captured when the flag is enabled, text and other content that is exposed on top of these images may be captured as part of the underlying image. This will occur despite mask and exclusion rules for the exposed content. While captured image text will be visible in session replay, the underlying text will not be present in event analytics.
Example: Inside of a SwiftUI ScrollView, you have a product image of a T-shirt with the text "T-shirt" appearing on top of the product image. In previous versions of the Fullstory SDK on iOS 18, only the product image would have been captured. With the flag enabled for SDK 1.64.2 and above on iOS 26, the product image plus the overlying text “T-shirt” will be captured as part of the rendered image.
Developers will need to review their data capture rules and inspect captured images for any privacy concerns before enabling this flag. -
Performance
There is a noticeable performance degradation when using the flag compared to previous Xcode 18 builds. The highest impact scenarios tend to be when the user is scrolling.
Developers should ensure that async view scanning is enabled, which improves performance. While async view scanning recently became the default configuration option, developers will still want to ensure that it’s enabled.
The Fullstory mobile development team is continuing to work on improvements to image capture for SwiftUI in iOS 26. Check this article periodically for updates.
Selector instability in iOS 26 sessions
Apple’s new Liquid Glass design produces a different view hierarchy on iOS 26 when building with Xcode 26 versus previous versions of Xcode. For example, in some instances, building with Xcode 26 adds an extra UIDropShadowView into many layouts into the iOS view hierarchy for both UIKit and SwiftUI. This can break existing selector-based privacy rules, especially unmask/exclude rules generated from iOS 18 and below. See below for details of the view hierarchy changes that our mobile development team has observed.
What this means:
- Existing selectors may no longer match.
- Some elements may stay masked or excluded unexpectedly, or worse, be unintentionally unmasked due to overly broad rules.
Recommended actions to validate iOS 26 support:
-
Upgrade to Fullstory SDK version 1.64.2
Before continuing with testing, be sure to upgrade to the latest Fullstory for Mobile Apps SDK. -
Generate a new Fullstory session on iOS 26
Use a device running iOS 26 to capture a session. -
Navigate through key user flows and sensitive screens
Focus on areas that include personal information or are critical to your analytics and data capture privacy setup. -
Compare against iOS 18 sessions
Look for differences in mask/exclusion behavior or selector accuracy between iOS 18 and iOS 26 sessions. -
Update privacy rules as needed
If elements are masked, unmasked, or excluded incorrectly on iOS 26, adjust your selectors or privacy rules to address the discrepancies. -
Review and update analytics configurations
Check your analytics configuration for any tracking gaps caused by selector or view hierarchy changes. Make needed updates to ensure reporting stays accurate. Here's what to check:- Dashboards
- Metrics
- Funnels
- Segments
- Defined Elements
- Conversions
- Watched Elements
- Streams
View hierarchy observations in iOS 26
As stated above, developers will notice that building with Xcode
26 produces
a different view hierarchy on iOS 26. In our research, we’ve found
that
the most
common change to the view hierarchy is when an extra
UIDropShadowView is inserted into the layout.
The following is an example of the selectors generated from the view hierarchy differences between iOS 18 and iOS 26 when building on Xcode 26:
| iOS 18 |
UIApplication UIWindow UITransitionView |
|---|---|
| iOS26 (built with Xcode 26) |
UIApplication UIWindow UITransitionView |
While the addition of an extra UIDropShadowView is the most common alteration to the view hierarchy we’ve observed, there are other changes that occur in apps running on iOS 26 that were built with Xcode 26.
The following list, which should not be considered exhaustive, may be helpful as a starting point for developers in investigating how their view hierarchy has changed with Xcode 26:
-
UIDropShadowViewappears twice in selector paths on iOS 26 (previously once). -
New decorative views wrapping controls, including:
-
Parallax wrappers:
_UIParallaxTransitionCardView,_UIParallaxDimmingView -
Alert/popover chrome (e.g.,
_UIPopoverView,_UIPopoverShapeLayerChromeView) -
Root-level trailing
Viewadded under SwiftUI
-
Parallax wrappers:
-
Swapped “visual skin” layers:
-
UISlider,UIStepper, and similar controls swap their child views for new visual components (e.g.,_UISlideriOSVisualElement→_UISliderGlassVisualElement) -
iOS 26 replaces UIKit-based skins with SwiftUI hosting
wrappers
like
_TtG...UICoreHostingView
-
Contact Support
Our Support team is available to help with any iOS 26 migration questions you may have. Please contact the team here and they'll be happy to assist.
Frequently Asked Questions
Why aren’t my iOS 26 sessions being captured?
If your iOS 26 sessions aren’t being captured, the most likely cause is that you’re using an outdated version of the Fullstory for Mobile Apps SDK. Ensure that you’re using SDK 1.64.2 or above.
What happens if I’m using SDK 1.61.1 - 1.63.3 with MaxOSVersion set to 26?
If you’re using SDK 1.61.1 - 1.63.3, you should plan to upgrade to SDK 1.64.2 or above.
SDK version 1.61.1 silently introduced MaxOSVersion to give developers who had reached out to Fullstory support an option for enabling capture on iOS 26.
These earlier versions of the SDK didn’t include support for v2 selectors or v3 autoselectors, nor did they include support for image capture in SwiftUI ScrollView. Customers who wish to capture iOS 26 sessions should plan to upgrade to SDK 1.64.2 or above.
What if I embed SwiftUI components inside my UIKit app?
SwiftUI components embedded within a UIKit app are expected to function as if they were a part of a SwiftUI app. Consequently, they’ll be affected by how images are captured in SwiftUI.
What happens if I disable Liquid Glass in my Xcode 26 build?
Apple provides a way for developers to disable Liquid Glass by setting UIDesignRequiresCompatibility to YES at the top level of the app's Info.plist.
In our testing, disabling Liquid Glass does not restore image capture in SwiftUI ScrollView.
However, disabling Liquid Glass does appear to help reduce view hierarchy noise, but doesn't completely restore selector stability in iOS 26. For example, _UIIntrinsicContentSizeInvalidationForwardingWrapperView is added to the navigation bar for iOS26 even with Liquid Glass disabled.
How can I quickly audit and update my privacy rules?
By going to Settings > Privacy and clicking on Element Privacy Rules, you can review your Configured Rules. Use the Filter by dropdown to look for "iOS" selectors. See filtering and searching element data capture rules to learn more.