Top 10 Features for Salesforce Developers in Winter’20 Release #BeReleaseReady

Swayam Chouksey
6 min readAug 30, 2019
Top 10 Features for Salesforce Developers in Winter’20 Release!
#Salesforce #Release #Winter20 #Developers

1. Lightning Web Components: Open Source

The Lightning Web Components framework is now open source, empowering you to explore the source code, customize the framework to your needs, and build enterprise-ready web components on any platform, not just Salesforce.

Why: In the past, you had to use different frameworks to build different sides of an application. For example, you used Aura to build the employee-facing side of an application on Salesforce. You used React, Angular, or Vue to build the customer-facing side of the application, and you deployed it on Heroku or on another platform. Today, you can use Lightning web components to build both sides of the application.

The benefits are significant. You can now learn one framework instead of several. You can share code between apps. And you’re using a cutting-edge framework built on web standards and based on the latest patterns and best practices.

How: To develop off-platform Lightning web components, see lwc.dev. To contribute to the open-source code, see the Lightning Web Components GitHub repository.

To develop on-platform Lightning web components, see the Salesforce Lightning Web Components Developer Guide.

2. Enforce Field-Level Security in Apex (Beta)

The stripInaccessible() security feature for field-level data protection has moved from pilot to beta and is available in production orgs. In Winter ’20, we extended the feature for subqueries and added the enum value UPSERTABLE to System.AccessType. Use this new enum with the stripInaccessible method to enforce field- and object-level checks for both insert and update.

Where: This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.

Why: You can use the stripInaccessible method to strip the fields that the current user can’t access from query and subquery results. You can use it to remove inaccessible fields from sObjects before a DML operation to avoid exceptions. You can also use the method to sanitize sObjects that have been deserialized from an untrusted source.

How: 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.

Refer: https://releasenotes.docs.salesforce.com/en-us/winter20/release-notes/rn_apex_Security_stripInaccessible_beta.htm

3. Expand Apex Testing with the ApexSettings Metadata Type

Use the new ApexSettings metadata type to augment Apex testing with aggregate total tracking, serial execution, and prevention of auto-number gaps. You can also use ApexSettings to suppress debug log details in unhandled exception emails.

Where: This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.

How: You 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.

4. Query in Bulk API 2.0

Bulk API 2.0 now supports bulk query jobs. These jobs enable asynchronous processing of SOQL queries and are designed to handle queries that return large amounts of data (10,000 records or more).

Why: Bulk queries are also available in Bulk API (that is, the /services/async/ endpoint introduced in version 16 of the Lightning Platform API). But the Bulk API 2.0 implementation has several advantages:

  • It does not require you to handle batches. All results are returned in one set.
  • Limits have been simplified and are available to clients via a /limits endpoint.
  • This implementation is better integrated with other Salesforce REST APIs:
  • It does not require a special X-SFDC-Session header.
  • It supports all the regular OAuth workflows.
  • Its design is more consistent with the other Salesforce APIs.

5. Control Who Gets Read Access to Custom Metadata Types

Use profiles and permission sets to assign read access to users for custom metadata types. As of Spring ’19, you can block all API read access to custom metadata types for users who don’t have Customize Application permission. Now you can grant API read access to specific metadata types for users and user profiles, even if they don’t have the Customize Application permission.

Where: This change applies to Lightning Experience and Salesforce Classic in Professional, Enterprise, Performance, and Unlimited editions.

Who: Admins with the Customize Application permission can modify permission sets and profiles to grant direct read API access to a specific custom metadata type.

How: To grant a specific profile or permission set read access to a custom metadata type, go to the Custom Metadata Types permissions.

Edit the profile or permission set to add the desired custom metadata type to the list of enabled custom metadata types.

6. Migrate Change Data Capture Channels and Members with Metadata API and Tooling API

You now define channel member components separately from channels in Metadata API. Use the new PlatformEventChannelMember Metadata API type for granular access to event channel members. In Tooling API, you can now access channels and their members through the new PlatformEventChannel and PlatformEventChannelMember objects. Also, packaging is now supported for standard channel members, in addition to custom channels and members.

Where: This change applies to Enterprise, Performance, Unlimited, and Developer editions.

How: As part of this change, we removed the channelMembers field of PlatformEventChannel. If you upgrade your metadata PlatformEventChannel components from API version 46.0 or 45.0, remove the channelMembers fields in your components. Then replace each field with a PlatformEventChannelMember component.

7. New Aura Components & Events

force:cardPayment: Provides a payment page to collect card payment information, make a payment, or perform both actions. Salesforce stores and processes the customer card information under PCI-compliant standards. You can use the payment page in Lightning Experience or a community. For more information, see Salesforce Billing: Save Credit Cards and Accept Payments in Communities and Lightning Pages.

forceCommunity:analytics: InteractionGtagTracks events triggered by Lightning components, and sends the data to Google Analytics using the global site tag (gtag) standard. Supported only in template-based communities. To use the gtag standard, enable Google Analytics in Community Builder and publish your community. For more information, see Improve Tracking with the New Google Analytics™ Standard.

8. Lightning Console JavaScript API

Where: These changes apply to Lightning Experience only.

In the utility bar, change a utility’s icon color to indicate success, warning, or error when using the setUtilityIcon()method

Use the new iconVariant value with the options argument.

In a utility’s panel header, change the utility’s icon color to indicate success, warning, or error when using the setPanelHeaderIcon() method

Use the new iconVariant value with the options argument.

Return the SLDS icon color variant of a utility’s icon and its panel icon when using the getUtilityInfo() method

Use the new utilityIconVariant and panelHeaderIconVariant fields, respectively, on the utilityInfo object.

Return the SLDS icon color variants of all utility icons and utility panel icons when using the getAllUtilityInfo()method

Use the new utilityIconVariant and panelHeaderIconVariant fields, respectively, on each utilityInfo object.

9. Monitor Platform Event Publishing Usage in REST API

The hourly event publishing usage for standard-volume and high-volume platform events is now available in REST API. Use the limits REST resource in your app to monitor your event publishing usage against the two allocations.

Where: This change applies to Enterprise, Performance, Unlimited, and Developer editions.

How: The limits resource contains these new values.

  • HourlyPublishedPlatformEvents — High-volume platform event notifications published per hour
  • HourlyPublishedStandardVolumePlatformEvents — Standard-volume platform event notifications published per hour

10. Callouts Are Excluded from Long-Running Request Limit

Every org has a limit on the number of concurrent long-running Apex requests. This limit counts all requests that run for more than 5 seconds (total execution time). However, HTTP callout processing time is no longer included when calculating the 5-second limit. We pause the timer for the callout and resume it when the callout completes.

Where: This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.

This change applies to callouts made directly from Apex, including SOAP callouts generated by WSDL2Apex. It also applies to callouts from other platform features, such as External Services and External Objects.

There are lot many other features as well, Official release notes are available HTML format as well as PDF file.

Say Hello To Me On: Twitter | Facebook | Linkedin | MyBlog | Blogger | MyWebsite

#HappyLearning #Platform #SalesforceDeveloper #BeReleaseReady #Salesforceguy

--

--

Swayam Chouksey

Accomplished Salesforce Technical Architect | Technology Advisor @ mindZcloud Enterprise | Co-Founder @ SFDCMINDZ 🇮🇳 🇺🇸