---
schema_version: "1"
id: f6586aecbf77cc91906d942f9ad9d47823d284ddef7b9f5855c219785ebb5e90
title: Prepare Your App for Submission
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/service-cloud/service-sdk-ios/guides/ios-prepare-for-appstore.md
canonical_url: https://developer.salesforce.com/docs/service/service-sdk-ios/guide/ios-prepare-for-appstore.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 70539b8bbf2b3552b49ae028b955ba2c0573ec28da91eb01131e2e19bea21619
products:
  - Embedded Service Chat SDK for iOS Developer Guide
  - Service Cloud Developer Content
---

# Prepare Your App for Submission

If you’re not using Swift Package Manager to install the SDK, you need to strip development resources (such as unneeded architectures and header resources) from the Service Chat SDK before you can submit your app to the App Store.

**important:** The legacy chat product is scheduled for retirement on February 14, 2026, and is in maintenance mode until then. During this phase, you can continue to use chat, but we no longer recommend that you implement new chat channels. To avoid service interruptions to your customers, migrate to [Messaging for In-App and Web](https://help.salesforce.com/s/articleView?id=service.miaw_intro_landing.htm&type=5) before that date. Messaging offers many of the [chat features](https://help.salesforce.com/s/articleView?id=service.miaw_chat_vs_messaging.htm&type=5) that you love plus asynchronous conversations that can be picked back up at any time. Learn about chat retirement in [Help](https://help.salesforce.com/s/articleView?id=001790618&type=1).

Xcode doesn't automatically strip unneeded architectures from dynamic libraries, nor remove some header and utility resources. Apps that don't do this clean up are rejected from the App Store. For example, you might receive the following error from iTunes Connect:

```java
ERROR ITMS-90085:
No architectures in the binary. Lipo failed to detect any architectures in the bundle executable.
```

You can resolve this problem by using the script provided in the `ServiceCore` framework that automatically strips unneeded architectures from the dynamic libraries and then re-signs them.

**note:** This process is not required if you used Swift Package Manager to install your app.

To use this script:

1.  Select `Build Phases` for your project target.

2.  Create a `Run Script` phase to run the script.

    Access the `prepare-framework` script from within the `ServiceCore` framework in your project directory.

    - If you installed the XCFramework files manually, use:

      ```java
      $SRCROOT/ServiceCore.xcframework/ios-arm64/ServiceCore.framework/prepare-framework
      ```

    - If you installed the SDK with CocoaPods, use:

      ```java
      $PODS_ROOT/ServiceSDK/Frameworks/ServiceCore.framework/prepare-framework
      ```

    - If you installed the standard framework files with version 224.0.2 or earlier, use:

      ```java
      $SRCROOT/ServiceCore.framework/prepare-framework
      ```

    **important:** Verify that this script is in the _exact location_ that you specify in this build phase.

This build phase must occur **after** the link phase and all embed phases. If you're using CocoaPods, make sure to put this script after the "[CP] Embed Pods Frameworks" phase.
