I have an app that's capable of playing podcasts via Siri requests, e.g. "Hey Siri, play [Podcast Name]". I’m using INPlayMediaIntentHandling, that is, the SiriKit domain intents, as opposed to the newer AppIntents framework for its ability to select my app for audio playback without the need to specify the name of the app in the user's request to Siri.
This works great overall for the many podcasts I’ve tested the app with, with the exception of one. There's a podcast called "The Headlines", and I when I test the app with the request "Hey Siri, play The Headlines", my app is never selected. Instead, Apple Podcasts begins playback of a show called "NPR News Now".
Oddly, if the Apple Podcasts app is deleted, my app will still not be selected by the system, and instead, Siri responds with "I don’t see an app for that. You’ll need to download one" with a button to open the App Store. Additionally, if I do add the app name to the request using this style of intent, Siri responds with "[App Name] hasn’t added support for that with Siri." However, I’d still like to accomplish this without requiring the app name in the Siri request.
There's nothing complex in my setup:
The target declares one supported intent, INPlayMediaIntent, with "Podcasts" selected as a supported media category.
The Siri entitlement is enabled.
My INSiriAuthorizationStatus is .authorized.
My intent handler is specified in my AppDelegate as follows:
func application(_ application: UIApplication, 
                 handlerFor intent: INIntent) -> Any? {
    return IntentHandler.shared
}
My intent handler is simple:
final class IntentHandler: NSObject, INPlayMediaIntentHandling {
    static let shared = IntentHandler()
    func handle(intent: INPlayMediaIntent) async -> INPlayMediaIntentResponse {
    print("IntentHandler: processing intent: \(intent)")
    /** code to start playback based on information found in `intent` **/    
}
When requesting Siri to "Play The Headlines", my handler code is not called at all. For all other supported shows, the print statement executes, and playback begins as expected.
Is there any way I can get my app to be selected instead of Apple Podcasts for this request?
                    
                  
                Intents
RSS for tagShare intents from within an app to drive system intelligence and show the app's actions in the Shortcuts app.
Posts under Intents tag
            
              
                84 Posts
              
            
            
              
                
              
            
          
          
  
    
    Selecting any option will automatically load the page
  
  
  
  
    
  
  
              Post
Replies
Boosts
Views
Activity
                    
                      Hello everyone,
I'm currently working on an App Intent for my iOS app, and I’ve encountered a frustrating issue related to how Siri prompts for a category selection. Here’s an overview of what I’m dealing with:
extension Category: AppEntity, @unchecked Sendable {
    var displayRepresentation: DisplayRepresentation {
        DisplayRepresentation(title: "\(name)")
    }
    
    static var typeDisplayRepresentation = TypeDisplayRepresentation(name: "Category")
    typealias DefaultQueryType = ShortcutsCategoryQuery
    static var defaultQuery: ShortcutsCategoryQuery = ShortcutsCategoryQuery()
}
struct ShortcutsCategoryQuery: EntityQuery {
    func entities(for identifiers: [String]) async throws -> [Category] {
        let context = await ModelContext(sharedModelContainer)
        let categories = try CategoryDataProvider(context: context).getItems()
        return categories.filter { identifiers.contains($0.id) }
    }
    func entities(matching string: String) async throws -> [Category] {
        return try await suggestedEntities()
    }
    func suggestedEntities() async throws -> [Category] {
        let context = await ModelContext(sharedModelContainer)
        do {
            let categories = try CategoryDataProvider(context: context).getItems()
            if categories.isEmpty {
                print("No categories found.")
            }
            return categories.map { category in
                Category(
                    id: category.id,
                    name: category.name,
                    stringSymbol: category.stringSymbol,
                    symbol: category.symbol,
                    stringColor: category.stringColor,
                    color: category.color
                )
            }
        } catch {
            print(error)
            return []
        }
    }
}
The issue arises when I use Siri to invoke the intent. Siri correctly asks me to select a category but does not display any options unless I said something that Siri recognized, like "Casa(House) or Teste(Test)" in portuguese. Only then does it show the list of available categories.
I would like the categories to appear immediately when Siri asks for a selection.  I've already tried refining the ShortcutsCategoryQuery and debugging various parts of my code, but nothing seems to fix this behavior.
                    
                  
                
                    
                      I donate some INPlayMediaIntent to system, and I find them in Control center, when I click one of them to play media background, the handler don't execute resolve method, I wanna resolve some mediaItems for suggestion playlist
                    
                  
                
                    
                      I'm curious if anyone else has figured out why an intent defined in the intents file never seems to appear in the Shortcuts app on MacOS.
I'm following the steps outlined in "Meet Shortcuts for MacOS" from WWDC 2021.
https://developer.apple.com/videos/play/wwdc2021/10232
I build and run my app, launch Shortcuts, and the intent I defined refuses to show up!
There's one caveat - I allowed Xcode to update to 16.1, and mysteriously the intent became available in Shortcuts.app. When I went to add a second intent, I see the same as above - it simply never shows up in Shortcuts.app.
I have a few intents I'd like to write/add, but this build/test cycle is really slowing me down.
This app is a completely fresh Swift-AppKit app, I've never archived it, so there shouldn't be more than one copy on disk. I have also cleaned the build folder, restarted Xcode, restarted Shortcuts, restarted my machine entirely...
Anyone see this before and find a workaround? Any advice on how to give Shortcuts.app a kick in the rear to try and find my second intent?
                    
                  
                
                    
                      I'm attempting to migrate my app's Homescreen widget from using the old SiriKit Intent system to the new AppIntent system but running into an issue.
This WWDC video is the main source of information I have been going off of.
https://developer.apple.com/videos/play/tech-talks/10168/
The problem I'm having is no matter what config I try, as soon as I upgrade to the new app with the AppIntent Widget, all the current widgets on the homescreen stop working, and just show a black screen. Deleting and re-adding the widget to the homescreen from scratch works fine though.
I found someone else with a similar issue here on the Apple developer forums, but it didn't look like there was much information or resolution.
https://developer.apple.com/forums/thread/759751
https://feedbackassistant.apple.com/feedback/14678285
I used XCode's built in Intent migration UI to create the new CustomIntentMigratedAppIntent which should help migrate the old widgets to the new system. I also double-checked all the names and variable types, and the automatically generated file seems to be correct.
I even went ahead and created a brand new empty app with the same app and extension bundle id, and made a hard coded widget which contains the migrated intents, just to make sure nothing in my widget or app code is wrong. And even with the empty app with hardcoded views, the widget is still dead after upgrading the app.
It almost seems like the widget is getting disassociated from the app.
Even though the app has a new name, the old widget will still show the old name, the widget also does not give any option to edit it, only delete it. And on the new app, I am able to attach my debugger to the widget extension process, but no code inside my timeline, intent, or entity seem to ever be called/run.
I looked at the Console log while forcing a refresh of the widget, and I've attached the full logs here, and there is a lot in there about it refreshing widgets.
SEE LOGS HERE: Tomer_Logs.txt
But one line that stands out, is this error which appears every time the old widget is refreshed
[com.shemeshapps.MinecraftServerStatus::com.shemeshapps.MinecraftServerStatus.MinecraftServerStatusHSWidget:MinecraftServerStatusHSWidget:-5734839072461827392] Reload failed; 0 retries remaining: ChronoCoreErrorDomain (1) Error Domain=ChronoCoreErrorDomain Code=1 "Unknown extension process" UserInfo={NSLocalizedDescription=Unknown extension process}
Any help in greatly appreciated, Either issues you think might be causing this, or any tips on debugging further!
Thanks!
I've gone ahead and filled a Feedback, as well as submitted a DTS issue, as this is a release blocker. (The feedback contains the new and old project files to allow anyone to reproduce.)
FB15531563
DTS case ID: 9677328
                    
                  
                
                    
                      Hi,
I'm implementing InSendMessageIntent handling in our app. I can handle InSendMessageIntent through extension, but handling also includes business logic like authorisation status and some heavy operation which I can't expose from the main target.
I tried to handle it in-app, but func application(_ application: UIApplication, handlerFor intent: INIntent) -> Any? didn't trigger. At the first glance the configuration looks correct - the InSendMessageIntent is added under INIntentsSupported and UIApplicationSupportsMultipleScenes is set to YES in info.plist.
After that reply with message button disappeared from the incoming Voip callKit screen.
So I had a question -  Is this intent possible to be handled in-app?
                    
                  
                
                    
                      Hi!
When my device is set to English, both search and the Shortcuts up automatically show multiple shortcuts parametrised for each value of the AppEnum - which is what I expected.  When my device is set to German, I get only the basic AppShortcut without the (optional) parameter.
I am using an AppEnum (see below) for the parametrised phrases and localise the phrases into German with an AppShortcuts String Catalog added to my project.
Everything else seems to work, I can use my AppShortcut in the Shortcuts app and invoke it via Siri in both English and German.
The Shortcuts app displays the values correctly using the localized strings.
Any ideas?
import AppIntents
class ApolloShortcuts: AppShortcutsProvider {
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: GetIntent(),
            phrases: [
                "Get data from \(.applicationName)",
                "Get data from \(.applicationName) for \(\.$day)",
                "Get data from \(.applicationName) for the \(\.$day)"
            ],
            shortTitle: "Get Data",
            systemImageName: "wand.and.sparkles")
    }
}
enum ForecastDays: String, AppEnum {
    static var typeDisplayRepresentation: TypeDisplayRepresentation = "Day"
    
    static var caseDisplayRepresentations: [Self : DisplayRepresentation] = [
        .today: DisplayRepresentation(title: LocalizedStringResource("today", table: "Days")),
        .tomorrow: DisplayRepresentation(title: LocalizedStringResource("tomorrow", table: "Days")),
        .dayAfterTomorrow: DisplayRepresentation(title: LocalizedStringResource("dayAfterTomorrow", table: "Days"))
    ]
    
    case today
    case tomorrow
    case dayAfterTomorrow
    
    var displayName: String {
        String(localized: .init(rawValue), table: "Days")
    }
}
                    
                  
                
                    
                      I am implementing a couple custom intents in my app. Having completed the implementation of the custom intent definitions and the intent handlers which presumably should be called on voice command based on the suggestedInovocationPhrase, I am getting stumped with just getting IOS to recognize my shortcut donation. While the shortcut donation is executed multiple times from the view that I am trying to create the shortcut for, it is never being displayed in the shortcut app or on my lock screen as having been donated. In my settings App, I have turned on (under Developer) "Display Recent Shortcuts" and "Display Donations on Lock Screen". Here is the code that is executing each time I think I am making a donation:
- (NSUserActivity *) CreateMyShortcut {
    NSUserActivity *newActivity = [[NSUserActivity alloc] initWithActivityType: kMyShortCutActivityType];
    
    if (@available(iOS 12.0, *)) {
        newActivity.persistentIdentifier = kMyShortCutActivityType;
        newActivity.eligibleForSearch = TRUE;
        newActivity.eligibleForPrediction = TRUE;
        
        CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithContentType: UTTypeImage];
        
        newActivity.title = @"My Shortcut";
        attributeSet.contentDescription = @"description";
        
        newActivity.suggestedInvocationPhrase = @"Create Widget";
        
        UIImage *image = [UIImage imageNamed:@"MyApp_Icon.jpg"];
        NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
        attributeSet.thumbnailData = imageData;
        
        newActivity.contentAttributeSet = attributeSet;
    }
    return newActivity;
}
This is called from the view that I want to create the shortcut for with the following code:
    // Donate a shortcut to allow Siri to assist with creating a parts list
    NSUserActivity *activity = [[MyDonationManager sharedInstance] CreateMyShortcut];
    NSLog(@"Donating Siri Shortcut");
    [activity becomeCurrent];
Is there something else I need to do?
                    
                  
                
                    
                      Imagine we have an Xcode workspace containing two projects:
MyLibrary.xcodeproj holding a framework target
MyShortcutsApp.xcodeproj holding an app target which consumes MyLibrary framework
Both targets define App Intents and the ones from MyLibrary are exposed via AppIntentsPackage accordingly.
When trying to wrap the App Intent from framework as App Shortcut and passing localized AppShortcutPhrases I do see the following compile error:
".../Resources/de.lproj/AppShortcuts.strings:11:1: error: This AppShortcut does not map to a known action (MyLibraryIntent specified). (in target 'MyShortcutsApp' from project 'MyShortcutsApp')"
If I use the same localized App Shortcut phrases for an App Intent which is locally defined in the app target, everything works fine and also if I use the framework-provided App Intent in and App Shortcut without passing any localized phrases.
This is happening with Xcode 16.0 (16A242d), with 16.1 (16B40) and with 16.2 beta 2 (16C5013f).
I already raised this issue via FB15701779 which contains a sample project to reproduce and to further analyze the issue.
Thanks for any hint on how to solve that.
Frank
                    
                  
                
                    
                      Hi!
SiriTipView(intent:) shows the first phrase for my App Shortcut, but unlike ShortcutsLink(), does not use the localized applicationName. Hence the phrase shown does not work 😬
Is this a known limitation, any workarounds?
                    
                  
                
                    
                      Hello!
I'm trying to donate an Intent to iOS using IntentDonationManager, following the methods described in the documentaion.
try await IntentDonationManager.shared.donate(intent: MyIntent()) // succeeded
However, I'm not seeing any effect of this action anywhere in the system (iOS 17 and 16). I have debugged it on both the simulator and a physical device, and I have also enabled the "Display Recent Shortcuts" toggle in the developer settings, but I still don't see any relevant suggestions appearing.
Similarly, the issue also occurs with the old SiriKit framework, where INInteraction.donate(completion:) doesn't seem to have any observable effect. I recall that in iOS 15, the simulator would immediately present the donated Shortcut action on the lock screen and Spotlight page. However, starting from iOS 16 and continuing to the current iOS 17 beta 1/2, I haven't been able to achieve the same behavior using the same code.
Another similar report: https://developer.apple.com/forums/thread/723109
So is there any way to test or verify the results of this donation action?
                    
                  
                
                    
                      I have developed a standalone WatchOS app which runs a stopwatch.
I want to develop a shortcut that launches the stopwatch. So far I have created the Intent file, and added the basic code (shown below) but the intent doesn't show in the shortcuts app.
In the build, I can see the intent metadata is extracted, so it can see it, but for some reason it doesn't show in the watch.
I downloaded Apple's demo Intent app and the intents show in the watch there. The only obvious difference is that the Apple app is developed as an iOS app with a WatchOS companion, whereas mine is standalone.
Can anyone point me to where I should look for an indicator of the problem?
Many thanks!
//
//  StartStopwatch.swift
//  LapStopWatchMaster
import AppIntents
import Foundation
struct StartStopWatchAppIntent: AppIntent {
    
    static let title: LocalizedStringResource = "Start Stopwatch"
    static let description = IntentDescription("Starts the stopwatch and subsequently triggers a lap.")
    
    static let openAppWhenRun: Bool = true
    
    @MainActor
    func perform() async throws -> some IntentResult {
            // Implement your app logic here
            return .result(value: "Started stopwatch.")
    }
    
}
                    
                  
                
                    
                      I’m trying to use a Decimal as a @Property in my AppEntity, but using the following code shows me a compiler error. I’m using Xcode 16.1.
The documentation notes the following:
You can use the @Parameter property wrapper with common Swift and Foundation types:
Primitives such as Bool, Int, Double, String, Duration, Date, Decimal, Measurement, and URL.
Collections such as Array and Set. Make sure the collection’s elements are of a type that’s compatible with IntentParameter.
Everything works fine for other primitives as bools, strings and integers. How do I use the Decimal though?
Code
struct MyEntity: AppEntity {
    var id: UUID
    
    @Property(title: "Amount")
    var amount: Decimal
    // …
}
Compiler Error
This error appears at the line of the @Property definition:
Generic class 'EntityProperty' requires that 'Decimal' conform to '_IntentValue'
                    
                  
                
                    
                      Exploring AppIntents and Shortcuts. No matter what I try Siri won't understand parameters in an initial spoken phrase.
For example, if I ask: "Start my planning for School in TestApp", Siri responds: "What's plan?", I say: "School" and Siri responds "Ok, starting Shool plan"
What am I missing so it won't pick up parameters right away?
Logs inside func entities(matching string: String) are only called after "What's plan?" question and me answering "School". No logs after the initial phrase
Tried to use Apple's Trails example as a reference but with no luck
                    
                  
                
                    
                      If you add a (SiriKit / Widget) intent definition file to an Xcode project and then translate it into another language, the build of the iOS app only works until you close the project. As soon as you open the project again, you get the error message with the next build:
Unexpected duplicate tasks
A workaround for this bug is, that you convert the folder (where the intent file is located) in Xcode to a group. After that every thing works without problems.
Steps to reproduce:
Create a new iOS project
Add a localization to the project (German for example)
Add a SiriKit Intent Definition File
Localize the SiriKit Intent Definition File
Build the project (should work without errors)
Close the project
Open the project again
Build the project again
Expected result:
The project builds without problems
Current result:
The project doesn’t build and returns the error: Unexpected duplicate tasks
Is this a known problem? Is there a way to solve this without switching to Xcode groups (instead of folders)
                    
                  
                
                    
                      I have shortcuts up and running and I have my custom response added to my completion handler since day1.
Recently I upgraded to iOS18, and found out the app I develop can not display the custom response.
I test the app on iOS17.6, the display of custom response is no problem.
The situation is exactly like the problem posted on 2018: https://forums.developer.apple.com/forums/thread/109324
Can anyone help me or have the same bugs?
Thank you so much!
Happy 2025
                    
                  
                
                    
                      I have an app intent for interactive widgets.
when I touch the toggle, the app intent perform to request location.
func perform() async throws -> some IntentResult {
        
        var mark: LocationService.Placemark?
        do {
            mark = try await AsyncLocationServive.shared.requestLocation()
            print("[Widget] ConnectHandleIntent: \(mark)")
        } catch {
            WidgetHandler.shared.error = .locationUnauthorized
            print("[Widget] ConnectHandleIntent: \(WidgetHandler.shared.error!)")
            
        }
        return .result()
    }
@available(iOSApplicationExtension 13.0, *)
@available(iOS 13.0, *)
final class AsyncLocationServive: NSObject, CLLocationManagerDelegate {
    
    static let shared = AsyncLocationServive()
    
    private let manager: CLLocationManager
    private let locationSubject: PassthroughSubject<Result<LocationService.Placemark, LocationService.Error>, Never> = .init()
    
    lazy var geocoder: CLGeocoder = {
        let geocoder = CLGeocoder()
        return geocoder
    }()
    @available(iOSApplicationExtension 14.0, *)
    @available(iOS 14.0, *)
    var isAuthorizedForWidgetUpdates: Bool {
        manager.isAuthorizedForWidgetUpdates
    }
    override init() {
        manager = CLLocationManager()
        super.init()
        manager.delegate = self
    }
    
    func requestLocation() async throws -> LocationService.Placemark {
        let result: Result<LocationService.Placemark, LocationService.Error> = try await withUnsafeThrowingContinuation { continuation in
            var cancellable: AnyCancellable?
            var didReceiveValue = false
            cancellable = locationSubject.sink(
                receiveCompletion: { _ in
                    if !didReceiveValue {
                        // subject completed without a value…
                        continuation.resume(throwing: LocationService.Error.emptyLocations)
                    }
                },
                receiveValue: { value in
                    // Make sure we only send a value once!
                    guard !didReceiveValue else {
                        return
                    }
                    didReceiveValue = true
                    // Cancel current sink
                    cancellable?.cancel()
                    // We either got a location or an error
                    continuation.resume(returning: value)
                }
            )
            // Now that we monitor locationSubject, ask for the location
            DispatchQueue.global().async {
                self.manager.requestLocation()
            }
        }
        switch result {
        case .success(let location):
            // We got the location!
            return location
        case .failure(let failure):
            // We got an error :(
            throw failure
        }
    }
    
    
    // MARK: CLLocationManagerDelegate
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        defer {
            manager.stopUpdatingLocation()
        }
        guard let location = locations.first else {
            locationSubject.send(.failure(.emptyLocations))
            return
        }
        debugPrint("[Location] location: \(location.coordinate)")
        manager.stopUpdatingLocation()
        if geocoder.isGeocoding {
            geocoder.cancelGeocode()
        }
        geocoder.reverseGeocodeLocation(location) { [weak self] marks, error in
            guard let mark = marks?.last else {
                self?.locationSubject.send(.failure(.emptyMarks))
                return
            }
            
            debugPrint("[Location] mark: \(mark.description)")
            self?.locationSubject.send(.success(mark))
        }
        
    }
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        locationSubject.send(.failure(.errorMsg(error.localizedDescription)))
    }
}
I found it had not any response when the app intent performed. And there is a location logo tips in the top left corner of  phone screen.
                    
                  
                
                    
                      I've been following along with "App Shortcuts" development but cannot get Siri to run my Intent. The intent on its own works in Shortcuts, along with a couple others that aren't in the AppShortcutsProvder structure.
I keep getting the following two errors, but cannot figure out why this is occurring with documentation or other forum posts.
No ConnectionContext found for 12909953344
Attempted to fetch App Shortcuts, but couldn't find the AppShortcutsProvider.
Here are the relevant snippets of code -
(1) The AppIntent definition
struct SetBrightnessIntent: AppIntent {
    static var title = LocalizedStringResource("Set Brightness")
    static var description = IntentDescription("Set Glass Display Brightness")
    
    @Parameter(title: "Level")
    var level: Int?
    static var parameterSummary: some ParameterSummary {
        Summary("Set Brightness to \(\.$level)%")
    }
    func perform() async throws -> some IntentResult {
        guard let level = level else {
            throw $level.needsValueError("Please provide a brightness value")
        }
        
        if level > 100 || level <= 0 {
            throw $level.needsValueError("Brightness must be between 1 and 100")
        }
        
        // do stuff with level
        return .result()
    }
}
(2) The AppShortcutsProvider (defined in my iOS app target, there are no other targets)
struct MyAppShortcuts: AppShortcutsProvider {
    static var shortcutTileColor: ShortcutTileColor = .grayBlue
    
    @AppShortcutsBuilder
    static var appShortcuts: [AppShortcut] {
        AppShortcut(
            intent: SetBrightnessIntent(),
            phrases: [
                "set \(.applicationName) brightness to \(\.$level)",
                "set \(.applicationName) brightness to \(\.$level) percent"
            ],
            shortTitle: LocalizedStringResource("Set Glass Brightness"),
            systemImageName: "sun.max"
        )
    }
}
Does anything here look wrong? Is there some magical key that I need to specify in Info.plist to get Siri to recognize the AppShortcutsProvider?
On Xcode 16.2 and iOS 18.2 (non-beta).
                    
                  
                
                    
                      Hi all, I'm working on a really basic counter app as a way to explore SwiftData and have come across some behavior that I don't understand. I have a very simple App Intent that increments a user-specified counter in my app. The intent doesn't throw any errors and correctly updates the CoreData store but, when I switch back to my app from the Shortcuts app (where I'm testing the app intent), the view hasn't updated. Closing and re-opening the app shows the incremented counter value but I'd like to know if it's possible to have my app's UI update when the CoreData store is updated from outside the app without relaunching the whole app.
For some brief context, here's my view and the App Intent:
struct ContentView: View {
    @Environment(\.modelContext) private var modelContext
    @Query private var counters: [Counter]
    // ...
    var body: some View {
        NavigationStack {
            List {
                ForEach(counters) { counter in
                    CounterRowItem(counter: counter)
                }
                .onDelete(perform: deleteItems)
            }
            // ...
        }
    }
struct IncrementCounterIntent: AppIntent {
    static var title: LocalizedStringResource = "Increment Counter"
    @Parameter(title: "Name", optionsProvider: CounterOptionsProvider()) var name: String
    func perform() async throws -> some IntentResult & ReturnsValue<Int> {
        let provider = try CounterProvider()
        guard let counter = try provider.fetchCounters().first(where: { $0.name == name }) else {
            print("Couldn't find counter with name '\(name)'")
            return .result(value: 0)
        }
        counter.count += 1
        try provider.context.save()
        return .result(value: counter.count)
    }
    private final class CounterOptionsProvider: DynamicOptionsProvider {
        func results() async throws -> [String] {
            try CounterProvider().fetchCounters().map { $0.name }
        }
    }
}
                    
                  
                
                    
                      I am implementing a new Intents UI Extension and am noticing that the viewWillDisappear, viewDidDisappear, and deinit methods are not being called on my UIViewController that implements INUIHostedViewControlling, when pressing the "Done" button and dismissing the UIViewController.
This causes the memory for the UI Extension to slowly increase each time I re-run the UI Extension until it reaches the 120MB limit and crashes.
Any ideas as to what's going on here and how to solve this issue?