{"id":32972041,"url":"https://github.com/forcedotcom/SalesforceMobileSDK-iOS","last_synced_at":"2025-11-16T16:01:31.499Z","repository":{"id":37892130,"uuid":"2338086","full_name":"forcedotcom/SalesforceMobileSDK-iOS","owner":"forcedotcom","description":"iOS SDK for Salesforce","archived":false,"fork":false,"pushed_at":"2025-10-07T01:11:58.000Z","size":875721,"stargazers_count":555,"open_issues_count":11,"forks_count":430,"subscribers_count":86,"default_branch":"dev","last_synced_at":"2025-10-07T03:17:44.521Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/forcedotcom.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2011-09-06T23:13:57.000Z","updated_at":"2025-10-07T01:12:02.000Z","dependencies_parsed_at":"2024-04-24T14:40:58.203Z","dependency_job_id":"e60d983d-f01a-42ef-8112-20a9aedd93d0","html_url":"https://github.com/forcedotcom/SalesforceMobileSDK-iOS","commit_stats":{"total_commits":6973,"total_committers":132,"mean_commits":52.82575757575758,"dds":0.7508963143553707,"last_synced_commit":"664d49497bcd6d02282a6c6d4fc853640c8981ac"},"previous_names":[],"tags_count":135,"template":false,"template_full_name":null,"purl":"pkg:github/forcedotcom/SalesforceMobileSDK-iOS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forcedotcom%2FSalesforceMobileSDK-iOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forcedotcom%2FSalesforceMobileSDK-iOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forcedotcom%2FSalesforceMobileSDK-iOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forcedotcom%2FSalesforceMobileSDK-iOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/forcedotcom","download_url":"https://codeload.github.com/forcedotcom/SalesforceMobileSDK-iOS/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forcedotcom%2FSalesforceMobileSDK-iOS/sbom","scorecard":{"id":406682,"data":{"date":"2025-08-11","repo":{"name":"github.com/forcedotcom/SalesforceMobileSDK-iOS","commit":"6b9abc9ed3fe468a510a2f0a1ebedb0d2bb7f311"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":0,"reason":"dangerous workflow patterns detected","details":["Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/pr.yaml:82","Warn: untrusted code checkout '${{ github.event.pull_request.head.sha }}': .github/workflows/pr.yaml:31"],"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/nightly.yaml:1","Warn: no topLevel permission defined: .github/workflows/pr.yaml:1","Warn: no topLevel permission defined: .github/workflows/reusable-workflow.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":4,"reason":"binaries present in source code","details":["Warn: binary detected: external/ThirdPartyDependencies/sqlcipher/SQLCipher.xcframework/ios-arm64_arm64e/libsqlcipher-iphoneos.a:1","Warn: binary detected: external/ThirdPartyDependencies/sqlcipher/SQLCipher.xcframework/ios-arm64_x86_64-maccatalyst/libsqlcipher-catalyst.a:1","Warn: binary detected: external/ThirdPartyDependencies/sqlcipher/SQLCipher.xcframework/ios-arm64_x86_64-simulator/libsqlcipher-iphonesimulator.a:1","Warn: binary detected: external/ThirdPartyDependencies/sqlcipher/SQLCipher.xcframework/xros-arm64/libsqlcipher-xros.a:1","Warn: binary detected: external/ThirdPartyDependencies/sqlcipher/SQLCipher.xcframework/xros-arm64_x86_64-simulator/libsqlcipher-xrsimulator.a:1","Warn: binary detected: shared/common/build/tools/ant-contrib-1.0b3.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/pr.yaml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yaml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/pr.yaml/dev?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr.yaml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/pr.yaml/dev?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr.yaml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/pr.yaml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yaml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/pr.yaml/dev?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr.yaml:89: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/pr.yaml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/reusable-workflow.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/reusable-workflow.yaml/dev?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/reusable-workflow.yaml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/reusable-workflow.yaml/dev?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/reusable-workflow.yaml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/reusable-workflow.yaml/dev?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/reusable-workflow.yaml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/reusable-workflow.yaml/dev?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/reusable-workflow.yaml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/forcedotcom/SalesforceMobileSDK-iOS/reusable-workflow.yaml/dev?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/pr.yaml:40","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T21:28:18.480Z","repository_id":37892130,"created_at":"2025-08-18T21:28:18.480Z","updated_at":"2025-08-18T21:28:18.480Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284734138,"owners_count":27054622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-16T02:00:05.974Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-13T05:00:32.334Z","updated_at":"2025-11-16T16:01:31.493Z","avatar_url":"https://github.com/forcedotcom.png","language":"Objective-C","funding_links":[],"categories":["Mobile Development with Salesforce"],"sub_categories":["Mobile SDK"],"readme":"# Salesforce.com Mobile SDK for iOS\n[![Tests](https://github.com/forcedotcom/SalesforceMobileSDK-iOS/actions/workflows/nightly.yaml/badge.svg)](https://github.com/forcedotcom/SalesforceMobileSDK-iOS/actions/workflows/nightly.yaml)\n[![Known Vulnerabilities](https://snyk.io/test/github/forcedotcom/SalesforceMobileSDK-iOS/badge.svg)](https://snyk.io/test/github/forcedotcom/SalesforceMobileSDK-iOS)\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/forcedotcom/SalesforceMobileSDK-iOS?sort=semver)\n\n\nYou have arrived at the source repository for the Salesforce Mobile SDK for iOS.  Welcome!  There are two ways you can choose to work with the Mobile SDK:\n\n- If you'd like to work with the source code of the SDK itself, you've come to the right place!  You can browse sample app source code and debug down through the layers to get a feel for how everything works under the covers.  Read on for instructions on how to get started with the SDK in your development environment.\n- If you're just eager to start developing your own new application, the quickest way is to use our npm distribution package, called [forceios](https://npmjs.org/package/forceios), which is hosted on [npmjs.org](https://npmjs.org/).  Getting started is as simple as installing the npm package and launching your template app.  You'll find more details on the forceios package page.\n\nInstallation (do this first - really)\n==\nWorking with this repository requires working with git.  Any workflow that leaves you with a functioning git clone of this repository should set you up for success.  Downloading the ZIP file from GitHub, on the other hand, is likely to put you at a dead end.\n\n## Setting up the repo\nFirst, clone the repo:\n\n- Open the Terminal App\n- `cd` to the parent directory where the repo directory will live\n- `git clone https://github.com/forcedotcom/SalesforceMobileSDK-iOS.git`\n\nAfter cloning the repo:\n\n- `cd SalesforceMobileSDK-iOS`\n- `./install.sh`\n\nThis script pulls the submodule dependencies from GitHub, to finalize setup of the workspace.  You can then work with the Mobile SDK by opening `SalesforceMobileSDK.xcworkspace` from Xcode.\n\nThe Salesforce Mobile SDK for iOS requires iOS 17.0 or greater.  The install.sh script checks for this, and aborts if the configured SDK version is incorrect.\n\nIntroduction\n==\n\n### What's New in 13.2.0\nSee [release notes](https://github.com/forcedotcom/SalesforceMobileSDK-iOS/releases).\n\n### Native Applications\nThe Salesforce Mobile SDK provides the essential libraries for quickly building native mobile apps that interact with the Salesforce cloud platform. The OAuth2 library abstracts away the complexity of securely storing the refresh token or fetching a new session ID when it expires. The SDK also provides wrappers for the Salesforce REST API that you can use from both Swift and Objective-C.\n\nDocumentation\n==\n\n* [SalesforceSDKCommon Library Reference](http://forcedotcom.github.io/SalesforceMobileSDK-iOS/Documentation/SalesforceSDKCommon/html/index.html)\n* [SalesforceAnalytics Library Reference](http://forcedotcom.github.io/SalesforceMobileSDK-iOS/Documentation/SalesforceAnalytics/html/index.html)\n* [SalesforceSDKCore Library Reference](http://forcedotcom.github.io/SalesforceMobileSDK-iOS/Documentation/SalesforceSDKCore/html/index.html)\n* [SmartStore Library Reference](http://forcedotcom.github.io/SalesforceMobileSDK-iOS/Documentation/SmartStore/html/index.html)\n* [MobileSync Library Reference](http://forcedotcom.github.io/SalesforceMobileSDK-iOS/Documentation/MobileSync/html/index.html)\n* Salesforce Mobile SDK Development Guide -- [HTML](https://developer.salesforce.com/docs/atlas.en-us.mobile_sdk.meta/mobile_sdk/preface_intro.htm)\n* [Mobile SDK Trail](https://trailhead.salesforce.com/en/content/learn/trails/start-ios-appdev)\n\nDiscussion\n==\n\nIf you would like to make suggestions, have questions, or encounter any issues, we'd love to hear from you. Post any feedback you have on the [Mobile SDK Trailblazer Community](https://trailhead.salesforce.com/en/trailblazer-community/groups/0F94S000000kH0HSAU?tab=discussion\u0026sort=LAST_MODIFIED_DATE_DESC).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforcedotcom%2FSalesforceMobileSDK-iOS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforcedotcom%2FSalesforceMobileSDK-iOS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforcedotcom%2FSalesforceMobileSDK-iOS/lists"}