Skip to main content

iOS Components v3.8.1

· 2 min read

iOS patch release that distributes WeavrComponents as a mergeable library and fixes a linker error when statically linking it into an app extension.

Changed

  • WeavrComponents is now distributed as an Apple mergeable library (MERGEABLE_LIBRARY = YES), allowing Xcode to merge it directly into the app binary at build time instead of always embedding it as a separate dynamic framework. This can improve app launch time and reduce app size.

Fix

  • Fixed cannot link directly with 'SwiftUICore' because product being built is not an allowed client of it, which occurred when an app extension (for example, an Autofill or Wallet extensionWallet Extension An iOS app extension that integrates an issuer app with Apple Wallet. The UI Wallet Extension provisions a card from the issuer app into Wallet (the in-app provisioning flow). The Non-UI Wallet Extension exposes the issuer's card-management actions (such as 'View card details') from inside Wallet itself. Apple requires both for a primary issuer-app integration.) statically linked WeavrComponents. Being a mergeable library lets Xcode merge the framework into the extension's binary instead of requiring a direct link against SwiftUICore.
Requires CocoaPods 1.17.0 or later

Mergeable libraries add a Mach-O load command (LC_ATOM_INFO) that CocoaPods versions older than 1.17.0 can't parse. If you install this version through CocoaPods, pin CocoaPods to 1.17.0 or later before running pod install - see App crashes at launch with "Library not loaded" for a Weavr framework. Otherwise the framework may fail to embed in your app bundle and crash at launch with a dyld "Library not loaded" error, most commonly when your app and an app extension both depend on WeavrComponents. This doesn't affect Swift Package Manager installs.