{"id":21768175,"url":"https://github.com/below/fb9224451","last_synced_at":"2026-04-25T08:35:09.458Z","repository":{"id":66512590,"uuid":"381971323","full_name":"below/FB9224451","owner":"below","description":"Sample Code for FB9224451. See Readme for Details","archived":false,"fork":false,"pushed_at":"2021-07-15T11:54:25.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-21T05:43:54.789Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/below.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-01T08:59:43.000Z","updated_at":"2021-07-15T11:54:28.000Z","dependencies_parsed_at":"2023-03-13T20:29:44.528Z","dependency_job_id":null,"html_url":"https://github.com/below/FB9224451","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/below/FB9224451","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/below%2FFB9224451","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/below%2FFB9224451/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/below%2FFB9224451/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/below%2FFB9224451/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/below","download_url":"https://codeload.github.com/below/FB9224451/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/below%2FFB9224451/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263102549,"owners_count":23414125,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-26T13:34:02.001Z","updated_at":"2026-04-25T08:35:09.418Z","avatar_url":"https://github.com/below.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"#  Sample Code For Feedback FB9224451\n\nThe `UIFontDescriptor.FeatureKey.featureIdentifier` seems to be unavailable on iOS 14 when built with Xcode 13 against the iOS 15 SDK.\n\n# Update: Duplicate\n\nThis seems to be a duplicate of FB79090498, mentioned in the [Xcode 13 Beta 3 Release Notes](https://developer.apple.com/documentation/xcode-release-notes/xcode-13-beta-release-notes):\n\n\u003e Apps that contain Swift code referencing featureIdentifier or typeIdentifier fail to launch on earlier OS releases. (79090498)\n\n# Update: Workaround\n\nChanging `.featureIdentifier` to `.type` results in successful tests on all iOS versions. There is however no warning that this is necessary if the depoloyment target is not equal to iOS 15.\n\nAlso, to compile on Xcode 12, the code is not particularly elegant:\n\n``` swift\n#if swift(\u003e=5.5)\nreturn .type\n#else\nreturn .featureIdentifier\n#endif\n```\n\nChecking for Swift 5.5 violates the basic rule that you should ask what you are asking for (in this case, if you are compiling against the iOS 15 SDK) \n\nThe solution can be found in this [branch](https://github.com/below/FB9224451/tree/solution)\n\n# Steps to Reproduce\n\nBuild and test this sample with Xcode 13 (13A5155e) on a simulator or device running iOS 14 or earlier\n\n# Expected Result\n\nTest runs successfully \n\n# Actual Result\n\nTest crashes: `Thread 1: signal SIGABRT`\n\nLog Output:\n\n```\ndyld: lazy symbol binding failed: Symbol not found: _$sSo26UIFontDescriptorFeatureKeya5UIKitE17featureIdentifierABvgZ\n  Referenced from: /Users/below/Library/Developer/CoreSimulator/Devices/346C106C-C93E-4227-820C-F82A2A5A7675/data/Containers/Bundle/Application/5C14EC67-A88D-4896-A17A-434E8CFEC4D2/ios15test.app/ios15test\n  Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/libswiftUIKit.dylib\n\ndyld: Symbol not found: _$sSo26UIFontDescriptorFeatureKeya5UIKitE17featureIdentifierABvgZ\n  Referenced from: /Users/below/Library/Developer/CoreSimulator/Devices/346C106C-C93E-4227-820C-F82A2A5A7675/data/Containers/Bundle/Application/5C14EC67-A88D-4896-A17A-434E8CFEC4D2/ios15test.app/ios15test\n  Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/libswiftUIKit.dylib\n```\n\n```\n* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT\n    frame #0: 0x000000011556aa8a dyld`__abort_with_payload + 10\n    frame #1: 0x0000000115593831 dyld`abort_with_payload_wrapper_internal + 80\n    frame #2: 0x0000000115593863 dyld`abort_with_payload + 9\n    frame #3: 0x000000010d17aef8 dyld_sim`abort_with_payload + 26\n    frame #4: 0x000000010d1316bf dyld_sim`dyld::halt(char const*) + 672\n    frame #5: 0x000000010d131849 dyld_sim`dyld::fastBindLazySymbol(ImageLoader**, unsigned long) + 167\n    frame #6: 0x000000010fc15ed9 libdyld.dylib`_dyld_fast_stub_entry(void*, long) + 65\n    frame #7: 0x000000010fc145a6 libdyld.dylib`dyld_stub_binder + 282\n    frame #8: 0x000000010d119000 ios15test\n  * frame #9: 0x000000012b4e97a4 ios15testTests`ios15testTests.testFeatureKey(self=0x00007fc7b1e2d790) at ios15testTests.swift:16:26\n    frame #10: 0x000000012b4e9b30 ios15testTests`@objc ios15testTests.testFeatureKey() at \u003ccompiler-generated\u003e:0\n    frame #11: 0x000000010f1aca3c CoreFoundation`__invoking___ + 140\n    frame #12: 0x000000010f1a9c6f CoreFoundation`-[NSInvocation invoke] + 305\n    frame #13: 0x00000001231ce231 XCTest`+[XCTFailableInvocation invokeErrorConventionInvocation:completion:] + 118\n    frame #14: 0x00000001231ce1b9 XCTest`__65+[XCTFailableInvocation invokeInvocation:lastObservedErrorIssue:]_block_invoke + 23\n    frame #15: 0x00000001231cde5c XCTest`__81+[XCTFailableInvocation invokeWithAsynchronousWait:lastObservedErrorIssue:block:]_block_invoke.13 + 71\n    frame #16: 0x0000000123270408 XCTest`+[XCTSwiftErrorObservation observeErrorsInBlock:] + 69\n    frame #17: 0x00000001231cdcf1 XCTest`+[XCTFailableInvocation invokeWithAsynchronousWait:lastObservedErrorIssue:block:] + 443\n    frame #18: 0x00000001231ce0d2 XCTest`+[XCTFailableInvocation invokeInvocation:lastObservedErrorIssue:] + 237\n    frame #19: 0x00000001231b94b4 XCTest`__24-[XCTestCase invokeTest]_block_invoke.269 + 109\n    frame #20: 0x000000012321c5ba XCTest`-[XCTestCase(XCTIssueHandling) _caughtUnhandledDeveloperExceptionPermittingControlFlowInterruptions:caughtInterruptionException:whileExecutingBlock:] + 183\n    frame #21: 0x00000001231b9058 XCTest`-[XCTestCase invokeTest] + 849\n    frame #22: 0x00000001231ba872 XCTest`__26-[XCTestCase performTest:]_block_invoke_2 + 43\n    frame #23: 0x000000012321c5ba XCTest`-[XCTestCase(XCTIssueHandling) _caughtUnhandledDeveloperExceptionPermittingControlFlowInterruptions:caughtInterruptionException:whileExecutingBlock:] + 183\n    frame #24: 0x00000001231ba7a9 XCTest`__26-[XCTestCase performTest:]_block_invoke.367 + 86\n    frame #25: 0x0000000123234913 XCTest`+[XCTContext runInContextForTestCase:markAsReportingBase:block:] + 220\n    frame #26: 0x00000001231b9fb6 XCTest`-[XCTestCase performTest:] + 693\n    frame #27: 0x0000000123202e39 XCTest`-[XCTest runTest] + 57\n    frame #28: 0x00000001231b156a XCTest`-[XCTestSuite runTestBasedOnRepetitionPolicy:testRun:] + 156\n    frame #29: 0x00000001231b13e0 XCTest`__27-[XCTestSuite performTest:]_block_invoke + 252\n    frame #30: 0x00000001231b0c07 XCTest`__59-[XCTestSuite _performProtectedSectionForTest:testSection:]_block_invoke + 24\n    frame #31: 0x0000000123234913 XCTest`+[XCTContext runInContextForTestCase:markAsReportingBase:block:] + 220\n    frame #32: 0x00000001231b0bbe XCTest`-[XCTestSuite _performProtectedSectionForTest:testSection:] + 159\n    frame #33: 0x00000001231b0eee XCTest`-[XCTestSuite performTest:] + 281\n    frame #34: 0x0000000123202e39 XCTest`-[XCTest runTest] + 57\n    frame #35: 0x00000001231b156a XCTest`-[XCTestSuite runTestBasedOnRepetitionPolicy:testRun:] + 156\n    frame #36: 0x00000001231b13e0 XCTest`__27-[XCTestSuite performTest:]_block_invoke + 252\n    frame #37: 0x00000001231b0c07 XCTest`__59-[XCTestSuite _performProtectedSectionForTest:testSection:]_block_invoke + 24\n    frame #38: 0x0000000123234913 XCTest`+[XCTContext runInContextForTestCase:markAsReportingBase:block:] + 220\n    frame #39: 0x00000001231b0bbe XCTest`-[XCTestSuite _performProtectedSectionForTest:testSection:] + 159\n    frame #40: 0x00000001231b0eee XCTest`-[XCTestSuite performTest:] + 281\n    frame #41: 0x0000000123202e39 XCTest`-[XCTest runTest] + 57\n    frame #42: 0x00000001231b156a XCTest`-[XCTestSuite runTestBasedOnRepetitionPolicy:testRun:] + 156\n    frame #43: 0x00000001231b13e0 XCTest`__27-[XCTestSuite performTest:]_block_invoke + 252\n    frame #44: 0x00000001231b0c07 XCTest`__59-[XCTestSuite _performProtectedSectionForTest:testSection:]_block_invoke + 24\n    frame #45: 0x0000000123234913 XCTest`+[XCTContext runInContextForTestCase:markAsReportingBase:block:] + 220\n    frame #46: 0x00000001231b0bbe XCTest`-[XCTestSuite _performProtectedSectionForTest:testSection:] + 159\n    frame #47: 0x00000001231b0eee XCTest`-[XCTestSuite performTest:] + 281\n    frame #48: 0x0000000123202e39 XCTest`-[XCTest runTest] + 57\n    frame #49: 0x000000012324af6b XCTest`__44-[XCTTestRunSession runTestsAndReturnError:]_block_invoke_2 + 148\n    frame #50: 0x0000000123234913 XCTest`+[XCTContext runInContextForTestCase:markAsReportingBase:block:] + 220\n    frame #51: 0x000000012324aed0 XCTest`__44-[XCTTestRunSession runTestsAndReturnError:]_block_invoke + 119\n    frame #52: 0x000000012324b051 XCTest`__44-[XCTTestRunSession runTestsAndReturnError:]_block_invoke.91 + 96\n    frame #53: 0x00000001231d0104 XCTest`-[XCTestObservationCenter _observeTestExecutionForBlock:] + 325\n    frame #54: 0x000000012324ac43 XCTest`-[XCTTestRunSession runTestsAndReturnError:] + 473\n    frame #55: 0x00000001231941bf XCTest`-[XCTestDriver _runTests] + 470\n    frame #56: 0x000000012322f258 XCTest`_XCTestMain + 108\n    frame #57: 0x000000010d1dd9b5 libXCTestBundleInject.dylib`__RunTests_block_invoke_2 + 13\n    frame #58: 0x000000010f113c74 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12\n    frame #59: 0x000000010f113070 CoreFoundation`__CFRunLoopDoBlocks + 437\n    frame #60: 0x000000010f10da08 CoreFoundation`__CFRunLoopRun + 892\n    frame #61: 0x000000010f10d1a7 CoreFoundation`CFRunLoopRunSpecific + 567\n    frame #62: 0x000000011a493d85 GraphicsServices`GSEventRunModal + 139\n    frame #63: 0x0000000111d9f4df UIKitCore`-[UIApplication _run] + 912\n    frame #64: 0x0000000111da439c UIKitCore`UIApplicationMain + 101\n    frame #65: 0x000000010e45df42 libswiftUIKit.dylib`UIKit.UIApplicationMain(Swift.Int32, Swift.Optional\u003cSwift.UnsafeMutablePointer\u003cSwift.UnsafeMutablePointer\u003cSwift.Int8\u003e\u003e\u003e, Swift.Optional\u003cSwift.String\u003e, Swift.Optional\u003cSwift.String\u003e) -\u003e Swift.Int32 + 98\n    frame #66: 0x000000010d115738 ios15test`static UIApplicationDelegate.main() at \u003ccompiler-generated\u003e:0\n    frame #67: 0x000000010d1156c7 ios15test`static AppDelegate.$main(self=ios15test.AppDelegate) at AppDelegate.swift:10:1\n    frame #68: 0x000000010d115818 ios15test`main at \u003ccompiler-generated\u003e:0\n    frame #69: 0x000000010fc11bbd libdyld.dylib`start + 1\n```\n\n# Notes\n\nTest runs when build with Xcode 12.5.1\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelow%2Ffb9224451","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbelow%2Ffb9224451","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbelow%2Ffb9224451/lists"}