Quick Action APIs in Lightning Experience

A lightning:quickActionAPI component allows you to access methods for programmatically controlling quick actions on record pages. This component is supported in Lightning Experience and supports utility pop-out. This component requires API version 43.0 and later.

Required Editions
Available in: Lightning Experience
Available in: Group, Professional, Enterprise, Performance, Unlimited, and Developer Editions

For example, if you have a custom Aura component that displays Knowledge articles, you can use the lightning:quickActionAPI component to attach and send a Knowledge article from your custom component using the Email quick action on the case record page.

To access these methods, create an instance of the lightning:quickActionAPI component inside your Aura component or page and assign an aura:id attribute to it.

<lightning:quickActionAPI aura:id="quickActionAPI"/>

This component provides similar functionality to the Publisher APIs in Salesforce Classic.

Sample Code

This example creates two buttons that interact with the Update Case quick action on a case record page in Lightning Experience. The controller code uses the following Quick Action API methods: selectAction, setActionFieldValues, and invokeAction.

Component code:

<aura:component implements="flexipage:availableForRecordHome" description="My Lightning Component">
  <lightning:quickActionAPI aura:id="quickActionAPI" />
  <div>
    <lightning:button label="Select Update Case Action" onclick="{!c.selectUpdateCaseAction}" />
    <lightning:button label="Update Case Status Field" onclick="{!c.updateCaseStatusAction}" />
  </div>
</aura:component>

Controller code:

({
  selectUpdateCaseAction: function (cmp, event, helper) {
    var actionAPI = cmp.find("quickActionAPI");
    var args = { actionName: "Case.UpdateCase" };
    actionAPI
      .selectAction(args)
      .then(function (result) {
        // Action selected; show data and set field values
      })
      .catch(function (e) {
        if (e.errors) {
          // If the specified action isn't found on the page,
          // show an error message in the my component
        }
      });
  },

  updateCaseStatusAction: function (cmp, event, helper) {
    var actionAPI = cmp.find("quickActionAPI");
    var fields = {
      Status: { value: "Closed" },
      Subject: { value: "Sets by lightning:quickActionAPI component" },
      accountName: { Id: "accountId" },
    };
    var args = { actionName: "Case.UpdateCase", entityName: "Case", targetFields: fields };
    actionAPI
      .setActionFieldValues(args)
      .then(function () {
        actionAPI.invokeAction(args);
      })
      .catch(function (e) {
        console.error(e.errors);
      });
  },
});
  • Quick Action API Considerations

    Before working with the Lightning Quick Action JavaScript API methods, review some considerations that might impact your implementation.

  • getAvailableActions

    Allows custom components to get a list of the available actions on a record page.

  • getAvailableActionFields

    Allows custom components to get a list of the available fields for a specific action on a record page.

  • getCustomAction

    Allows custom components to access a custom quick action and pass data or messages to it.

  • getSelectedActions

    Allows custom components to access selected quick actions on a record page.

  • invokeAction

    Allows custom components to save or submit the quick action on a record page.

  • refresh

    Refreshes the current record page.

  • selectAction

    Allows custom components to select and focus on a quick action on a record page.

  • setActionFieldValues

    Allows custom components to select a quick action on a record page and then specify field values for that action.

See Also