Live Activity Shows Only Black Dynamic Island UI (No Content Rendering) — Widget Extension Receives Updates but SwiftUI UI Is Empty

Hi all, very new "developer" trying to build my own app. The app works, just trying to improve it.

I’m implementing a Live Activity in a widget extension (Swift/SwiftUI) for an app built with Flutter as the host app. ActivityKit is functioning correctly—activities start, update, and end normally, and the widget extension receives all state updates.

However, the Live Activity UI renders as a completely black capsule (both compact and expanded Dynamic Island, as well as the Lock Screen presentation). The system shows the Live Activity container, but none of the SwiftUI content displays.

Verified so far:

ActivityAttributes contains at least one stored property (previously empty).

ContentState fully Codable + Hashable.

All Dynamic Island regions return visible test UI (Text/Image).

No .containerBackground() usage.

Added explicit .activityBackgroundTint() + system foreground colors.

All Swift files included in widget extension target.

No runtime errors, no decode failures, no SwiftUI logs.

Widget previews work.

Clean build, app reinstall, device reboot.

Entitlements and Info.plist appear valid.

Problem:

The widget extension returns a completely black UI on-device, despite valid SwiftUI content in ActivityConfiguration. The Live Activity “shell” renders, so the activity is recognized, but the widget’s view hierarchy is visually empty.

Question:

Under what conditions would a widget extension produce a black, empty UI for a Live Activity even when ActivityKit, previews, and the SwiftUI layout are correct? Are there known cases where:

Widget extension Info.plist misconfiguration,

Incorrect background/tint handling,

Rendering issues in Dynamic Island,

Host app integrations (Flutter),

Or extension isolation issues

cause valid SwiftUI to fail to render in a Live Activity?

Any guidance on deeper debugging steps or known system pitfalls would be appreciated.

The Live Activity does launch and when pressed takes user back into the correct app.

Thanks for your post.

Although you have a comprehensive list of questions, such as tint handling without demonstrating the setup process, it appears that you are using Flutter instead of Xcode.

I recommend starting with a tutorial on LiveActivity and configuring it to observe its functionality and the rendering of the Activity UI. This step-by-step approach ensures that you have a thorough understanding of the process and can identify any potential issues. Even thought assumes you are using Xcode.

https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities

Also I would recommend to go to the 3rd party tool support channel and see if they have a sample or a tutorial to go over the issues. You should check with the support resources provided by the 3rd party to get assistance with their software.

Unless another developer in the forums has experience with the third-party and can provide assistance.

Albert Pascual
  Worldwide Developer Relations.

Thanks for the reply! Just to clarify, even though the main app is built with Flutter, the Live Activity and widget extension are fully native Swift/SwiftUI and built in Xcode. The issue seems to be on the ActivityKit/WidgetKit side rather than the Flutter side.

I’ve gone through Apple’s Live Activity tutorial and everything works except the actual UI rendering (Dynamic Island shows a black capsule even though the regions contain simple Text/Image views with no errors).

I’m mainly hoping someone who’s run into a similar ActivityKit rendering issue can point out anything I may be missing in the widget extension setup. Any insights are appreciated!

Live Activity Shows Only Black Dynamic Island UI (No Content Rendering) — Widget Extension Receives Updates but SwiftUI UI Is Empty
 
 
Q