Winter is coming but Salesforce Winter 20 Release Notes are already here. Today I am sharing few points which are useful for both Salesforce Admin and Developer.

So, let’s take a quick look on Winter 20 Release Notes top 15 points.
1. Turn On Lightning Experience (Critical Update, Enforced)
Lightning Experience will be enabled for all orgs from Winter 20. Users can still access Salesforce Classic using Switch To Classic Link. But I suggest you to motivate them to stay in Lightning as Lightning is the future. Verify org’s existing features and customizations in the new interface, and prepare users for the new intrerface. Give them overview of all the new exciting feature and in case you stuck somehwre you can also ask in community or in comments section.
2. The New Salesforce Mobile App
Salesforce is planning to launch new Mobile App in the week of October 14, 2019. The new mobile experience is opt-in, so you can get started whenever you’re ready. The QuickStart page walks you through setup. With the new Salesforce mobile app, we can configure Lightning apps, record pages, and component visibility rules for use on a phone. With the latest version of the Salesforce app, Einstein Analytics users can do more on the go without switching between apps. You can read more details here.
3. Communicate Across Salesforce UI Technologies with Lightning Message Service (Developer Preview)
We can use the Lightning Message Service API to communicate across the DOM, between Aura components, Visualforce pages, and Lightning web components. We can now build Lightning web components that can communicate with existing Visualforce pages or Aura components.
A Lightning web component uses a Lightning Message Channel to access the Lightning Message Service API. Reference Lightning Message Channel with the scoped module @salesforce/messageChannel. In Visualforce, use the global variable $MessageChannel. In Aura, use lightning:messageChannel in your component. You canread more details here.
4. Access the Recycle Bin in Lightning Experience
We now no longer have to switch to Salesforce Classic to access the Recycle Bin. We can now view, restore, and permanently delete the items in our Recycle Bin and the org Recycle Bin. We can use Restore and Delete buttons. We can’t restore reports and dashboards. We need to switch to Salesforce Classic to access them in the Recycle Bin.



5. Lightning Web Components: Is Now Open Source
The Lightning Web Components framework is now open source, empowering us to explore the source code, customize the framework to our needs, and build enterprise ready web components on any platform, not just Salesforce. Check the lwc.dev for more details.
6. Add Lightning Web Components to Flow Screens
We can now use Lightning Web Components to Flow Screens. To make a Lightning web component available to a flow screen as a screen component, lightning__FlowScreen
must be a target in the component’s targets tag, and the isExposed
tag must be set to true. The component can use events in the new lightning/flowSupport module.
7. Lightning Experience Configuration Converter: Scanning and Preparing Org
We can use this tool to scan Visualforce Pages, Hard-Coded URLs, AppExchange Package. Action and Button tab is now generally available.
8. Increased Limits for Approval Processes
Salesforce has raised the limits for approval processes. Our org can now have up to 1,000 active and 2,000 total approval processes. Each object can have up to 300 active and 500 total approval processes.
9. Add Opportunity Scores to Standard Reports
We can use standard reports to analyze opportunities based on opportunity scores. Previously, we could use opportunity scores with only custom report types.
10. Enforce Field-Level Security in Apex (Beta)
The stripInaccesible
method checks the source records for subquery fields that don’t meet the field-level security check for the current user. The method returns a list of sObjects that contain only the fields that are accessible to the current user. If the user doesn’t have access to the relationship field from child to parent, the return list of sObjects doesn’t include the child relationship.If the user doesn’t have permission to read the Phone field of a Contacts object, this example code removes the subquery field before reading the records. The DML operation completes without throwing an exception.
List<Account> accountsWithContacts =
[SELECT Id, Name, Phone,
(SELECT Id, LastName, Phone FROM Account.Contacts)
FROM Account];
// Strip fields that are not readable
SObjectAccessDecision decision = Security.stripInaccessible(
AccessType.READABLE,
accountsWithContacts);
// Print stripped records
for (Integer i = 0; i < accountsWithContacts.size(); i++)
{
System.debug('Insecure record access: '+accountsWithContacts[i]);
System.debug('Secure record access: '+decision.getRecords()[i]);
}
// Print modified indexes
System.debug('Records modified by stripInaccessible: '+decision.getModifiedIndexes());
// Print removed fields
System.debug('Fields removed by stripInaccessible: '+decision.getRemovedFields());
11. Expand Apex Testing with the ApexSettings Metadata Type
We can now use the new ApexSettings metadata type to augment Apex testing with aggregate total tracking, serial execution, and prevention of auto-number gaps. We can also use ApexSettings to suppress debug log details in unhandled exception emails.
We can use the ApexSettings metadata type in many ways.
- To enable tracking of aggregate, instead of detailed, totals for Apex test coverage data, use the new enableAggregateCodeCoverageOnly field.
- To enable serial execution of Apex tests, use the new enableDisableParallelApexTesting field.
- To suppress Apex debug log details in unhandled exception emails, use the new enableDoNotEmailDebugLog field.
- To prevent Apex test executions from incrementing auto-number fields for non-test records and creating gaps, use the newenableGaplessTestAutoNum field.
12. Add Lightning Web Components as Custom Tabs
We can now Make a Lightning web component available as a custom tab in a Lightning Experience app and in the Salesforce app. We need to Add the lightning__Tab
target to the component’s configuration file.
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
<targets>
<target>lightning__Tab</target>
</targets>
</LightningComponentBundle>
13. Hitting Apex Limits in Server-Side Actions in Lightning Component
Apex limits in Lightning components are now applied per action. Applying Apex limits per action makes it less likely that our components hit Apex limits. Apex limit issues for an action are more predictable because the limits are based on one action rather than the unpredictable set of actions that the framework batches together in a boxcar.
14. Develop Apps with Ease Using Second-Generation Managed Packages
Second-generation managed packaging (2GP) is a new way for AppExchange partners to develop, distribute, and manage their apps and metadata. We can use 2GP to organize your source, integrate with our version control system, and better utilize our custom Apex code. With version control being the source of truth, there are no packaging orgs, and we can execute all packaging operations via Salesforce CLI, enabling end-to-end automation. We can submit second-generation managed packages for security review and list them on AppExchange.
15. Select the API Version for Lightning Locker
We can select the API version used by Lightning Locker. The default is the current API version, which includes the latest Locker security enhancements. Select an earlier API version when custom components only comply with Locker in an older version. When components become compliant with the current security enhancements, we can change the setting to the current API version.
You can check the complete document here.
You can also signup for pre release org here.
Which point you liked most in Winter 20 Release Notes, Or do you have any other favourite point let me know in comments. Happy Programming