Salesforce Summer 20 - Top 10 features

As usual, Salesforce release includes large number of new features. Check some of the most exciting new features in Summer ‘20.

As the world is slowly getting back to normal and the pandemic is getting under control, we’re looking forward to summer. And with sun and beaches, as usual, the Salesforce’s new major release is coming. Summer ‘20 Release Notes are out, and by the looks of it, some really interesting and anticipated new features are coming our way.

The Summer ’20 sandbox preview was scheduled for May 8, 2020, and the Summer ’20 production release was originally scheduled for May 15, June 5, and June 12, 2020, but due to COVID-19, the release was postponed.

Now, sandbox preview is available from May 29-30, 2020. First production release window is scheduled for June 12, second for July 10, and third for July 17-18, 2020.

As usual, Salesforce release includes large number of new features. Check some of the most exciting new features in Summer ‘20.

1. Work Through Lists with Ease Using Split View for Standard Navigation

Do you often find yourself working through multiple records in a list? With split view, you can see a list view and a record side by side. To move on to a new record, select it from the split view, and the new record opens with the list still in view. Split view is great for going through records in sequence or for quickly skimming through a set of records. The split view panel is collapsible for extra flexibility.

To access split view, select Split View from the Display As dropdown menu. If you select split view for an object, that object automatically loads in split view until you change its Display As view.

2. View Records Using Full View

Now you have two record page view default options. Choose between the current view—now called Grouped view (1)—and the new Full view (2). Full view displays all details and related lists on the same page. If you’re transitioning to Lightning Experience, this view is similar to Salesforce Classic.

3. Trigger a Flow That Performs Actions After a Record Is Saved

Creating or updating a record can now trigger a flow that performs actions such as sending an email after the changes are saved to the database. Use record-changed flows to perform after-save actions and make before-save updates. You can replace most of your workflows and record-change processes that you created in Process Builder.
Configure Trigger window

4. Trigger a Flow When a Platform Event Message Is Received

With Flow Builder, you can do all your automation in one place. You can now build a flow that’s triggered when a platform event message is received.
How: Create a platform event flow. For Choose a Platform Event That Triggers the Flow, select a platform event.

5. Pass In the Record When Launching a Flow from a Lightning Page or a Quick Action

It’s now much easier to pass records into your flows. Each quick action automatically passes the record into the flow’s record variable named “recordId”. In Lightning App Builder, a simple checkbox lets the Lightning page pass the record into a record variable in the flow.
For a quick action, all you do now is create a record variable in your flow named “recordId” and ensure that it’s available for input.
New Resource window showing a variable with API Name set to recordId, Data Type set to Record, and Available for input selected

For a Lightning page, simply select Pass all field values from the record into this flow variable in Lightning App Builder.

Flow component in Lightning App Builder showing the “Pass all field values from the record into this flow variable” checkbox

6. Detect Text in an Image with Einstein OCR

Get optical character recognition (OCR) models that detect alphanumeric text in an image with Einstein OCR. Access the models from a single REST API endpoint. Each model has specific use cases, such as business card scanning, product lookup, and digitizing documents and tables.
How: When you call the API, you send in an image, and the JSON response contains various elements based on the value of the task parameter. The response JSON returns the text and coordinates of a bounding box (in pixels) for that text.

curl -X POST -H "Authorization: Bearer " -F sampleLocation="​240000/velka/emergency-evacuation-route-signpost.jpg" -F task="text" -F modelId="OCRModel"

Image of an emergency evacuation route sign

The response JSON returns the text and coordinates of a bounding box (in pixels) for that text.

  "task": "text",
  "probabilities": [
      "probability": 0.99937266,
      "label": "ROUTE",
      "boundingBox": {
        "minX": 582,
        "minY": 685,
        "maxX": 1151,
        "maxY": 815
      "probability": 0.99471515,
      "label": "EMERGENCY",
      "boundingBox": {
        "minX": 361,
        "minY": 208,
        "maxX": 1383,
        "maxY": 346
      "probability": 0.99469215,
      "label": "EVACUATION",
      "boundingBox": {
        "minX": 331,
        "minY": 438,
        "maxX": 1401,
        "maxY": 570
  "object": "predictresponse"

7. Voice: Intelligent Telephony Inside the Service Console

Service Cloud Voice is a brand new product that natively integrates intelligent telephony into Salesforce for a seamless agent experience. Agents can talk with your customers using an intuitive softphone that combines the power of Amazon Connect, including real-time call transcription. Bring voice calls and your digital channels together so your support agents can help customers at the right time using the channel that customers prefer.
This change applies to Lightning Experience in the Enterprise, Performance, and Unlimited editions. Service Cloud Voice is available for an additional cost as an add-on license.

8. Use the New Minimum Access User Profile

Now you can assign a least-privilege profile to a user, and then add more permissions via permission sets and permission set groups. The Minimum Access - Salesforce profile includes Access Activities, Chatter Internal User, Lightning Console User, and View Help Link permissions.

9. Speed Up Org Maintenance with the Optimizer App

Introducing the Salesforce Optimizer app, the interactive way to review and act on expert recommendations for maintaining your Salesforce org’s implementation. No need to install a package, just enable the app, click to run, and sit back while we inspect your org. Quickly identify issues that require immediate attention by using the sortable results list view. Read through the Salesforce recommendations to plan next steps. Use quick links on result pages to go directly to the applicable Setup page. Unlike the Salesforce Optimizer PDF report, which was only available in English, the app is translated into end-user languages.

The Salesforce Optimizer in console view.

10. Lightning Web Components updates

Using the Lightning message service now it is possible to communicate across the DOM - between Visualforce pages, Aura components, and Lightning web components, including components in a utility bar. You can use it to communicate between components within a single Lightning page or across multiple pages. If you’re switching from Salesforce Classic to Lightning Experience, you can now build Lightning web components that can communicate with existing Visualforce pages and Aura components. You can also use Lightning message service to communicate with softphones via Open CTI.

Using CSS module component it is possible to create a consistent look and feel for Lightning web components. Define styles in the CSS module, and import the module into the components that share those styles.

Customize a component’s behavior based on whether the current user has a specific permission. To check a user’s permission assignment, import Salesforce permissions from the @salesforce/userPermission and @salesforce/customPermission scoped modules.

The Element.getElementsByTagName() and Element.getElementsByClassName() APIs are now supported in the LightningElement base class for Lightning web components. A parent element can use getElementsByTagName() to get a list of its child elements with a specified tag. A parent element can use getElementsByClassName() to get a list of its child elements with a specified class.