1. Spring ‘20 Release Highlights
Allentown, PA Developers Group
carl.bundage@gmail.com, @CarlBrundage
Carl Brundage, CTA, MVP, Master Architect @ Odaseva
peter.knolle@trifecta.com, @PeterKnolle
Peter Knolle, CSA, CAA, MVP, Solutions Architect @ Trifecta
2. Spring ‘20 Release Highlights
1. Lightning Components and Development
2. Security Enhancements
3. Async Job Finalizers
4. Lightning Message Service
5. Flow Before Save (with demo)
6. Limits
7. …And a whole lot more!
Spring ‘20 release trailmix:
https://sforce.co/2OtDWhc
3. Lightning Components
Ø Aura design tokens now supported in Lightning Web Components
Ø Instead of copying and pasting you can now define CSS values in one place and refer to
them from LWCs.
Ø Lightning (aura) tokens file:
Ø Can reference Salesforce community styles, so that theme changes done declaratively
automatically update your component
Ø The LWC’s CSS file:
Ø You may prefer to use SAAS or LESS or something like that instead
4. Lightning Components
Ø @track is no longer needed – Happens automatically
Ø @track was used to track private property’s value and rerender a component when it
changes (a.k.a. private reactive properties) as opposed to @api (public)
Ø Before: @track amount;
Ø After: amount;
Ø Not so fast, folks! Objects and Array Elements still need @track
5. Lightning Components
Ø Base Components have been open sourced
Ø Use the source as a start for your own
Ø Use the source as a reference for best practices
Ø When in doubt, consult them
Ø However, not all have been open sourced
Ø Some of the older ones have not-so-great code and need to be cleaned up, but they will be
open sourced at some point
Ø No lightning-datatable!
Ø https://github.com/salesforce/base-components-recipes/tree/master/force-
app/main/default/lwc
6. Record Create Page Defaults
Ø In classic we had URL hacks to prepopulate standard pages.
Ø Used in custom buttons or links, many times
Ø /a0U/e?CF00Ni000000EpsgO={!Opportunity.Name}&CF00Ni000000EpsgO_lkid={!Opp
ortunity.Id}&00Ni000000EpsgY={!Opportunity.Description}
Ø It was not supported, but so widely used by Salesforce’s customers that there was no way
that Salesforce would have broken it.
Ø There has been on equivalent in Lightning, until now. And, it is officially supported!
Ø /lightning/o/Account/new?defaultFieldValues=
Name={!URLENCODE(Account.Name)}, OwnerId={!Account.OwnerId},
AccountNumber={!Account.AccountNumber}, NumberOfEmployees=35000,
CustomCheckbox__c={!IF(Account.SomeCheckbox__c, true, false)}
7. Local Development in Beta
Ø We have been doing this for a while with angular in VF and a local node server with the
localhost conditional components. But no way to do with LCs existed!!!
Ø Install the plugin:
Ø …yada, yada, yada…
Ø Start the server:
Ø Go to http://localhost:3333 (give –port <port-num> for different port)
Ø Alternatively, just use VS Code’s command palette
Ø What’s supported/not:
Ø https://developer.salesforce.com/docs/component-
library/documentation/lwc/lwc.get_started_local_dev_modules
Ø Can use most @salesforce, including @salesforce/apex
8. Security Enhancements are GA – Use ‘em!
Ø WITH SECURITY_ENFORCED
Ø If the running user does not have permissions on the object or field an exception is
generated
Ø For AppExchange Security Review, you must use API version 48.0 or later when
using WITH SECURITY_ENFORCED. You cannot use API versions where the feature was
in beta or pilot.
Ø Security.stripInaccessible
Ø These can be used to pass security review…
Ø …BUT, it is not clear if sec review automations
Ø will recognize them yet.
9. Lightning Message Service (Beta)
Ø LWCs have no built-in application event handling – had to use pubsub.js from SF github
Ø Communicate among Aura, VF pages, and LWCs.
Ø Use a Lightning Message Channel
Ø LWC: @salesforce/messageChannel
Ø VF: $MessageChannel
Ø Aura: lightning:message
Ø WARNING: Beta AND not available in communities, yet.
10. Asynchronous Job Transaction Finalizers (Pilot)
Ø System.Finalizer interface
Ø A way to run code after the job finishes, regardless of success or failure, without polling.
11. Flow Before-Save Update
Ø Analogous to before insert/update trigger
Ø Let’s see a demo!
Ø Remember the best practice for automations, though…
Ø Try to use one automation type per object.
Ø E.g., Avoid mixing before update flows with triggers with process builders, etc.
Ø It quickly gets out of hand.
Ø Debugging is difficult impossible
Ø Easier said than done.
12. Run Flows in System Context (with sharing)
Ø When a user runs a flow that is in system context (with sharing), object- and field-level
security checks are automatically passed when the Flow executes a CRUD element.
Ø Flows & Context
Ø Process Builder processes run in system context, without sharing
Ø Scheduled Flows run in system context, without sharing, as Automated Process user
Ø Top-level, auto-launched Flows and screen Flows run in user context
Ø Flows that are invoked by other processes such as Apex triggers, process builder
processes, or even other Flows — run in the execution context of their caller
Ø Declaratively, you can explicitly declare an auto-launched or screen Flow to always run in
system context, with sharing.
13. Limit Changes of Note
Ø Default daily API allocation increased from 15K to 100K
Ø SOQL Statement length increase from 20K to 100K
Ø SOSL statement length increase from 20K to 100K
14. Aura Components in the ui Namespace Are Deprecated
Ø Salesforce plans to end support for the deprecated components on May 1, 2021
Ø Replace the deprecated components with their counterparts in the lightning namespace
Ø These components are faster, more efficient, and they implement Lightning Design System
styling out-of-the-box.
15. Assign Tasks to a Queue
Ø When reps assign tasks to a queue, those tasks are available to members of the queue
16. Clone Objects Along with Their Related Records
Ø When you click Clone with Related, all of the original object’s related records are also
added to the cloned object
17. Combine Duplicate Cases with Case Merge
Ø Now, support agents can consolidate up to three duplicate cases
Ø Agents can see duplicate cases from the Case record page in the Merged Cases Related
List, which shows a list of all the cases that were merged to form the master case.
Ø If you decide to keep merged cases, they appear in the Merged Cases related list.
Ø If you decide to delete merged cases, only the master case is saved. You can find the other
merged cases in the Recycle Bin for the next 15 days.
18. In-App Guidance Improvements
Ø Customize When Prompts Appear to Users
Ø Specify Profiles When Creating Prompts
Ø Add Videos to Docked Prompts
19. Security Enhancements
Ø Heroku Shield: Support for Apache Kafka on Heroku
Ø Build real-time apps more easily than ever using PHI, PII, and HIPAA-compliant data in a
secure, trusted, and fully managed environment
Ø Shield
Ø Encrypt Platform Events
Ø Mobile
Ø Shield Your Data with Enhanced Mobile Security Updates
20. Supported Browsers for Lightning Experience
Ø Lightning Experience is supported by
Ø Apple® Safari® version 12.x+ on macOS.
Ø The most recent stable versions of
Ø Microsoft® Edge,
Ø Mozilla® Firefox®,
Ø Google Chrome™.
Ø You can continue to use IE11 to access Lightning Experience until December 31, 2020, If
you opt in to Extended Support for IE11.
Ø You can not access Lightning Experience via a mobile browser,
Ø Use the Salesforce app when you’re working on a mobile device.
Ø You can also access Lightning Experience on the iPad mobile browser.
Ø It is strongly recommended that you do not use Internet Explorer 11 with Community
Builder.
21. Filter Reports - Field Comparisons with Field-To-Field Filter
Ø Filter a report by comparing the values of two different report fields.
Ø See cases modified after the closing date by filtering on cases with a last modified date
after the closed date
22. Apple ID Login
Ø Use a new Apple Authentication provider
Ø Log into Salesforce or a Community
23. Salesforce Mobile App
Ø New Mobile App
Ø All users upgraded Feb 17, 2020
Ø Access Einstein Analytics
Ø Find the Right Record Fast with Recommended Result on Mobile (Beta)
Ø Records are highlighted as top results
Ø Test Your Mobile Communities with the Playground App (Beta)
Ø Non-branded version of the Mobile Publisher for the Communities ap
24. Invocable Methods/Variable Flexibility with Generics
Ø Use Generic sObject as Data Type when passing Data in @InvocableMethod variables
Ø Annotate with @InvocableVariable
Ø Support the generic sObject and List<sObject> data types.