Skip to content

Commit 60b1739

Browse files
authored
Merge pull request #4012 from wmathurin/dev
Expand README / Update documentation to reference External Client App
2 parents 99790c9 + 9e270ae commit 60b1739

2 files changed

Lines changed: 36 additions & 3 deletions

File tree

CLAUDE.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
The Salesforce Mobile SDK is a public, open-source SDK that enables developers to build mobile apps that integrate with the Salesforce platform. It is consumed by ISVs, SI partners, and internal Salesforce teams.
88

9+
**For user-facing overview and quick start**: See [readme.md](readme.md)
10+
911
**Key constraint**: This is a **public SDK**. Every change is visible to external developers. Backward compatibility, deprecation cycles, and semver discipline are non-negotiable.
1012

1113
## iOS Library Architecture
@@ -49,6 +51,9 @@ MobileSync
4951
- **Schemes**: Individual per library (`SalesforceSDKCore`, `SmartStore`, `MobileSync`, etc.) plus test schemes
5052

5153
### iOS Build & Test Commands
54+
55+
See [readme.md](readme.md) for basic setup. Commands below are for contributors running tests and analysis.
56+
5257
```bash
5358
# Initial setup (after clone)
5459
./install.sh
@@ -143,7 +148,7 @@ xcodebuild test -workspace SalesforceMobileSDK.xcworkspace \
143148
3. Follow BDD naming: `test_given[Precondition]_when[Action]_then[Expected]`
144149
4. Use existing test utilities and mocks already in the test targets. Don't create parallel mock infrastructure.
145150
5. Run the full test suite for the affected library after generation. Fix failures before committing.
146-
6. If the code under test requires a Connected App or sandbox org, note this clearly in the test documentation.
151+
6. If the code under test requires an External Client App or sandbox org, note this clearly in the test documentation.
147152
7. If test generation reveals tightly coupled or untestable code, flag this in the PR description as a refactoring opportunity — do not restructure production code just to make tests pass.
148153

149154
---
@@ -204,12 +209,12 @@ These rules apply when Claude Code operates as an agent in these repos:
204209

205210
Understanding these concepts is essential for working in this codebase:
206211

207-
- **Connected App or External Client App**: A Salesforce configuration that defines OAuth2 client credentials (consumer key, callback URI, scopes). Every Mobile SDK app requires one.
212+
- **External Client App or Connected App (legacy)**: A Salesforce configuration that defines OAuth2 client credentials (consumer key, callback URI, scopes). Every Mobile SDK app requires one. External Client Apps are the preferred model.
208213
- **Soup**: SmartStore's unit of storage — analogous to a database table. Has a name, index specs, and entries (JSON blobs).
209214
- **Smart SQL**: SmartStore's SQL dialect for querying across soups. Uses `{soupName:fieldPath}` syntax.
210215
- **Sync Target**: MobileSync's abstraction for defining what data to sync and how. Includes SOQL down targets, SOSL down targets, MRU targets, layout targets, metadata targets, and various up targets (standard, batch, advanced).
211216
- **User Agent**: The SDK constructs a specific user agent string that identifies the SDK version, app type, and platform. Don't override this.
212-
- **SalesforceSDKManager**: The singleton entry point for SDK configuration and lifecycle. Manages connected app settings, auth scopes, login behavior, and user account events.
217+
- **SalesforceSDKManager**: The singleton entry point for SDK configuration and lifecycle. Manages OAuth configuration settings, auth scopes, login behavior, and user account events.
213218
- **Hybrid Authentication**: Uses session IDs from login/refresh endpoints (instead of frontdoor URLs) for loading app content in WebViews.
214219
- **UI Bridge API**: Used to construct frontdoor URLs for opening Salesforce UIs in WebViews without re-authentication.
215220
- **Advanced Authentication**: Native browser login, bypassing the standard WKWebView for orgs requiring it.

readme.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,34 @@ See [release notes](https://github.com/forcedotcom/SalesforceMobileSDK-iOS/relea
3838
### Native Applications
3939
The 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.
4040

41+
## Libraries
42+
43+
| Library | Purpose |
44+
|---------|---------|
45+
| **SalesforceSDKCommon** | Shared utilities and base protocols |
46+
| **SalesforceAnalytics** | Telemetry and event tracking |
47+
| **SalesforceSDKCore** | OAuth2 authentication, REST API, account management |
48+
| **SmartStore** | Encrypted local storage (SQLCipher) |
49+
| **MobileSync** | Data synchronization framework |
50+
51+
## Getting Started
52+
53+
### Using the SDK (via forceios)
54+
55+
```bash
56+
# Install CLI
57+
npm install -g forceios
58+
59+
# Create app from template
60+
forceios create --appname MyApp --packagename com.mycompany.myapp --organization "My Company"
61+
```
62+
63+
See templates for complete usage examples.
64+
65+
### Building from Source
66+
67+
See [Setting up the repo](#setting-up-the-repo) above for clone and setup instructions. Once setup is complete, open `SalesforceMobileSDK.xcworkspace` in Xcode.
68+
4169
Documentation
4270
==
4371

0 commit comments

Comments
 (0)