LWC buttons and components used as Lightning Quick Actions or embedded on record pages are subject to several constraints in the Salesforce mobile app:
force:lightningQuickAction or force:lightningQuickActionWithoutHeader cannot surface in the mobile action bar. Even when implemented, layout and behavior may differ from desktop.lightning-datatable is not supported on mobile. This component is not responsive and commonly causes truncated columns, broken layouts, or missing data on small screens.slds-grid_align-end or side-by-side button arrangements can feel cramped or be difficult to tap on small screens. Mobile-friendly layouts require full-width or spread buttons (slds-grid_align-spread).CloseActionScreenEvent may behave inconsistently. On certain Android device/OS combinations, dispatching CloseActionScreenEvent from inside an LWC Quick Action can result in a blank screen instead of properly dismissing the modal.connectedCallback or renderedCallback can silently fail on mobile, causing the component to not render.The Salesforce-recommended pattern for mobile-compatible button-triggered actions is to use a Screen Flow that calls Invocable Apex. This pattern is natively supported in the Salesforce mobile app and avoids the rendering and interface limitations of custom LWC components.
@InvocableMethod. This method will be called by the Flow and can accept record IDs, perform DML, and return results.public class MyInvocableAction {
@InvocableMethod(label='My Action Label' description='Performs the custom action')
public static List<Result> execute(List<Request> requests) {
List<Result> results = new List<Result>();
for (Request req : requests) {
// Apex logic here (queries, DML, etc.)
Result r = new Result();
r.message = 'Success';
results.add(r);
}
return results;
}
public class Request {
@InvocableVariable(required=true)
public Id recordId;
}
public class Result {
@InvocableVariable
public String message;
}
}
{!$Record.Id} or Flow input variable to the recordId input on the Apex action.force:lightningQuickAction or force:lightningQuickActionWithoutHeader, then nest the LWC inside the Aura wrapper.lightning-input | ✅ Supported | Handles focus and keyboard events correctly on iOS |
lightning-record-edit-form | ✅ Supported | Respects field-level security; no custom keyboard handling needed |
lightning-card | ✅ Supported | Card-based layout preferred over grid/table for mobile UX |
lightning-datatable | ❌ Not supported | Not responsive; causes display issues on small screens |
lightning-map | ⚠️ Limited | External API calls in lifecycle hooks may silently fail on mobile |
005385556

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.