Salesforce Spring 17 release – My favorite features

List of my favorite features in Salesforce Spring 17

Salesforce Spring 17

In this post, I would be only talking about Generally available (GA) features, excluding pilots and Beta. Saving those awesome features for suitable time to come. So, here are some of my favorite picks from Spring 17.

Composite Resource

Imagine we are doing REST API call from external system by creating Account first and then contact. In between if internet connection is gone or user closes browser and only Account created without contact ?  From Spring 17, we can reduce number of REST API calls made by combining them in single request. Advantage of this feature would be easier transaction management and API limit saving. You can have up to 25 subrequests in a single call. Up to 10 of these subrequests can be query operations, including Query, QueryAll, and “Query More” requests to obtain the next batch of query results.

reCAPTCHA on Web-to-Lead and Web-to-Case

If you are using Web-to-Lead or Web-to-Case for your Salesforce instance, you may already know the spamming problem. From this release, we can add reCAPTCHA in web forms which will reduce spamming problem drastically.

Salesforce Web-to-Lead Web-to-Case reCaptcha
Salesforce Web-to-Lead & Web-to-Case reCaptcha

In my opinion, even this is not full proof solution. If spammer knows your Org Id, they can easily copy paste Web-to-Lead or Web-to-Case code without reCAPTCHA and start over again. However, I will say, something is better than nothing.

Bookmark your favorite pages

Your Salesforce user navigates same pages over and over and everytime they use minimum 4-5 clicks ? Its time to save the click using favorite feature for Lightning user interface. We can bookmark any page in Salesforce and then navigate quickly by using favorite icon available at top right corner as shown in below image

Salesforce bookmark favorite URL
Salesforce bookmark favorite URL

Limit global search to specific Object

In Global search, now we can limit our search to specific object only, saving clicks and improving speed.

Step 1- Select Object to be searched in Global search
Step 1- Select Object to be searched in Global search
Step 2- Global Search in selected object
Step 2- Global Search in selected object

Filter Reports via URL Parameters

Like Salesforce classic, we can create a report URL to dynamically filter on report. We can use fv0 , fv1 … etc in URL to specify filter. fv0 represents first condition, fv1 second and so on. 

Example :

https://pre-releaseinstance-dev-ed.lightning.force.com/one/one.app#/sObject/00OB0000001rOUjMAM/view?t=1485139902948&fv0=uni
Salesforce Lightning Report Filter - Spring 17
Salesforce Lightning Report Filter – Spring 17

Run Flow with Lightning Skin

If you are a visual flow user, there are two good news for you. First, Visual flow now displayed in Lightning skin from Spring 17. However, you would need to enable it first using below steps

  • From Setup, go to Process Automation Settings
  • Select Enable Lightning Runtime for Flows

Two Column Layout in Flow

Do you remember my post regarding creating two column layouts in flow ? I know, I know, that you didn’t liked that JavaScript approach to convert flow into two column layout. And honestly, even I was not happy with the solution however that was the only way known to me but not now.

Well, its new year and gift from Salesforce 🙂 . Forget about my annoying post and Javascript I shared with you to convert flow into two column. Salesforce supports two column layout by default from Spring 17. All you have to do is enable Lightning Runtime in Flows and while invoking flow, pass below parameter in URL

/flow/flowName?flowLayout=twoColumn

and your flow will look like

Salesforce Flow Two Column Layout - Spring 17
Salesforce Flow Two Column Layout – Spring 17

Omni Channel Supervisor (Classic Only)

If your Salesforce instance using Omni channel then this feature would be your favorite topping over the delicious pizza. Using Omni Channel Supervisor, manager of CSR’s can now check the health of their call center using Agents, Queues and Work tabs. Below image shows, how it looks :

Omni Channel Supervisor Agent Summary
Omni Channel Supervisor Agent Summary
Omni Channel Supervisor Agent Detail
Omni Channel Supervisor Agent Detail

Content Security Policy (CSP) Trusted Sites

Sure you remember remote site settings used by Visualforce pages, which allows it to access third party resources like JavaScript, CSS etc. Questions is, how do we do for Lightning Component ?

The Lightning Component framework uses Content Security Policy (CSP) to control the source of content that can be loaded on a page. To use third-party APIs that make requests to an external (non-Salesforce) server, add the server as a CSP Trusted Site.

One way data binding for Lightning Components

In Lightning Component, we use {!expression} notation to bind values to components. However, this notation indicates bidirectional binding. Aura framework handles its life cycle and update Html DOM tree whenever value changes. As you understand, this render cycle could be heavier causing performance issue in application. If you only need to display value and don’t bother Aura framework to watch and render it, how do we do it ? From Spring 17, start using {#expression} notation for unbound expressions. It will improve performance of Lightning Component.

Performance warning in Console

To improve performance of Lightning component and make sure we follow best practices, Lightning CLI does fantabulous job. Taking one step further, Lightning component will display possible performance anti-pattern in browsers console as well from this release. Note : This would appear only if debug mode is enabled.

Share Lightning App with non-authenticated Users

Add the ltng:allowGuestAccess interface to your Lightning Out dependency app to make it available to users without requiring them to authenticate with Salesforce. This interface lets you build your app with Lightning components, and deploy it anywhere and to anyone. A Lightning Out dependency app with the ltng:allowGuestAccess interface can be used with Lightning Components for Visualforce and with Lightning Out.

Example :

<aura:application access="Global" extends="ltng:outApp" implemenets="ltng:allowGuestAccess">
 <aura:dependency resource="c:componentName" />
</aura:application>

Developer friendly error message for Lightning Components

Did you ever searched needle in hay stack ? You may have, if you encountered error during lightning component development and don’t have any idea about which resource bundle is responsible for that. Check your self how error looks like

Salesforce Lightning Component error Message before Spring 17
Salesforce Lightning Component error Message before Spring 17

Now, check below error message in Spring 17. That’s right, I know its party time

Salesforce Lightning Component error Message After Spring 17
Salesforce Lightning Component error Message After Spring 17

Monitor the Status of Apex Batch Jobs

Get more information about the status of Apex batch jobs. For a particular batch class, you can get information about parent jobs, such as submitted and completion dates and the number of batches processed or failed. This change applies to both Lightning Experience and Salesforce Classic.

Salesforce Apex Batch job - Spring 17
Salesforce Apex Batch job – Spring 17

Below are some other important changes in Apex classes

  1. Only One Test Setup Method per Class is Allowed
  2. Make Web Service Callouts from Chained Queueable Jobs

Below is slideshare file of same topic presented in Connecticut Salesforce Developer Group in Jan 2017.

 

Related posts