Skip to main content
Version: 5.9.0

Accessibility

This section describes support for iOS accessibility features in the ChatCenterUI SDK, along with recommendations for integrators who have mandatory VoiceOver / Dynamic Type / RTL requirements.

Supported system features

iOS featureSDK supportComment
VoiceOverBasicSystem UIButton / UILabel use their text as the default accessibilityLabel. The SDK does not set accessibilityLabel for custom buttons and icons (IconButtonStyle, elements from ChatImages) — to meet your requirements, set labels directly on UIButton / UIImageView in your own subviews of the parent application.
Dynamic TypePartialFonts set through ChatTypography directly (.systemFont(ofSize:)) do not scale automatically. To support scaling, wrap them in UIFontMetrics: UIFontMetrics.default.scaledFont(for: ...) (see design-system/intro). System elements (the standard navigationBar) respond to the system font size.
Reduce MotionPartialSystem UIKit transitions respect the setting automatically, but the SDK contains several of its own animations (showing/hiding toasts, the search bar, link previews) without checking UIAccessibility.isReduceMotionEnabled. For strict compliance, test the interface with the setting enabled.
Increase ContrastSystemColors from UIColor.systemX adapt. For custom colors in ChatColors / ChatComponents, ensure contrast ≥ 4.5:1 (WCAG AA) yourself.
Bold TextSystemApplied to system fonts automatically. Does not affect custom fonts — for consistent behavior, use only System fonts.
Reduce TransparencyHonoredOn iOS 26+, Liquid Glass becomes unavailable when the setting is enabled. The UIApplication.isLiquidGlassAvailable() extension returns false on iOS < 26 or when Reduce Transparency is enabled — use it in your own code if you apply Liquid Glass in custom components.
RTL (Arabic, Hebrew)BasicThe system UINavigationController and UICollectionView / UITableView cells are mirrored automatically by standard UIKit mechanisms. The SDK itself does not manage semanticContentAttribute. Custom images in ChatImages (arrows, directional icons) are not mirrored — set imageFlippedForRightToLeftLayoutDirection() in your application code, or use symmetric icons.

RTL scenarios

If your application supports Arabic or Hebrew:

// AppDelegate / test launch
UIView.appearance().semanticContentAttribute = .forceRightToLeft
warning

This call is a global side effect: it affects all of UIKit in the application, not just the SDK. Apply it at the application level, fully aware of the consequences for the rest of your screens.

After this, standard navigation elements are mirrored. What is not mirrored automatically:

  • Arrow icons in ChatImages (backButtonImage, nextButtonImage, sendButtonImage, scrollToBottomImage, scrollToTopImage) — the SDK does not know their "direction". If you define custom ChatImage, set on the UIImage:

    let arrow = UIImage(systemName: "arrow.right")?.imageFlippedForRightToLeftLayoutDirection()
  • Custom message cells with .left / .right alignment — the current SDK implementation always shows incoming messages on the left and outgoing on the right, regardless of RTL. This behavior cannot be changed through ChatTheme in the current version.

Color contrast

Minimum 4.5:1 for text against background (WCAG AA). Check the contrast in styles that can be overridden through ChatTheme:

PairWhere definedPurpose
incomeMessages.textMessageStyle.textStyle.colorincomeMessages.bubbleTintColorChatFlowText of incoming messages (from the operator)
outcomeMessages.textMessageStyle.textStyle.coloroutcomeMessages.bubbleTintColorChatFlowText of outgoing messages (your own)
textMessageStyle.linkTextStyle.colorbubbleTintColorTextChatMessageStyle (via income/outcomeMessages.textMessageStyle)Links in message bubbles
inputViewStyle.inputTextStyle.textStyle.color ↔ input field backgroundChatFlowText in the input field (the field background is inherited from colors.background)

Use a Color Contrast Analyser, for example the ColorSync Utility module (macOS) or contrast-ratio.com.

Known limitations

LimitationWorkaround
Custom fonts in ChatTypography do not respond to Dynamic Type without UIFontMetricsWrap each UIFont in UIFontMetrics.default.scaledFont(for:)
Directional icons in ChatImages are not mirrored in RTLUIImage.imageFlippedForRightToLeftLayoutDirection()
Message layout (incoming on the left, outgoing on the right) is fixedNot configurable in the current major version
The SDK does not set accessibilityLabel for custom button styles (IconButtonStyle) and icons from ChatImagesSet accessibilityLabel directly on UIButton / UIImageView in your own subviews of the parent application