For End Users
List View Search
Use the new search bar to search the field data in your list views and find the records you need in record time.
Quick Text
Copying and pasting content is time consuming and tedious. Quick text is fast and easy. Users can insert predefined messages into emails, tasks, events, chats, and more.
Filter by Task Subject in Global Search Results
On the search results page, click Tasks in the sidebar, and then refine the results with your filter.
Note:
You can’t choose “Call” from a dropdown list; type it instead.
Recover Your Unsaved Text After Getting Timed Out
Sometimes your Lightning Experience session is interrupted, whether you’ve been inactive too long or you lost your connection. You used to see the same timeout message, regardless of how your session ended. Now the message that pops up is specific to your scenario and tells you how to recover unsaved text.
Change Your View with Display Density Settings
Two new Lightning Experience display density settings give you more control of how you want to view data without changing the page layout. Select one of the settings as the default, but users can choose their own display density at any time from the user profile menu.
Filter Search Results by Number Range
When the numbers matter, use filters to frame your search results. Zero in on opportunities that fall within a certain amount or probability range. Looking for that big presentation? You can also filter files by size.
Save Your Chatter Posts as Drafts in Salesforce
As you type a new post, Chatter saves your work to the My Drafts tab. Add files, links, images, mentions, hashtags, and any other rich text, because Salesforce saves it all.
You can select My Drafts and see the saved chatter posts.
Get the Kanban View for Recently Viewed Lists
Users can switch to the Kanban view from the Recently Viewed list view of almost any object.
Search for Records in the Kanban View
Users can hone in on the records they need faster by searching the selected list view from within the Kanban view.
Enter a search term in the search box to see matching records.
Add Multiple Account Team Members Faster in Lightning Experience
The days of slowly adding account team members one… by… one are finally over. Now your sales reps can add multiple account team members simultaneously, so they have more time for everything else on their to-do lists. Plus, reps see only the team member fields they’re allowed to edit.
Go Mobile with the File Detail Page
You now have access to the File Detail page on your mobile devices. On the details page, you can see a file preview and details about the file, like the owner and last modified date.
Assign a New Owner to Multiple Leads, Cases, or Custom Objects at One Time
Use the Change Owner page-level button to assign a new owner for up to 200 selected leads, cases, or custom objects. You can access the button in the page-level action menu in a list view or related list in standard table mode, or in Related List Quick Links.
Field History Tracking Data Deleted After 18 Months
Salesforce guarantees to retain your field history data for up to 18 months. To ensure high availability of data and accommodate the fast-growing data needs of our customers, up until now, we haven’t enforced the 18-month retention policy. Starting with the Winter ’19 release, we no longer retain field history beyond 18 months. To retain field history longer, you can purchase the Field Audit Trail add-on.
Support for IE9 and IE10 Is Ending
We will no longer support Internet Explorer (IE) 9 and 10 starting on April 5, 2019. We recommend that you move to a supported browser, such as Chrome, Firefox, Safari, Edge, or IE 11. After April 5, 2019, you can continue to access Salesforce Classic and Salesforce Tabs + Visualforce Communities using IE9 and IE10. However, Salesforce won’t provide support for issues that you encounter using these browsers.
Share Multiple Files in a Folder Using Public Links
What’s better than sharing a single file with a public link? Sharing a bunch of files at once! You can create public links to share folders, giving recipients inside or outside your company access to sets of files. The public link is an encrypted URL. Folder Sharing in Lightning Experience provides an alternative to Content Packs in Classic.
Anyone with the link can view and download the files in the folder. You can change the folder’s contents at any time, and the changes occur in real time. To remove access to the folder, delete the link. To make the folder public again, create a new link.
Let Sales Reps Manage Email Template Privacy
Sales reps can now keep email templates private until they’re ready to make them public. Previously, all Lightning email templates were public.
Bounce Management in Salesforce
When Bounce Management is activated and a user sends an email to an invalid email address, the email bounces back to Salesforce and the user is prevented from sending email to that address until it is validated.
A bounce warning appears next to the email address in lead, contact, and person account record.
View Page Performance by Browser and Other New Metrics in the Lightning Usage App
You can now view more metrics in the Lightning Usage App, including page performance by browser. You can also generate reports using the Lightning Usage App objects.
List View Sharing
Have a list view with an amazing set of filters that you’d love to share with your team? Or maybe you have a list view that you only want a select few to access. Take collaboration to the next level by sharing your list views with user groups in your org.
Approval Requests Assigned to Your Queues in All Salesforce Experiences
Users now see approval requests assigned to them and to their queues regardless of which Salesforce user interface they’re using. Previously, approval requests assigned to queues appeared only in Salesforce Classic.
For Admins
How to track why Users Are Switching Back to Salesforce Classic?
Discover why your users aren’t adopting Lightning Experience by going to the source. A form prompts your users for feedback when they switch back to Salesforce Classic. Use the responses to educate users about productivity features and fine-tune your org customizations.
How to Track the Platform Integration User in Salesforce?
Many internal Salesforce applications now automatically run their business processes as the Platform Integration User. Some records show as being created, last modified, or owned by this user. Using the Platform Integration User is an expected part of how Salesforce maintains an org, much like the Automated Process user. The Platform Integration User is traceable in the debug logs.
To track the Platform Integration User in the debug logs, create a user trace flag, and select Platform Integration from the Traced Entity Type dropdown list. A trace flag is now set on the Platform Integration User.
Check Field’s References in Salesforce
Now you can see the references to a custom field, such as in a report or formula, with the click of a button. You can also communicate changes to others who use the field in a formula or other context.
For information on enabling this feature, contact Salesforce.
Reference Custom Metadata Types in Advanced Formula Fields
Create a custom metadata type, and reference its records in an advanced formula field. Store parameters for your formula in custom metadata types. If you need to make a change, you can do so in your custom metadata type instead of changing multiple, hard-coded formulas.
Set Component Visibility Based on Standard and Custom User Permissions
Now you can make your Lightning pages more dynamic by configuring component visibility filters based on the permissions of the person viewing the page. For example, you can create a rule for a component to display for users with a specific permission, but it’s hidden for everyone else. Component visibility filters are supported for standard components, custom components, and components from AppExchange.
Reject Leads That Don’t Use reCAPTCHA
Stop spammers from sending you bogus leads. Reject leads that generate from Web-to-Lead that don’t use reCAPTCHA verification.
In Setup, go to the Web-to-Lead Setup page, and look for the Require reCAPTCHA Verification setting. Enabling this setting turns on the Include reCAPTCHA in HTML setting on the Create a Web-to-Lead Form page. Then make sure that the HTML on your website includes the reCAPTCHA code.
Retain Edit Rights for Previous Opportunity Owners
You can now choose to keep the previous opportunity team together when an opportunity is transferred to a new owner in Lightning Experience. You can also choose to let the previous owner retain read/write access after the switch.
The Retain edit rights for previous owner option becomes available when Keep Opportunity Team is selected.
Keep Users in Lightning Experience
Ready to adopt Lightning Experience for your org? Keep all users who have the Lightning Experience permission in the new interface by removing their ability to switch to Salesforce Classic.
This feature applies to Lightning Experience in Group, Professional, Enterprise, Performance, Unlimited, and Developer editions.
From Setup in Lightning Experience, enter Lightning in the Quick Find box, and then select Lightning Experience. In the Lightning Experience Migration Assistant, on the Set Up Users tab, turn on Keep Lightning Experience Users in Lightning Experience Only. For new orgs created after this feature is released, this setting is turned on by default, and the Switcher is removed. For existing orgs, this feature is turned off by default.
If some of your users still need access to both interfaces, use the Hide Option to Switch to Salesforce Classic permission instead.
For Developers
Get domain URL using apex in Salesforce
Use getOrgDomainUrl() in orgs with or without My Domain to retrieve canonical URLs. For example: https://yourDomain.my.salesforce.com, or, for orgs without My Domain enabled https://yourInstance.salesforce.com.
Sample Code:
system.debug(‘Domain URL is ‘ + System.Url.getOrgDomainUrl());
Use Inherited Sharing to Secure Your Apex Code
You can now specify the inherited sharing keyword on an Apex class, which allows the class to run in the sharing mode of the class that called it. Using inherited sharing enables you to pass security review and ensure that your privileged Apex code is not used in unexpected or insecure ways. An Apex class with inherited sharing runs as with sharing when used as a Visualforce page controller, Apex REST service, or an entry point to an Apex transaction.
Apex without a sharing declaration is insecure by default. Designing Apex classes that can run in either with sharing or without sharing mode at runtime is an advanced technique and can be difficult to distinguish from one where a specific sharing declaration is accidentally omitted. An explicit inherited sharing declaration makes the intent clear, avoiding ambiguity arising from an omitted declaration or false positives from security analysis tooling.
There is a distinct difference between an Apex class that is marked with inherited sharing and one with an omitted sharing declaration. If the class is used as the entry point to an Apex transaction, an omitted sharing declaration runs as without sharing. However, inherited sharing ensures that the default is to run as with sharing. A class declared as inherited sharing runs only as without sharing when explicitly called from an already established without sharing context.
Schema.DescribeSObjectResult Class
New Method
getRecordTypeInfosByDeveloperName()
Returns a map that matches developer names to their associated record type.
URL Redirect Parameters Are No Longer Case-Sensitive in Visualforce
The protected URL parameters used in Visualforce pages—retURL, startURL, cancelURL, and saveURL—are no longer case-sensitive. If you change the parameter value from retURL to returl, the system now recognizes it as a protected parameter. Protected URL parameters allow redirects from Visualforce pages to salesforce.com or *.force.com domains and prevent malicious redirects to third-party domains.
Schema.RecordTypeInfo Class
New Method
getDeveloperName()
Returns the developer name for this record type.
Share Extensible Functionality with the Callable Interface
The System.Callable interface enables you to use a common interface to build loosely coupled integrations between Apex classes or triggers, even for code in separate packages. Agreeing upon a common interface enables developers from different companies or different departments to build upon one another’s solutions. Implement this interface to enable the broader community, which might have different solutions than the ones you had in mind, to extend your code’s functionality.
Sample Code:
public class SampleCallable implements System.Callable {
String addPrefix(String str) {
return ‘Testing ‘ + str;
}
String addSuffix(String str) {
return str + ‘ Testing’;
}
public Object call( String action, Map < String, Object > args ) {
switch on action {
when ‘prefix’ {
return addPrefix(String.valueOf(args.get(‘strValue’)));
}
when ‘suffix’ {
return addSuffix(String.valueOf(args.get(‘strValue’)));
}
when else {
return null;
}
}
}
}
@isTest
private class SampleCallableTest {
static testMethod void testCallable () {
Callable extension = (Callable) Type.forName(‘SampleCallable’).newInstance();
String strPrefix = String.valueOf(extension.call(‘prefix’, new Map < String, Object > {‘strValue’ => ‘Sample’}));
system.assertEquals(‘Testing Sample’, strPrefix);
String strSuffix = String.valueOf(extension.call(‘suffix’, new Map < String, Object > {‘strValue’ => ‘Sample’}));
system.assertEquals(‘Sample Testing’, strSuffix);
}
}
Instantiate Custom Metadata Types in Apex
You can now edit custom metadata records in memory within Apex. Previously, custom metadata records queried with SOQL in Apex were immutable. Audit fields (CreatedDate, CreatedBy, LastModifiedDate, LastModifiedBy, SystemModStamp) and calculated fields remain uneditable. DML operations aren’t allowed on custom metadata in Apex or the Partner or Enterprise APIs. DML operations can be done with the Apex Metadata API.
public MyCustomMetadataType__mdt getCustomMetadataRecord(String myName) {
MyCustomMetadataType__mdt theRecord = new MyCustomMetadataType__mdt();
theRecord.DeveloperName = myName;
return theRecord;
}
lightning:map
The lightning:map component securely displays a map of one or more locations using Google Maps. You can pass markers to the component to define the locations to map. A marker can be a coordinate pair of latitude and longitude, or a set of address elements: City, Country, PostalCode, State, and Street.
lightning:inputField
The lightning:inputField component now supports the geolocation field type. It displays input fields for entering latitude and longitude in decimal degrees.
lightning:listView
This attribute is new.
showSearchBar—Specifies whether the search bar displays. This value defaults to false. The server side can still disable search if it does not support searching.