Salesforce Summer 23 Release is here. As with every release salesforce has added lots of new feature in this release. So today we will take a quick look at Salesforce Summer ’23 Release Notes.
Salesforce Summer ’23 Release Notes Points Related to Salesforce Admin
Keep Working with Tab-Focused Dialogs (Release Update)
In Lightning console apps, dialogs no longer stop you from interacting with the rest of the UI. This release update limits the focus of dialogs triggered by a workspace tab or subtab to only the tab that triggered it. This update was first made available in Winter ’20 and was scheduled to be enforced in Spring ’22, but it was postponed the enforcement date to Spring ’24.

Configure Searchable Objects for Each User Profile (Beta)
In the search manager we can now configure which object is searchable or not for each profile for Einstein search.
Resolve Cases Faster with Einstein Search Answers (Pilot)
We will not get extracted text from knowledge article to improve the case resolution process. Salesforce admin to turn on Einstein Search Answers from Knowledge Object. This feature activates 24 hours after it’s turned on. If you have feedback or issues, email tryeinsteinsearch@salesforce.com.

Set Field-Level Security for a Field on Permission Sets Instead of Profiles (Generally Available)
Now when we create a new field we can give permission on permission set instead of profile. Or modify the field-level security for an existing field for all permission sets in Object Manager. As best practice we should use permission sets to manage users’ permissions rather than profiles. From Setup, in the Quick Find box, enter User Management Settings, and then select User Management Settings. Enable Field-Level Security for Permission Sets During Field Creation.
Automate and Migrate User Access with User Access Policies (Beta)
We can now automate assignment’s of managed package licenses, permission sets, and other access mechanisms based on criteria that we set. We can create user access policies that automatically grant or remove access whenever users are created or updated. Or, easily migrate large sets of users to a new access setup in a single operation. From Setup, in the Quick Find box, enter User Management Settings, and then select User Management Settings. Enable User Access Policies (Beta). Then, in the Quick Find box, enter User Access Policies, and then select User Access Policies to create or manage your user access policies.
Give Your Mobile Users the Dynamic Forms Experience (Beta)
We can now give Dynamic Form Experience to mobile users. With Dynamic Forms, we can add and remove fields individually from a Lightning record page, break up record details into multiple sections, and set conditional visibility rules for fields and field sections, all in Lightning App Builder. From Salesforce Mobile App Setup, enable Dynamic Forms on Mobile (Beta).

Limit the Number of Inactive Picklist Values
The panel on the Picklist Settings page in Setup that provided the option to remove the upper bound on inactive picklist values was removed. We can’t remove the upper bound on inactive picklist values, and the maximum number of inactive picklist values for unrestricted picklists is 4,000. Any new unrestricted custom picklists have a limit of 4,000 inactive values.

Enable Faster Account Sharing Recalculation by Not Storing Case and Contact Implicit Child Shares (Release Update)
Salesforce will no longer store implicit child share records between accounts and their child case and contact records. It means Whenever we run a Account Sharing Recalculation, it will only calculate the Sharing for current account and not for child records. This will save the time and in turn improve the performance. When user try to access record that time Salesforce will perform this check.
Boost Productivity with Mass Quick Actions on Related Lists (Beta)
We can add Quick Action in the related list and select up to 100 records in the related list and perform mass updates instead of single record updates. To add quick actions from the Lightning App Builder, add or select the Dynamic Related List – Single component on the record page, and then, in the properties pane, click Add Action.

The CASESAFEID Function Has Changed
The CASESAFEID function now converts only valid Salesforce 15-character IDs to case insensitive 18-character IDs. If you pass in an invalid ID, the function returns the ID passed in.
Salesforce Summer ’23 Release Notes Points Related to Salesforce Developer
Attribute Names Support More Patterns
LWC Attribute name now also supports an underscore (_), a dollar sign ($).
Additionally, attribute names can include duplicate underscores (__
) and an underscore followed by a hyphen(_-
). Also, a hyphen followed by an underscore (-_
) is allowed if the hyphen isn’t the first character in the attribute name. For example, these attribute names are valid.
_myattribute
$myattribute
my_-attribute
Synchronize Component Data Without a Page Refresh Using RefreshView API (Generally Available)
We can now refresh data using lightning/refresh
module and RefreshView API in Lightning web components (LWC) and Aura components. Previously we need to use Aura wrapper for same.
Assign CSS Stylesheets to a Component
We can extend stylesheets from a superclass component to a subclass component using super.stylesheets. The new stylesheets static property on the LightningElement constructor loads styles from CSS stylesheets into light DOM and shadow DOM components.
Manage Toast Notifications with a Toast Container (Beta)
We can now Fire and manage a list of toast notification message components, including their position, with lightning/toastContainer
for LWR sites. The module creates a container that handles and displays your page-level toast notifications.
import { LightningElement } from 'lwc';
import ToastContainer from 'lightning/toastContainer';
export default class MyApp extends LightningElement {
connectedCallback() {
const toastContainer = ToastContainer.instance();
toastContainer.maxShown = 5;
toastContainer.toastPosition = 'top-right';
}
}
New scan()
Function for BarcodeScanner Does It All
Barcode scanner now supports scan function to capture data. We don’t need to call separate methods here. It also supports bulk scanning.
Access Labels in Apex Dynamically
We can now use system.Label.get(namespace, label, language)
method to get a custom label, optionally specifying a language. We can also check if translation exists for a label and language in a namespace by using Label.translationExists(namespace, label, language)
.
Use the Iterable Interface with Set Type
The Set class now implements the Iterable interface, so we can directly iterate over sets.
Set<String> letters = new Set<String>{'a','b','c','d'};
System.debug(String.join(letters, '...'));
Configure Stack Depth of Chained Queueable Jobs (Beta)
We can now set a maximum stack depth of Queueable jobs, overriding the default limit of five. nqueue jobs by using the new System.enqueueJob()
overload. The method overload has an optional AsyncObjects
parameter where we can specify the maximum stack depth and the minimum queue delay.
Use these methods in the new System.AsyncInfo
class to determine the current and maximum stack depths and to get the minimum queueable delay.
getCurrentQueueableStackDepth()
getMaximumQueueableStackDepth()
getMinimumQueueableDelayInMinutes()
hasMaxStackDepth()
// Fibonacci
public class FibonacciDepthQueueable implements Queueable {
private integer nMinus1, nMinus2;
public static void calculateFibonacciTo(integer depth) {
AsyncOptions asyncOptions = new AsyncOptions();
asyncOptions.MaximumQueueableStackDepth = depth;
System.enqueueJob(new FibonacciDepthQueueable(null, null), asyncOptions);
}
private FibonacciDepthQueueable(integer nMinus1param, integer nMinus2param) {
nMinus1 = nMinus1param;
nMinus2 = nMinus2param;
}
public void execute(QueueableContext context) {
integer depth = AsyncInfo.getCurrentQueueableStackDepth();
// Calculate step
integer fibonacciSequenceStep;
switch on (depth) {
when 1, 2 {
fibonacciSequenceStep = 1;
}
when else {
fibonacciSequenceStep = nMinus1 + nMinus2;
}
}
System.debug('depth: ' + depth + ' fibonacciSequenceStep: ' + fibonacciSequenceStep);
if(System.AsyncInfo.hasMaxStackDepth() &&
AsyncInfo.getCurrentQueueableStackDepth() >=
AsyncInfo.getMaximumQueueableStackDepth()) {
// Reached maximum stack depth
Fibonacci__c result = new Fibonacci__c(
Depth__c = depth,
Result = fibonacciSequenceStep
);
insert result;
} else {
System.enqueueJob(new FibonacciDepthQueueable(fibonacciSequenceStep, nMinus1));
}
}
}
Query Five Levels of Parent-to-Child Relationships in SOQL Queries
SOQL now supports relationship queries that traverse up to five levels of parent-child records. We can use a single SOQL query to get parent-child records from five different levels. This ability is limited to SOQL queries via the REST and SOAP query calls on standards and custom objects.
SELECT Name,
(SELECT LastName,
(SELECT AssetLevel,
(SELECT Description,
(SELECT LineItemNumber FROM WorkOrderLineItems)
FROM WorkOrders)
FROM Assets)
FROM Contacts)
FROM Account
We have also cover Sumer ’23 Flow Updates here. You can signup for pre-release org here. Which point you liked the most in Salesforce Summer ’23 Release Notes. Let me know in comments. Happy programming 🙂