Newer Version Available

This content describes an older version of this product. View Latest

Communicating Across the DOM with Lightning Message Service (Beta)

Use the Lightning Message Service API to communicate across the DOM, between Aura components, Visualforce pages, and Lightning web components. If you're switching from Salesforce Classic to Lightning Experience, you can now build Lightning web components that can communicate with existing Visualforce pages or Aura components. Lightning Message Service is available in Lightning Experience only.

As a beta feature, Lightning Message Service is a preview and isn’t part of the “Services” under your master subscription agreement with Salesforce. Use this feature at your sole discretion, and make your purchase decisions only on the basis of generally available products and features. Salesforce doesn’t guarantee general availability of this feature within any particular time frame or at all, and we can discontinue it at any time. Lightning Message Service is for evaluation purposes only, not for production use. It’s offered as is and isn’t supported, and Salesforce has no liability for any harm or damage arising out of or in connection with it. All restrictions, Salesforce reservation of rights, obligations concerning the Services, and terms for related Non-Salesforce Applications and Content apply equally to your use of this feature. You can provide feedback and suggestions for Lightning Message Service in the Trailblazer Community.

Note

To access Lightning Message Service in Visualforce, use the $MessageChannel global variable. A message is a serializable JSON object. Examples of data that you can pass in a message include strings, numbers, objects, and booleans. A message cannot contain functions and symbols. The $MessageChannel global variable is only available in Lightning Experience.

Use Message Channels Created Within Your Org

Here's an example of using a Lightning Message Channel developed within your org.

Here, we reference a custom message channel with a formula expression {!$MessageChannel.SampleMessageChannel__c}. This expression creates a token that we assign to the variable SAMPLEMC. This token is unique to your custom message channel and can be used within the Lightning Message Service API methods. The syntax SampleMessageChannel__c refers to a custom instance of the LightningMessageChannel metadata type. The __c suffix indicates that it is custom, but note that it is not a custom object. See Create a Message Channel to learn more.

If your org has a namespace, do not include it in your message channel expression. For example, if your org’s namespace is MyNamespace, the message channel expression remains "{!$MessageChannel.SampleMessageChannel__c}".

Use Message Channels Created Outside Your Org

To use message channels from packages created by developers outside of your org, reference them with the syntax {!$MessageChannel.Namespace_name__c}. For example, if SampleMessageChannel was not local to your org and came from a package with the namespace SamplePackageNamespace, the syntax would be {$MessageChannel.SamplePackageNamespace__SampleMessageChannel__c}.