feat(ios): prepare for TestFlight / App Store distribution - #59
Open
tabilzad wants to merge 1 commit into
Open
Conversation
- Info.plist: add ITSAppUsesNonExemptEncryption = false Required for App Store / TestFlight submission. The app uses standard HTTPS (Ktor + NSURLSession) which is exempt under U.S. EAR. Without this key Apple holds the binary pending clarification. - project.pbxproj: Release CODE_SIGN_IDENTITY → "Apple Distribution" "Apple Development" certificates cannot produce a distribution-signed binary. Release builds now correctly require an Apple Distribution certificate; Debug builds keep "Apple Development" for day-to-day device testing. - iosApp/ExportOptions.plist: add distribution export config template Provides ready-to-use options for xcodebuild -exportArchive targeting app-store (TestFlight + App Store). Includes inline comments for ad-hoc / enterprise variants. DEVELOPMENT_TEAM is intentionally omitted — each maintainer supplies their own Team ID at build time. - ci.yml: add Release framework build + Release device compile-check Extends the ios CI job to also compile :shared:linkReleaseFrameworkIosArm64 and run xcodebuild in Release configuration against iphoneos SDK with CODE_SIGNING_ALLOWED=NO. This catches any Release-only compile errors (different optimisation flags, stripped symbols) before they reach an actual distribution attempt. - iosApp/README.md: add TestFlight / App Store Distribution section Documents prerequisites, archive + export CLI workflow, version bumping strategy, and the encryption declaration rationale so maintainers and contributors have a clear path to submission. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
Android debug APKArtifact:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Makes the iOS app ready for TestFlight and App Store submission. All changes are code-complete and require no manual decision to merge — except the three items listed below under Your decisions.
Changes
iosApp/iosApp/Info.plist—ITSAppUsesNonExemptEncryption = falseRequired for every App Store / TestFlight upload. Without this key Apple holds the binary and asks for clarification before it appears in TestFlight. The value is
falsebecause the app uses only standard HTTPS (Ktor + NSURLSession/Darwin engine), which qualifies as exempt encryption under U.S. Export Administration Regulations (EAR §740.17(b)(3)(i) — standard security protocols). No annual self-classification report is required.iosApp/iosApp.xcodeproj/project.pbxproj— ReleaseCODE_SIGN_IDENTITY→"Apple Distribution""Apple Development"certificates are issued for development-device trust only — they cannot produce a binary accepted by App Store Connect. The Release configuration now correctly targets"Apple Distribution"(the modern umbrella identity that covers both the old"iPhone Distribution"and the newer App Store certificate type). Debug builds keep"Apple Development"unchanged for day-to-day device testing.iosApp/ExportOptions.plist— distribution export config templatexcodebuild -exportArchiverequires an options plist. This provides a ready-to-use file targetingapp-store/upload. Inline comments document how to switch toad-hoc(registered-device distribution without TestFlight) orenterprise.DEVELOPMENT_TEAMis intentionally omitted — each maintainer passes their own Team ID at build time so no personal/org ID is ever committed..github/workflows/ci.yml— Release compile coverageAdds two steps to the existing
iosCI job:linkReleaseFrameworkIosArm64— ensures the Release KMP framework compiles (different Kotlin/Native optimisation tier from Debug)xcodebuild -configuration Release -sdk iphoneos CODE_SIGNING_ALLOWED=NO— compile-checks the Xcode project under the same code path that a real distribution build would use, catching Release-only errors before they surface in a submission attemptiosApp/README.md— TestFlight / App Store Distribution sectionDocuments:
ITSAppUsesNonExemptEncryption = falseis correct and sufficient)Decisions (required before first TestFlight upload — not needed to merge this PR)
+com.garfiec.librechat.iosmust be registered before any build can be uploaded. Free with a paid Apple Developer Program membership.DEVELOPMENT_TEAMwhen archivingDEVELOPMENT_TEAM=XXXXXXXXXXon the CLIfastlane match) is a non-trivial separate PR. The current CI job verifies the build compiles clean; actual IPA export and upload require signing secrets that are outside the scope of this PR.Testing