---
schema_version: "1"
id: 89735c660a759fd3f1277292ad41f5c2bb704b7fd5e274ffca140e888623e8d3
title: Prepare Your App for Submission
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/service_sdk_ios/ios_prepare_for_appstore.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.service_sdk_ios.meta/service_sdk_ios/ios_prepare_for_appstore.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 2b35cb515c67c5433af25c7e86bb142eccf048c5a21a6867b4538568e8fdead9
description: 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.
---
# 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](https://developer.salesforce.com/docs/atlas.en-us.service_sdk_ios.meta/service_sdk_ios/images/icon_note_important.png)

#### 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&language=en_US) before that date. Messaging offers many of the [chat features that you](https://help.salesforce.com/s/articleView?id=service.miaw_chat_vs_messaging.htm&type=5&language=en_US) 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&language=en_US).

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:

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](https://developer.salesforce.com/docs/atlas.en-us.service_sdk_ios.meta/service_sdk_ios/images/icon_note.png)

#### 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:
        
        $SRCROOT/ServiceCore.xcframework/ios-arm64/ServiceCore.framework/prepare-framework
    - If you installed the SDK with CocoaPods, use:
        
        $PODS\_ROOT/ServiceSDK/Frameworks/ServiceCore.framework/prepare-framework
    - If you installed the standard framework files with version 224.0.2 or earlier, use:
        
        $SRCROOT/ServiceCore.framework/prepare-framework
    
    ![Important](https://developer.salesforce.com/docs/atlas.en-us.service_sdk_ios.meta/service_sdk_ios/images/icon_note_important.png)
    
    #### 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.