Skip to content

[Bug]: iOS SDK static frameworks embedded in app bundle cause App Store Connect rejection (90057, 90208) #437

@samuelkahessay

Description

@samuelkahessay

Component

iOS SDK

Bug Description

The iOS binary targets RACommons.framework, RABackendLLAMACPP.framework, RABackendONNX.framework, and onnxruntime.framework are static archives wrapped in .framework bundles. Xcode treats all .framework bundles as embeddable and copies them into YourApp.app/Frameworks/ — even though they're already statically linked into the app binary. App Store Connect then rejects the upload.

Steps to Reproduce

  1. Add RunAnywhere, RunAnywhereLlamaCPP, and RunAnywhereONNX via SPM (v0.19.6)
  2. Archive for App Store distribution (xcodebuild archive)
  3. Export and upload to App Store Connect
  4. Upload is rejected with errors 90057 and 90208

Expected Behavior

Static library binary targets should not be embedded in the app's Frameworks directory. The upload should succeed without a workaround.

Environment

  • OS: iOS 17.6+ deployment target
  • SDK Version: 0.19.6 (latest)
  • Xcode: 16.4
  • Device: Generic iOS device (archive build)

Logs/Screenshots

App Store Connect validation errors:

  • ITMS-90057: CFBundleSupportedPlatforms and MinimumOSVersion missing from Info.plist in RACommons.framework, RABackendLLAMACPP.framework, RABackendONNX.framework
  • ITMS-90208: onnxruntime.framework fails additional bundle validation

Workaround

A Run Script build phase that removes the static frameworks from the embedded Frameworks directory before packaging:

for fw in RACommons RABackendLLAMACPP RABackendONNX onnxruntime; do
    rm -rf "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/${fw}.framework"
done

Suggested Fix

Either:

  1. Distribute these as plain .a static libraries (not wrapped in .framework bundles), so Xcode doesn't attempt to embed them, or
  2. Mark the binary targets with type: .static in the Package.swift manifest so SPM handles linking correctly without embedding

Related

This may share a root cause with #273 (simulator builds failing due to native library binary issues) — both stem from how the static archives are packaged as .framework bundles.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    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