iOS v26.8.0
Compatibility Overview
| Component | Version |
|---|---|
| Minimum iOS Version | 16.0 |
| Minimum watchOS Version | 9.0 |
| Built Using Xcode | 26.0.1 |
| Swift Version | 5.0 |
| Swift Tools Version | 5.10 |
| Package Manager | Swift Package |
| Q2MobileApp | 26.8.0 |
| Q2DevApp | 26.8.0 |
Q2MobileApp Dependencies
| Library | Version |
|---|---|
| Firebase | 11.5.0 |
| Bugsnag | 6.30.1 |
| Pendo | 3.13.0 |
Added
Q2ModuleInterfaces
-
Added
ProfileSwitchInfoandQ2LifecycleModule.userDidSwitchProfile(_:)so lifecycle modules can respond when the active profile changes while the host app remains authenticated.public struct ProfileSwitchInfo {
public let userId: Int
public let username: String
}
public protocol Q2LifecycleModule: LifecycleModule {
func userDidSwitchProfile(_ info: ProfileSwitchInfo)
}Q2ModuleBaseprovides a no-op default implementation, so existing modules that do not need profile-switch events require no source changes.
Q2UIComponents
-
Added
Q2KeyboardDismissToolbar, a reusable SwiftUI keyboard accessory toolbar with a trailing dismiss action. -
Added
Q2ToolbarItem, a toolbar wrapper forQ2ToolbarButtonthat hides the iOS 26 Liquid Glass shared toolbar background when appropriate. -
Added
.q2Focused(_:)forQ2PasswordTextField, giving UIKit-backed password fields a native-style focus binding API.
Updated
Q2ModuleInterfaces
-
AuthenticationModuleContextnow usesshouldAllowAutoLogin, a@MainActorclosure evaluated when the authentication module decides whether to start auto-login.public struct AuthenticationModuleContext {
public var presentWithLocalizedErrorMessage: String?
public var shouldAllowAutoLogin: @MainActor () -> Bool
}This replaces the previous captured
allowAutoLoginBoolean so late-arriving app events, such as push-notification taps, can still affect auto-login behavior.
Q2NativeLogin
-
Added profile-switch handling for native login. When the host app switches profiles, NativeLogin updates its active user, clears the previous user's volatile password, and seeds a user entry when the switched-to profile has not previously logged in natively.
-
Added a step-up authentication flow used when NativeLogin needs to re-confirm the active user's password after profile switch or other protected-account transitions.
-
Improved login keyboard behavior with a dismiss-only Done affordance and more stable password focus handling.
Q2UIComponents
-
Reworked
Q2PasswordTextFieldto keep a single UIKit text field alive when toggling Show/Hide. This preserves the password manager/QuickType bar and avoids keyboard jumps while editing. -
Shared text field visual styling through
Q2TextFieldChrome, aligning regular and password text field chrome, focus, error, and accessory behavior. -
Refined toolbar button behavior for iOS 26 Liquid Glass while retaining the existing toolbar appearance on earlier iOS versions.
Migration Notes
AuthenticationModuleContext.allowAutoLogin
If your authentication module reads context.allowAutoLogin, update it to call
context.shouldAllowAutoLogin() instead:
// Before (26.7.0 and earlier)
if context.allowAutoLogin {
// Start auto-login
}
// After (26.8.0+)
if context.shouldAllowAutoLogin() {
// Start auto-login
}
Q2LifecycleModule.userDidSwitchProfile(_:)
Modules that implement Q2LifecycleModule directly must add
userDidSwitchProfile(_:). Modules that subclass Q2ModuleBase inherit the default
no-op implementation and require no source changes.
func userDidSwitchProfile(_ info: ProfileSwitchInfo) {
// Refresh state for info.username if needed.
}
Q2PasswordTextField Focus
For programmatic focus, prefer the new .q2Focused($isFocused) modifier or the
isFocused: initializer parameter on Q2PasswordTextField. This replaces custom
SwiftUI focus bridging around the password field.
Supported Internal Modules
The following Q2-provided modules are available for this release. These modules are distributed as pre-built xcframeworks and are consumed via SPM from the Q2 distribution repository.
| Module | Package | Version | Min Q2MobileApp | Integration Guide |
|---|---|---|---|---|
| InboundSSO | q2-inboundsso-ios | 3.9.0 | 26.8.0 | InboundSSO Configuration |
| NativeLogin | Q2NativeLogin | 26.8.0 | 26.8.0 | Native Login Configuration |