
Building Mobile Apps
Route a solo builder to the right Salesforce Mobile SDK or Agentforce SDK skill before implementing native iOS or Android login, offline sync, or in-app agents.
Overview
Building-mobile-apps is an agent skill for the Build phase that routes Salesforce native iOS and Android work to the correct Mobile SDK or Agentforce SDK child skill after disambiguating platform and SDK family.
Install
npx skills add https://github.com/forcedotcom/sf-skills --skill building-mobile-appsWhat is this skill?
- Entry router for Salesforce native mobile on iOS and Android—does not implement features itself.
- Disambiguates Mobile SDK vs Agentforce SDK and whether both may be needed in one app.
- Asks clarifying questions before routing when intent could map to either SDK family.
- Trigger phrases cover Mobile SDK setup, MobileSync/SmartStore offline, and Agentforce chat embed.
- Explicit SKIP rules for React Native/Flutter without Salesforce, LWC-only, and non-Salesforce mobile.
- Disambiguates two SDK families: Mobile SDK and Agentforce SDK.
- Routing table covers platform-specific child skills for iOS and Android.
Adoption & trust: 1 installs on skills.sh; 517 GitHub stars.
What problem does it solve?
You know you need a Salesforce mobile experience in Swift or Kotlin but are unsure which SDK path and which platform-specific skill to open first.
Who is it for?
Solo builders starting a Salesforce-connected native app with OAuth login, offline data, or embedded Agentforce agents.
Skip if: Non-Salesforce mobile apps, React Native/Flutter/Ionic without Salesforce APIs, generic mobile UI-only requests, or LWC/Experience Cloud web work.
When should I use this skill?
User says build a Salesforce iOS app, add Salesforce login to Android, set up Mobile SDK, MobileSync/SmartStore offline, embed Agentforce in mobile, or asks to create or extend a Salesforce mobile experience in Swift or
What do I get? / Deliverables
The agent confirms Mobile SDK vs Agentforce SDK (and iOS vs Android) and hands off to the matching child skill instead of implementing features in the router.
- Confirmed SDK family and platform choice
- Handoff to the correct platform-specific Salesforce mobile child skill
Recommended Skills
Journey fit
Salesforce-connected mobile apps are built after validation, when you wire platform SDKs and org auth into a shipped product surface. Integrations is the canonical shelf because the skill disambiguates SDK families and platforms rather than generic UI or web-only Salesforce surfaces.
How it compares
Use this router before diving into platform SDK docs—skip it when you are not integrating with Salesforce mobile SDKs at all.
Common Questions / FAQ
Who is building-mobile-apps for?
Indie and solo developers building Salesforce-native iOS or Android apps who need the agent to pick the right Salesforce SDK skill path before writing Swift or Kotlin integration code.
When should I use building-mobile-apps?
Use it in Build → integrations when you are adding Salesforce login, Mobile SDK, MobileSync/SmartStore offline, or Agentforce chat to a native app; skip it for web LWC-only work or non-Salesforce mobile stacks.
Is building-mobile-apps safe to install?
It is a routing skill under Apache-2.0 with no implementation steps here; review the Security Audits panel on this Prism page and inspect child skills before granting network or secrets access in your agent.
SKILL.md
READMESKILL.md - Building Mobile Apps
# Salesforce Mobile Route the user to the right SDK-family skill for building Salesforce-connected mobile apps. Do not implement features here; child skills own scenario detection and step-by-step instructions. ## Before routing Disambiguate on two dimensions: **SDK family** (Mobile SDK vs. Agentforce SDK) and **platform** (iOS vs. Android). They are not mutually exclusive — an app can use both SDKs. If the user's intent could plausibly map to either SDK, ask before routing. Guessing wrong wastes the user's time because the child skills are platform- and SDK-specific. ## Routing — which SDK family? | User's situation | SDK | |---|---| | Authenticating end users to Salesforce, syncing records (MobileSync), storing data offline (SmartStore), biometric login, push notifications, REST integration | **Mobile SDK** | | Embedding an Agentforce agent — chat UI, agent conversations, conversational features as the primary surface | **Agentforce SDK** | | Both (data-driven app with an embedded agent) | **Mobile SDK first**, then **Agentforce SDK** layered on top | ### Tiebreakers when both seem to apply - Is the agent the *primary surface* (chat-first app), or a *feature inside* an otherwise data-driven app? - Primary → Agentforce SDK - Feature → Mobile SDK; embed the agent via Agentforce SDK alongside it - Are end users authenticating into Salesforce data? - Yes → Mobile SDK is required (Agentforce SDK can be added on top). - No → Agentforce SDK alone is likely sufficient (it uses guest auth). - Asking about offline storage, sync, REST, push, or biometrics? → Mobile SDK. - Asking about agent conversations, chat UI, or streaming responses? → Agentforce SDK. When still unclear, ask the user directly. ## Routing — which platform? | Platform | Mobile SDK skill | Agentforce SDK skill | |---|---|---| | iOS (Swift) | `ios-mobile-sdk` | `integrate-agentforce-ios` | | Android (Kotlin) | `android-mobile-sdk` | `integrate-agentforce-android` | If the user wants both platforms, route to each child skill separately — they are independent. ## Combined workflows (Mobile SDK + Agentforce SDK) When an app needs both: 1. Route to the Mobile SDK platform skill first to scaffold and authenticate. 2. Route to the Agentforce SDK platform skill to layer the agent surface. 3. Treat each child skill's instructions as authoritative for its SDK; do not merge their steps. Each SDK owns its own auth setup, dependency installation order, and initialization sequence — interleaving them produces conflicting config and broken init order. This sequencing is the only multi-skill logic this skill owns. Everything else lives inside the child skills. ## Loading a child skill Invoke the child skill by name through the harness. If it is not available locally, prompt the user to install it with `npx skills add <repo>`. If the user confirms (or has pre-authorized installs), run the command and load the child skill — do not make the user go figure out how to continue the workflow. If the user declines, stop and explain that the child skill owns the SDK's setup steps and the workflow cannot continue without it. Ea