Skip to content

[Help Wanted]: SwiftUICore "not an allowed client" link error with use_frameworks! :linkage => :static (Expo SDK 54) #2614

Description

@tomterrapin

Required Reading

  • Confirmed

Plugin Version

5.1.1

Mobile operating-system(s)

  • iOS
  • Android

Device Manufacturer(s) and Model(s)

Apple iPhone 17 Pro Max (note: this is a build/link-time error, not device-specific)

Device operating-systems(s)

Test device iOS 27.0 — but reproduced building against the iOS 18.5 SDK (Xcode 16.4) and the iOS 26 SDK (Xcode 26.5)

React Native / Expo version

React Native 0.81.5, Expo SDK 54.0.25 (New Architecture enabled)

What do you require assistance about?

Summary

Linker failure I can't resolve from the app side — looking for the recommended config for apps that must use static frameworks.

Environment

  • react-native-background-geolocation: 5.1.1
  • Expo SDK 54.0.25 (React Native 0.81.5), New Architecture enabled
  • Config plugins used: react-native-background-geolocation + expo-gradle-ext-vars
  • use_frameworks! :linkage => :static — required for Google Maps (react-native-maps)
  • Reproduced on both Xcode 26.5 (iOS 26 SDK) and Xcode 16.4 (iOS 18.5 SDK) — not Xcode-version-specific

Error (at link time) ld: cannot link directly with 'SwiftUICore' because product being built is not an allowed client of it

TSLocationManager.xcframework autolinks the private SwiftUICore. Under static linkage that autolink propagates to the app's link line, where the iOS 18.5+ SDK's SwiftUICore.tbd allowable_clients list rejects it.

What I've already tried (none resolve it)

  • -weak_framework SwiftUICore in OTHER_LDFLAGS → still rejected (allowable_clients blocks even a weak link)
  • -Wl,-ld_classic (force the classic linker) → the classic linker enforces allowable_clients too
  • -Wl,-client_name,SwiftUI → rejected: "-client_name can only be used when creating a bundle or main executable" (the link happens in the React Native debug dylib)
  • Forcing the pod to a dynamic framework via a Podfile pre_install hook → fails: "The 'Pods-…' target has transitive dependencies that include statically linked binaries: TSLocationManager.xcframework" (the xcframework is static)

Question

Is there a recommended Podfile / build-settings configuration for apps that must use use_frameworks! :linkage => :static, or a TSLocationManager build that doesn't force a direct SwiftUICore link? Is this addressed in a newer / beta build of the SDK?

[Optional] Plugin Code and/or Config

[Optional] Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions