Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Arabic Text Appears Reversed and Broken in SwiftUI Lists, TextFields, and Pickers

Hello,

I would like to report a critical issue with Arabic text rendering in SwiftUI apps on iOS and iPadOS.

When using Arabic as the default language (Right-to-Left - RTL), Arabic text appears reversed and disconnected inside several SwiftUI components like:

  • List
  • Section
  • TextField
  • Picker
  • Custom views (like StudentRowView)

Even though the environment is set to .layoutDirection(.rightToLeft), the dynamic Arabic text is not rendered properly. Static headers display correctly, but any dynamic content (student names, notes, field titles) becomes broken and unreadable.

Examples where the issue occurs:

  • AboutView.swift → Arabic text inside List and Section
  • SettingsView.swift → TextField placeholders and Picker options
  • StudentRowView.swift → Student names and grade field titles

Environment:

  • SwiftUI 5 (Xcode 15+)
  • iOS 17+
  • Reproducible 100% on both Simulator and real devices.

Expected Behavior: Arabic text should appear properly connected, right-aligned, and readable without any manual workaround for each Text or TextField.

Workarounds Tried:

  • Manually setting .multilineTextAlignment(.trailing) (inefficient)
  • Wrapping every Text inside an HStack with Spacer (hacky)
  • Building custom UIKit views (defeats purpose of SwiftUI simplicity)

Formal Feedback:
I have submitted a Feedback Assistant report

We hope this issue will be prioritized and fixed to improve SwiftUI's support for Arabic and other RTL languages.

Thank you.

You should probably raise this as a bug in the usual way. It won't really get progressed if it's only posted in these Developer Forums.

You need to raise each issue you find separately at https://feedbackassistant.apple.com/ You can post the FB numbers here if you want, so that others can link to them.

Arabic Text Appears Reversed and Broken in SwiftUI Lists, TextFields, and Pickers
 
 
Q