ILMessageFilterSubAction symbol not found error on iOS 17.6

If I run an app with a Message Filter Extension on iOS 18 then it works as expected, however if its installed onto a phone with iOS 17.6.1 then there is the following error:

dyld[1042]: Symbol not found: _$sSo40ILMessageFilterCapabilitiesQueryResponseC14IdentityLookupE21promotionalSubActionsSaySo0abI6ActionVGvs
  Referenced from: <C82A1045-98F4-3751-8080-413FD0B0DEEB> /private/var/containers/Bundle/Application/F295C156-9B20-4927-AEFA-C6983388B193/Myapp.app/PlugIns/MyMessageFilterExtension.appex/CequintTextFilterExtension.debug.dylib
  Expected in:     <29BFFA34-9B52-3D14-A254-A0653545B72E> /System/Library/Frameworks/IdentityLookup.framework/IdentityLookup

(App built using XCode 16.2).

Here's code causing the issue:

import IdentityLookup

final class MessageFilterExtension: ILMessageFilterExtension {}


extension MessageFilterExtension: ILMessageFilterQueryHandling, ILMessageFilterCapabilitiesQueryHandling {
    func handle(_ capabilitiesQueryRequest: ILMessageFilterCapabilitiesQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void) {
        let response = ILMessageFilterCapabilitiesQueryResponse()

        response.transactionalSubActions = [.transactionalCarrier, .transactionalHealth, .transactionalPublicServices, .transactionalFinance, .transactionalWeather, .transactionalRewards, .transactionalOrders, .transactionalOthers, .transactionalReminders]

        response.promotionalSubActions = [.promotionalOffers, .promotionalOthers, .promotionalCoupons]
        completion(response)
    }

Message filter sub actions were introduced in iOS 16, so why is this error occurring when the code is run on iOS 17, but its fine with iOS 18?
 
This isn't specific to my app, its easily reproducable in two minutes - create an app, add a message filter extension target, change the template code to add a transactional or promotional sub action and then run and it'll occur.

(Reported as issue FB16148083)

Can you please a sysdiagnose to your bug report?

@Apple

Sysdiagnose uploaded

@Engineer

I've created a minimal XCode project that recreates this issue and attached to FB16148083 along with a new accompanying sysdiagnose.

I'm very surprised nobody else has reported this issue as there's a lot of apps using message filtering in the app store.

There's a very similar problem that manifested with XCode 15. If the app was built with XCode 15 then there would be no issues when run on iOS version < 18, but if run on iOS 18 the exact same issue as this would arise (this issue is when built with XCode 16, it runs on iOS 18+ but the issue manifests when run on iOS < 18)

Yes, I found it too, but I thought it was my own problem and didn't find the reason.

ILMessageFilterSubAction symbol not found error on iOS 17.6
 
 
Q