fsl-mobile-app-setup

Use this skill when configuring, extending, or troubleshooting the Salesforce Field Service (FSL) Mobile app for field technicians — including offline priming strategy, app extensions, deep linking, and custom branding. Trigger keywords: FSL mobile, Field Service mobile app, offline priming, mobile extension toolkit, app extensions for field service. NOT for standard Salesforce Mobile app configuration, Lightning App Builder layouts for desktop, or Field Service Lightning dispatcher console setup.

Best use case

fsl-mobile-app-setup is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use this skill when configuring, extending, or troubleshooting the Salesforce Field Service (FSL) Mobile app for field technicians — including offline priming strategy, app extensions, deep linking, and custom branding. Trigger keywords: FSL mobile, Field Service mobile app, offline priming, mobile extension toolkit, app extensions for field service. NOT for standard Salesforce Mobile app configuration, Lightning App Builder layouts for desktop, or Field Service Lightning dispatcher console setup.

Teams using fsl-mobile-app-setup should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/fsl-mobile-app-setup/SKILL.md --create-dirs "https://raw.githubusercontent.com/PranavNagrecha/AwesomeSalesforceSkills/main/skills/admin/fsl-mobile-app-setup/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/fsl-mobile-app-setup/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How fsl-mobile-app-setup Compares

Feature / Agentfsl-mobile-app-setupStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use this skill when configuring, extending, or troubleshooting the Salesforce Field Service (FSL) Mobile app for field technicians — including offline priming strategy, app extensions, deep linking, and custom branding. Trigger keywords: FSL mobile, Field Service mobile app, offline priming, mobile extension toolkit, app extensions for field service. NOT for standard Salesforce Mobile app configuration, Lightning App Builder layouts for desktop, or Field Service Lightning dispatcher console setup.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# FSL Mobile App Setup

This skill activates when a practitioner needs to configure, extend, or troubleshoot the Salesforce Field Service (FSL) Mobile native app — including offline data priming, LWC or HTML5 app extensions, deep linking, and custom branding. It does not cover the standard Salesforce Mobile app or the FSL dispatcher console.

---

## Before Starting

Gather this context before working on anything in this domain:

- Confirm the org has Field Service and Field Service Mobile licenses provisioned. The FSL Mobile app is a distinct native iOS/Android application — it is NOT the standard Salesforce Mobile app and does not share the same configuration surface.
- The most common wrong assumption is that FSL Mobile renders the same Lightning pages as desktop or standard mobile. It does not. It has its own offline-first data model, its own extension framework, and its own priming pipeline.
- Key platform constraints: offline priming is limited to 50 records per related list and 1,000 total page references per resource. Exceeding 1,000 page references causes a silent failure — no error is surfaced to the user or admin.

---

## Core Concepts

### FSL Mobile Is a Separate Native App

The Salesforce Field Service Mobile app (FSL Mobile) is a distinct native application for iOS and Android, separate from the standard Salesforce Mobile app. It is built for offline-first operation: technicians download their data during a priming sync, then work without a network connection. When connectivity is restored, changes sync back to the org. Configuration is done through the Field Service Mobile Settings in Setup, not through Mobile App Builder or standard app configuration.

### Offline Priming Hierarchy

Offline priming determines which records are downloaded to the technician's device. The priming hierarchy is structured as:

1. **Resource** (the technician's ServiceResource record)
2. **Service Appointments** assigned to the resource
3. **Work Orders** linked to those appointments
4. **Work Order Line Items** under those work orders

Each level follows the one above. You cannot prime work order line items unless work orders are primed. The platform enforces a limit of **50 records per related list** and **1,000 total page references per resource** across the priming run. Exceeding 1,000 page references results in silent truncation — no error is raised, and technicians silently lose access to some records without knowing why.

### App Extension Models

There are two extension models for adding custom screens and actions to FSL Mobile:

1. **LWC Quick Actions and Global Actions (recommended):** Lightning Web Components surfaced as quick actions on supported objects (Work Order, Service Appointment, etc.) or as global actions. These use Lightning Data Service (LDS) for data access and are the preferred modern approach. LWC components run inside the app's WebView container and support standard `@wire` adapters and `uiRecordApi` calls.

2. **HTML5 Mobile Extension Toolkit (legacy):** A proprietary toolkit for building HTML5-based extensions embedded in the app. It does NOT support LWC, Lightning Data Service, or Aura. Data access must go through Apex REST endpoints explicitly. Use only when LWC quick actions cannot meet the requirement (e.g., complex multi-step wizards introduced before LWC support landed).

### Deep Linking

FSL Mobile supports a custom URI scheme that allows external apps (e.g., mapping apps, barcode scanners, third-party scheduling tools) to deep link into specific records or actions inside the FSL Mobile app. The deep link carries a data payload encoded in the URI. The maximum supported payload size is **1 MB per link**. Payloads exceeding 1 MB will be silently dropped or cause link failure. Deep link configuration is managed through the Field Service Mobile Settings connected app and the URI scheme registered with the mobile OS.

### Custom Branding

Custom branding (splash screen, app icon, logo, color scheme) for FSL Mobile requires the **Mobile App Plus add-on license**. Without this add-on, the app uses the default Salesforce Field Service branding. Configuring branding without the add-on will appear to succeed in Setup but the changes will not be reflected in the app.

---

## Common Patterns

### Pattern: Offline-First Data Coverage for Technicians

**When to use:** Technicians report missing work orders, line items, or related records when they go offline.

**How it works:**
1. Map all objects technicians need offline against the priming hierarchy (resource → appointments → work orders → line items).
2. For each related list added to the priming config, count the expected maximum records in that list per resource per day. Keep each related list at or below 50 records.
3. Sum all page references across all related lists for a typical resource. Keep the total under 1,000.
4. Enable offline sync for each required object in Field Service Mobile Settings → Data Sync.
5. Test by simulating a full offline priming sync on a test device and verifying all records appear before disabling the network.

**Why not the alternative:** Simply enabling "offline" for an object is not enough. Without configuring the priming hierarchy explicitly, the platform does not know which records belong to which resource, and the technician's device will either be empty or over limit.

### Pattern: LWC Quick Action as App Extension

**When to use:** Adding a custom data-capture screen (e.g., capture a reading, scan a barcode result, log a safety checklist) directly on a Work Order or Service Appointment in FSL Mobile.

**How it works:**
1. Build a standard LWC component with `@api recordId` to accept context.
2. Use `@wire(getRecord)` or `uiRecordApi` for reads; use `updateRecord` or an Apex method for writes.
3. Create a Quick Action on the Work Order (or target object) of type "Lightning Web Component" pointing to the LWC.
4. In Field Service Mobile Settings, add the quick action to the relevant action list for the object.
5. Test in the FSL Mobile app — quick actions appear in the action bar at the bottom of the record detail page.

**Why not the alternative:** The HTML5 Mobile Extension Toolkit requires Apex REST endpoints, cannot use LDS, and adds significant boilerplate. Use LWC quick actions unless you have a legacy toolkit already in place or a specific UI requirement LWC cannot meet.

---

## Decision Guidance

| Situation | Recommended Approach | Reason |
|---|---|---|
| New custom screen on Work Order in FSL Mobile | LWC Quick Action | Uses LDS, less boilerplate, supported path forward |
| Legacy HTML5 extension already exists and needs minor updates | Keep HTML5 Extension Toolkit, don't rewrite unless scope permits | Rewriting carries risk; toolkit is still supported |
| Technicians missing records offline | Audit priming hierarchy and page reference count | Silent truncation at 1,000 refs; 50 records per related list max |
| Need custom app icon/branding for FSL Mobile | Confirm Mobile App Plus add-on before configuring | Without add-on, branding changes do not apply |
| External app needs to launch FSL Mobile on a specific record | Deep link via custom URI scheme | Built-in mechanism; keep payload under 1 MB |
| Technician needs to access a Visualforce page inside FSL Mobile | Not directly supported; use LWC quick action or HTML5 extension instead | VF is not rendered in FSL Mobile container |

---

## Recommended Workflow

Step-by-step instructions for an AI agent or practitioner working on this task:

1. **Confirm prerequisites:** Verify the org has Field Service and Field Service Mobile licenses. Confirm the target users have the Field Service Mobile permission set and the `FieldServiceMobileUser` permission. Establish the FSL Mobile app version currently deployed.
2. **Map offline data requirements:** List every object and related list technicians need while offline. For each related list, estimate maximum records per resource per day. Confirm all lists are within the 50-record per related list limit and the total page references per resource remain below 1,000.
3. **Configure offline priming:** In Setup → Field Service Mobile Settings, enable Data Sync for each required object. Map the priming configuration to the resource → appointment → work order → line item hierarchy. Add related lists only for objects within the hierarchy.
4. **Design and build app extensions:** For custom actions or screens, choose LWC Quick Actions (preferred) or HTML5 Mobile Extension Toolkit (legacy). Scaffold the LWC with `@api recordId`, use `uiRecordApi` for data access, and register the quick action on the target object. Add the action to the FSL Mobile action list in Field Service Mobile Settings.
5. **Configure deep links if needed:** Register the custom URI scheme in the connected app settings for FSL Mobile. Define target record types and action identifiers. Keep all payloads below 1 MB. Test deep links from the source app on a physical device.
6. **Configure branding if licensed:** Confirm the Mobile App Plus add-on is provisioned before attempting branding changes. Upload assets in Field Service Mobile Settings → Branding. Branding changes require a republish of the connected app and a reinstall or cache clear on the device.
7. **Validate and test end-to-end on device:** Perform a full priming sync on a test device. Disable the network and verify all expected records are accessible. Test each quick action. Test deep links from external apps. Confirm no silent priming failures by cross-referencing record counts on device against expected counts in the org.

---

## Review Checklist

Run through these before marking work in this area complete:

- [ ] Field Service and Field Service Mobile licenses confirmed on affected user profiles
- [ ] Offline priming hierarchy configured (resource → appointments → work orders → line items)
- [ ] Each related list in priming config has 50 or fewer records in production data range
- [ ] Total page references per resource confirmed below 1,000
- [ ] App extensions use LWC Quick Actions (or HTML5 toolkit with documented justification)
- [ ] Deep link payloads verified below 1 MB if deep linking is in scope
- [ ] Custom branding only configured if Mobile App Plus add-on is licensed
- [ ] End-to-end offline test completed on physical iOS and/or Android device
- [ ] Technician user profiles have correct permission sets and app access

---

## Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

1. **Silent page reference truncation at 1,000** — If a resource's total page references across all priming objects and related lists exceeds 1,000, the priming sync completes without error but silently drops records. Technicians arrive on-site without the data they need. There is no warning in Setup or in the app. Monitor page reference counts proactively by auditing object counts before rollout.

2. **FSL Mobile is not the standard Salesforce Mobile app** — Configuration done in Mobile App Builder, App Manager (for the Salesforce app), or standard Lightning App pages has no effect on FSL Mobile. FSL Mobile has its own settings under Field Service Mobile Settings. Practitioners who configure the wrong surface waste significant time and wonder why changes don't appear in the app.

3. **HTML5 Mobile Extension Toolkit has no LWC or LDS support** — LLMs and practitioners familiar with modern LWC development may attempt to use `@wire`, `lightning-record-form`, or other LDS-backed components inside an HTML5 extension. These simply do not work. Data must be fetched via explicit REST calls to Apex endpoints exposed as REST resources.

4. **Custom branding silently does nothing without Mobile App Plus** — The branding configuration UI in Field Service Mobile Settings is always visible regardless of license. Saving branding assets without Mobile App Plus appears to succeed, but the changes are never applied to the app. Always verify the add-on is provisioned before doing branding work.

5. **Deep links are silently dropped above 1 MB** — There is no error surfaced to the user or the calling app when a deep link payload exceeds 1 MB. The link simply fails to open the target. Always test deep links with realistic worst-case payloads.

---

## Output Artifacts

| Artifact | Description |
|---|---|
| Offline priming configuration plan | Table mapping each required object to the priming hierarchy, with record count estimates and page reference totals |
| App extension type decision | Documented choice between LWC Quick Action and HTML5 toolkit, with rationale |
| Deep link specification | URI scheme, target record types, payload structure, and size budget |
| FSL Mobile rollout checklist | Completed review checklist with license confirmation, priming test results, and device test sign-off |

---

## Related Skills

- lwc/lwc-offline-and-mobile — LWC-specific offline and mobile patterns for components running inside the FSL or standard Salesforce Mobile app
- admin/field-service-dispatcher-console — Dispatcher console configuration, scheduling optimization, and territory management (distinct from mobile app setup)

Related Skills

shield-kms-byok-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Configure Shield Platform Encryption with customer-supplied (BYOK) or customer-held (Cache-Only Key Service) tenant secrets, rotate them, and recover. NOT for Classic Encryption or field masking.

lwc-offline-and-mobile

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing or reviewing Lightning Web Components for the Salesforce mobile app, mobile device capabilities, or offline-aware behavior. Triggers: 'lightning/mobileCapabilities', 'mobile lwc', 'offline lwc', 'supported mobile app only', 'barcode scanner availability'. NOT for Mobile SDK or fully native app architecture unless the decision is whether LWC in the Salesforce mobile app is sufficient.

lwc-mobile-offline-and-briefcase

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when designing LWCs that must work offline in the standard Salesforce Mobile App, and when configuring Briefcase Builder rules to prime records onto user devices. Covers form-factor detection (`@salesforce/client/formFactor`), Lightning Data Service offline-cache behavior, Briefcase priming-rule design, conflict resolution on reconnect, and the legacy SmartStore / IndexedDB picture for context. Triggers: 'briefcase builder rule design', 'lwc not working offline', 'how do I prime records to user devices', 'sync conflict on reconnect', 'offline draft persistence in lwc'. NOT for Field Service Mobile offline priming (use admin/fsl-mobile-app-setup or architect/fsl-offline-architecture — FSL has its own priming pipeline). NOT for general LWC mobile container patterns / device APIs (use lwc/lwc-offline-and-mobile).

slack-salesforce-integration-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when setting up or troubleshooting the Salesforce for Slack managed app — including connecting a Salesforce org to a Slack workspace, configuring the three-party admin handshake, linking Slack channels to Salesforce records, enabling record preview sharing, and managing org-level limits. Triggers on: Salesforce for Slack app not connecting, Slack org connection setup, Salesforce record sharing in Slack, Slack workspace admin approval, connecting Salesforce to Slack. NOT for building custom Slack apps or Slack bots (separate development platform), not for Slack Workflow Builder Salesforce connector (use slack-workflow-builder skill), not for Flow-based Slack messaging (use flow-for-slack skill).

salesforce-maps-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use when configuring Salesforce Maps (formerly MapAnything) — territory planning, route optimization, live tracking, geo-grid visualizations, and check-in/check-out workflows for Sales or Service field reps not on Field Service. Covers package installation order (Maps + Maps Advanced + Maps Routing/Live Tracking add-ons), the MapsTerritoryPlan / MapsAdvancedRoute / MapsLayer object family, base-data syncs (Geocoding and Routing services), and integration with Sales and Service Cloud records. Triggers: 'Salesforce Maps setup', 'MapAnything migration', 'territory planning by polygon', 'route optimization for sales reps', 'live tracking field reps', 'plot accounts on a map', 'check-in to the closest account'. NOT for Field Service Lightning territory and scheduling (use admin/fsl-scheduling-optimization-design and data/fsl-territory-data-setup) — Maps and FSL are different products. NOT for Consumer Goods Cloud retail visit planning (use admin/consumer-goods-cloud-setup) — RoutePlan/Visit objects are CG-specific. NOT for Tableau / CRM Analytics geo charts.

private-connect-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Configure Private Connect between Salesforce and AWS/Azure for traffic to stay on private networks. NOT for standard internet callouts.

net-zero-cloud-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring Salesforce Net Zero Cloud — including Scope 1/2/3 emission source modeling via the StnryAssetCrbnFtprnt / VehicleAssetCrbnFtprnt / Scope3CrbnFtprnt object families, emission factor library setup (EmssnFctr / EmssnFctrSet), DPE-driven carbon calculation jobs, supplier engagement scoring, and CSRD / ESRS / TCFD disclosure pack mapping. Triggers on: Net Zero Cloud setup, Sustainability Cloud carbon accounting, Scope 1 2 3 emissions Salesforce, emission factor library, supplier engagement Net Zero, ESG disclosure pack mapping. NOT for ESG content scoring (use Marketing Cloud), NOT for general financial reporting (use Accounting Subledger), NOT for energy-only utility billing (use Energy & Utilities Cloud).

named-credentials-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Named Credentials and External Credentials configuration for secure outbound callouts: per-user vs per-org authentication, legacy vs enhanced Named Credentials, external credential principal types (Named Principal, Per User, Anonymous), OAuth 2.0 and JWT flows, and credential deployment. NOT for callout code patterns, Apex HTTP implementation, or OAuth server-side flow debugging.

manufacturing-cloud-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when configuring Salesforce Manufacturing Cloud — including Sales Agreement setup, Account-Based Forecasting (ABF) recalc jobs, run-rate management, Rebate Management programs, channel inventory tracking via Channel Revenue Management, and Group Membership / OrderItem-to-SalesAgreement reconciliation. Triggers on: Manufacturing Cloud setup, Sales Agreement Salesforce, account-based forecast recalculation, run rate manufacturing, rebate program setup, channel revenue management. NOT for general Sales Cloud opportunity-to-order flow (use standard Opportunity / Order), NOT for Field Service install-base management (use FSL skills), NOT for Automotive Cloud dealer modeling (use automotive-cloud-setup).

loyalty-management-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when setting up or extending Salesforce Loyalty Management — including program and currency creation, tier group design, qualifying vs. non-qualifying point currency separation, DPE batch job activation, partner loyalty configuration, and member portal setup on Experience Cloud. Triggers on: Loyalty Management setup, loyalty tier setup Salesforce, qualifying points vs redemption points, DPE batch job for loyalty, partner loyalty program Salesforce, loyalty member portal. NOT for Marketing Cloud engagement program design (separate product), not for B2B loyalty via Sales Cloud (standard opportunity, not loyalty program), not for general Experience Cloud site setup (use experience-cloud-setup skill).

automotive-cloud-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when setting up or extending Salesforce Automotive Cloud — including the Vehicle / VehicleDefinition data model, dealer-OEM relationship modeling via AccountAccountRelation, ActionableEvent orchestration for service campaigns and recalls, FinancialAccount lifecycle for retail-credit deals, and DriverQualification / WarrantyTerm extensions. Triggers on: Automotive Cloud setup, Salesforce Automotive Cloud data model, Vehicle vs VehicleDefinition, dealer hierarchy AccountAccountRelation, Automotive Cloud actionable events, recall campaign Salesforce. NOT for general Sales Cloud opportunity work on a vehicle product (use standard Opportunity), NOT for Manufacturing Cloud sales agreements (use manufacturing-cloud-setup), NOT for Field Service vehicle inventory (use FSL skills).

fsl-territory-data-setup

8
from PranavNagrecha/AwesomeSalesforceSkills

Use this skill when bulk loading Service Territory data: boundary polygons, ServiceTerritoryMember assignments, OperatingHours, TimeSlots, and territory hierarchy setup. Trigger keywords: service territory bulk load, KML polygon import FSL, ServiceTerritoryMember migration, OperatingHours data setup, PolygonUtils Apex. NOT for Enterprise Territory Management (ETM/Account Territories), admin-level territory configuration UI, or scheduling policy setup.