Live Activity (Dynamic Island) suddenly stopped working without code changes

Hi everyone,

I am encountering an issue where my Live Activity (Dynamic Island) suddenly became invalid and failed to launch. It was working perfectly before, and I haven't modified any code since then.

My Environment:

  • Xcode: 26.1.1
  • Device iOS: 26.1
  • Testing: I also tested on iOS 18, but the Live Activity fails to start there as well.

Here is my code:

  1. Live Activity Manager (Start/Update/End):
func startLiveActivity() {
    // Initial static data
    let attributes = SimpleIslandAttributes(name: "Test Order")
    // Initial dynamic data
    let initialContentState = SimpleIslandState(message: "Preparing...")
    
    // Adapting for iOS 16.2+ new API (Content)
    let activityContent = ActivityContent(state: initialContentState, staleDate: nil)

    do {
        let activity = try Activity.request(
            attributes: attributes,
            content: activityContent,
            pushType: nil // Set to nil as remote push updates are not needed
        )
        print("Live Activity Started ID: \(activity.id)")
    } catch {
        print("Failed to start: \(error.localizedDescription)")
    }
}

// 2. Update Live Activity
func updateLiveActivity() {
    Task {
        let updatedState = SimpleIslandState(message: "Delivering 🚀")
        let updatedContent = ActivityContent(state: updatedState, staleDate: nil)
        
        // Iterate through all active Activities and update them
        for activity in Activity<SimpleIslandAttributes>.activities {
            await activity.update(updatedContent)
            print("Update")
        }
    }
}

// 3. End Live Activity
func endLiveActivity() {
    Task {
        let finalState = SimpleIslandState(message: "Delivered ✅")
        let finalContent = ActivityContent(state: finalState, staleDate: nil)
        
        for activity in Activity<SimpleIslandAttributes>.activities {
            // dismissalPolicy: .default (immediate), .after(...) (delayed), .immediate (no animation)
            await activity.end(finalContent, dismissalPolicy: .default)
            
            print("End")
        }
    }
}

The Models (Shared between App and Widget Extension):

 // 1. Define State (Dynamic data, changes over time, e.g., remaining delivery time)
public struct SimpleIslandState: Codable, Hashable {
    var message: String
}

// 2. Define Attributes (Static data, constant after start, e.g., Order ID)
public struct SimpleIslandAttributes: ActivityAttributes {
    public typealias ContentState = SimpleIslandState
    var name: String // e.g., "My Order"
}

The Widget Code:

//
//  SimpleIslandWidget.swift
//  ReadyGo
//
//  Created by Tang Yu on 2025/11/19.
//

import WidgetKit
import SwiftUI
import ActivityKit

struct SimpleIslandWidget: Widget {
    var body: some WidgetConfiguration {
        ActivityConfiguration(for: SimpleIslandAttributes.self) { context in
            // UI shown on the Lock Screen
            VStack {
                Text("Lock Screen Notification: \(context.state.message)")
            }
            .activityBackgroundTint(Color.cyan)
            .activitySystemActionForegroundColor(Color.black)

        } dynamicIsland: { context in
            // Inside Widget Extension
            DynamicIsland {
                // Expanded Region
                DynamicIslandExpandedRegion(.center) {
                    Text("Test") // Pure text only
                }
            } compactLeading: {
                Text("L") // Pure text only
            } compactTrailing: {
                Text("R") // Pure text only
            } minimal: {
                Text("M") // Pure text only
            }
        }
    }
}

Additional Info:

  1. This is the minimal code setup I created for testing, but even this basic version is failing.
  2. I have set NSSupportsLiveActivities (Supports Live Activities) to YES (true) in the Info.plist for both the Main App and the Widget Extension.

Has anyone experienced this? Any help would be appreciated.

"I have already registered the widget in the WidgetBundle."

Hi, the first course of action here would be to use Console.app to monitor to the relevant processes related to your app and extensions.

  • A good way to start would be with filtering by the BundleID of the target and / or the target name itself (the process name).
  • Also be sure to check the system processes for additional information. This will vary based on what and where you are looking but some examples: To debug WidgetKit, LiveActivities, Dynamic Island you'll want to monitor springboardd, liveactivitiesd along with other relevant processes.
Live Activity (Dynamic Island) suddenly stopped working without code changes
 
 
Q