Main Thread Checker 🍎 iOS

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

  1. Wrap UI updates in DispatchQueue.main.async or MainActor
  2. Mark UI-facing classes @MainActor

Detailed fix by platform

Swift

  1. swift
    URLSession.shared.dataTask(with: url) { data, _, _ in
        DispatchQueue.main.async { self.imageView.image = data.flatMap(UIImage.init) }
    }.resume()

How to diagnose

  1. Stack — Which call path?
  2. 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:

🧠 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.