Main Thread Checker: UI API called on a background thread: -[UIView setNeedsLayout]
UIKit was used from a background thread; UI must only be touched on the main thread.
Seen on:
iOS
Meaning
Network/database callbacks run off the main queue. Updating labels, images or layout there causes this checker warning and random UI glitches or crashes.
Common causes
- UI updates inside URLSession completion handlers
- Updates from background Tasks/OperationQueues
- Third-party SDK callbacks on background queues
⚡ Quick fix
- Wrap UI updates in DispatchQueue.main.async or MainActor
- Mark UI-facing classes @MainActor
Detailed fix by platform
Swift
- swift
URLSession.shared.dataTask(with: url) { data, _, _ in DispatchQueue.main.async { self.imageView.image = data.flatMap(UIImage.init) } }.resume()
How to diagnose
- Stack — Which call path?
- Queue — Callback queue
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
Most viewed in iOS
Other ways to find it
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 7 Oct 2026