Accessibility in Flutter 3.44: New iOS Motion Settings & UI

July 10, 2026 BlueSparrow Labs
AccessibilityFlutteriOSA11y

Ensuring our apps are usable by everyone is a core commitment. The Flutter 3.44 release introduced several enhancements to aid accessibility, particularly on iOS devices. Here's a rundown of what's changed and how to use it to make your app more inclusive.

Responding to iOS Motion Preferences

Users can set system-wide motion preferences on iOS (Settings → Accessibility → Motion). For example, "Reduce Motion" stops autoplaying UI animations, and "Prefer Non-Blasting Cursor" makes cursors static. With Flutter 3.44, these preferences are now exposed in the AccessibilityFeatures object.

What does this mean for developers? Your app can now query MediaQuery.of(context).accessibilityFeatures and see fields like:

  • disableAnimations (for "Reduce Motion"),
  • disableAutoPlayAnimations (for GIFs/videos),
  • boldText, invertColors, etc.

We updated our animation code to check if (MediaQuery.of(context).accessibilityFeatures.disableAnimations), and if true, we disable or simplify non-essential animations (like a flying background image). Similarly, if disableAutoPlayAnimations is true, we prevent auto-playing video previews in lists (show a static thumbnail instead). These changes make our UI respect the user's system choices without extra platform-specific code.

Better Semantics for Core Widgets

Beyond motion, Flutter refined screen-reader semantics for common widgets:

  • Progress Indicators: The new release allows using percentage strings as the semantic label. Now, a CircularProgressIndicator(value: 0.5) can expose "50%" to VoiceOver instead of just a decimal. We changed our loading bars to use this (semanticsLabel: "${(value*100).round()}%") so that visually impaired users get clear feedback on progress.
  • Slider Improvements: Previously, a screen reader on a Slider might announce an ambiguous value. Now, the internal semantics node better reflects its size and position. In practice, when we tested VoiceOver, dragging a slider announced its exact new value (e.g. "Volume, 70%") more reliably.
  • Scrollable fix: A minor but important fix: invisible semantics nodes in scrollables are no longer read out of order. This prevents screen readers from announcing off-screen items prematurely. We tested a long vertical menu and found the navigation flow smooth on Flutter 3.44, whereas earlier some items were "spoken" out of context.

Practical Steps

As a developer, you get these improvements by default in Flutter 3.44+ (no code required to receive them). However, to use the new iOS motion settings, you must actively check the flags. Here's a quick snippet:

final acc = MediaQuery.of(context).accessibilityFeatures;
if (acc.disableAnimations) {
  // e.g. switch to a NoMotion widget variant
}
if (acc.disableAutoPlayAnimations) {
  // stop GIFs/videos auto-play
}

We also audited our app for accessibility: added semanticsLabel to images/buttons where needed, and tested with TalkBack/VoiceOver. Even things like the carousel we introduced now properly announce "Item 1 of N" because the updated CarouselView (from 3.44) includes proper semantics for infinite scrolling.

The Impact

Why do this? According to Apple's guidelines, assistive technologies should integrate seamlessly. Flutter continues to take these seriously by partnering with iOS APIs. The new settings support means users who get motion sickness or epilepsy risks from certain animations can have them disabled. It's a big deal for user comfort.

It also future-proofs our app: as iOS adds more accessibility options, Flutter's integration means we can adapt quickly. For example, any new setting (like a hypothetical "Screen Reader Mode") might be exposed similarly in AccessibilityFeatures.

In summary, Flutter 3.44's accessibility enhancements ensure that any Flutter app automatically gains deeper iOS integration. We highly recommend testing with iOS's Accessibility Inspector and adjusting our code to respect these flags. These tweaks typically involve just a few condition checks but can make a dramatic difference for users who rely on them.

Built by BlueSparrow Labs

We build utility applications that respect your data and help you live mindfully. Explore our matching live apps:

India Money Calc icon

India Money Calc

Made for personal finance, petirement planning & FIRE enthusiasts.

Google Play
RideReady icon

RideReady

Rule driven weather based recommendations to go out biking.

Google Play
LensNote icon

LensNote

Private journal & mood tracker. Offline-first, secure, insightful.

Google Play
TutorPal icon

TutorPal

Tutor scheduling, lesson packs, parent links, family snapshots, invoices & exports.

Google Play