Salesforce Winter '24 Release Highlights for Developers
The Salesforce Winter ‘24 release is (almost?) in, and has a few interesting features for developers. This post is a quick summary of the features that I found interesting.
Updates to Salesforce UI: Lightning Web Components etc. #
1. Dynamic Components in LWC #
Dynamic Rendering: Dynamic Components enable developers to store component definitions on the backend enabling them to dynamically render components at runtime.
Dependency Injection: Developers can use Dynamic Components for dependency injection, allowing them to create more modular and reusable code.
I am yet to find out how I Dynamic Rendering can be put to good use, probably that is more suited for ISVs.
2. Developer experience changes for Experience Cloud #
If you have built a number of glorious LWCs / Aura components but still draw a blank on the Experience Cloud designer, fear not for the future - you can see all of those components, CMS content and more in there.
And yes, quick actions to mass update related list records are there too - but only for Aura. I am surprised that “only Aura” exists in 2023.
3. LWC Workspace API (Beta) #
LWC Workspace API is in beta (huzzah? )
- simplifies the migration of Aura components to LWC
- makes it easier to manage tabs and sub-tabs within console applications
4. GraphQL Wire Adapter for LWC #
GraphQL Wire Adapter for LWC simplifies data fetching - supports features like filtering, sorting, and pagination.
I frankly don’t know enough to comment. I have not been a fan of GraphQL in all its typed glory, and for all its advantages have preferred REST APIs (and made my life harder in the process - but that’s another story).
See GraphQL in Lightning Web Components
5. Mobile Capabilities #
Lo and behold the expanded mobile functionalities like document scanning, NFC, and biometric functionalities. See Salesforce Mobile App Development
Apex and Friends #
1. DataWeave in Apex (GA) #
DataWeave, the data transformation language from MuleSoft, is now generally available in Apex. It comes with the promise of simplifying data transformations, especially for integrating Salesforce with external systems. DataWeave’s programming approach looks familiar to JS developers.
I will write an example one of these days, but for now, start the trend #MakeApexDynamic
on Twitter, the platform that solves all problems.
2. Queueable Apex Enhancements #
Set a maximum depth for chain Queueable Apex jobs, that will unfortunately limit the fun of mistakingly writing infinite loops. Job signatures can ensure that only a single instance of queueable job is enqueued, further limiting the aforesaid fun.
As a poor compensation, Queueable Apex supports for loops for iterables, making code somewhat readable. (I am trying to figure out whether to be happy about this - I sometimes feel happier with JS callback heaven).
See Queueable Apex
3. Apex Language Improvements #
Speaking of reducing the code, the Apex Comparator and Comparable interfaces simplify sorting and comparison operations in Apex classes.
Quoting the example in docs -
public class Employee implements Comparable {
public Long id;
public String name;
public String phone;
// Constructor
public Employee(Long i, String n, String p) {
id = i;
name = n;
phone = p;
}
// Implement the compareTo() method
public Integer compareTo(Object compareTo) {
Employee compareToEmp = (Employee)compareTo;
if (id == compareToEmp.id) return 0;
if (id > compareToEmp.id) return 1;
return -1;
}
}
I can see potential use cases in not only the platform, but also in Data Cloud :).
See Comparator Interface and Apex Loops
Conclusion #
Many of these features will get eclipsed by Flow supporting all REST methods, but hey, I cannot deserve my Matrix screensaver by just drag-dropping boxes, can I?
And yes, I am yet to get my hands on Generative AI and refuse to talk about it till then
Head over to Salesforce Winter ‘24 Release Notes to know more about features that you did not know were not there in the first place.