Salesforce Winter ’25 Release Highlights: What You Need to Know
I know why you’re here and I have exactly what you need. Welcome to the Winter’25 release highlights.
From AI-powered innovations to productivity-boosting tools, here are the top highlights you should know about.
- Platform Login License.
The Salesforce Platform Login license allows you to assign access to custom apps built on Platform for internal users without the requirement to buy a seat-based license. With the Salesforce Platform Login license, you can pay per daily unique login for users who need infrequent or occasional access. Contact your account executive for more information on purchasing the Salesforce Platform Login license.- The Salesforce Platform Login license is available October 15, 2024.
- Inbound Email Limit Increased
To deliver expected performance, we now limit the number of inbound emails that can be queued after you reach your daily email limit. The number of emails that you can queue is equal to your daily email rate limit. After you reach the limit, inbound emails bounce. Review your email services, and use the Requeue Message failure response option only for high-priority services.- Example: If you have 10 Salesforce licenses, you can receive 10,000 inbound emails before you reach your daily limit. When you reach that limit, additional inbound emails are queued for processing if the failure response option on the email service is Requeue Message. After 10,000 emails are queued, all additional inbound emails for that day bounce.
- Einstein Search Limit
To ensure fair access for all users and protect against potential service disruptions, the number of search queries for each user is limited to 5,000 and 1.4 CPU hours within a 5-minute interval. If a user exceeds the limit, an error message is displayed.- From August 2024.
- Permission Insights: Object and Users
Get a comprehensive view of the permission sets, permission set groups, and profiles that grant access to an object, and the level of access granted. Use the read-only Object Access Summary in Object Manager to quickly check object permissions when troubleshooting, completing reviews, or determining how to grant user access. We delivered this feature thanks to your ideas on IdeaExchange. - New Dynamic Highlights Panel
Use the new Dynamic Highlights Panel to configure your most important fields right in the Lightning App Builder. Previously, you could only configure fields in the Highlights Panel by using compact layouts in Setup. The Dynamic Highlights Panel can contain up to 12 fields. We delivered this feature thanks to your ideas on IdeaExchange. - Multiple Picklist Values in Restriction and Scoping Rules
You can now reference multiple picklist values in the record criteria of your restriction and scoping rules. This change makes it easier to configure which records and fields your users see when these rules are applied. - User Access Summary
User information is now consolidated on the improved User Access Summary page, so it’s easier to view and edit that information. The standard and custom user fields that appear on the summary page match the User Details section of the user’s assigned user profile page layout. - TypeScript in LWC
To improve developer productivity and code quality, you can now author new Lightning web components (LWCs) with TypeScript. You can also convert existing JavaScript components to TypeScript. Previously, LWC projects only supported JavaScript components.- TypeScript support for LWC is available as a developer preview.
- More Coverage for Unexpected Exceptions in Apex Code Execution
Exceptions triggered by transactions with entry points as@AuraEnabled
,@RestResource
, and@InvocableAction
annotations are now captured in the Apex Unexpected Exception event type. Analyze the event log files that provide information on exceptions triggered by these transactions. A spike in exception data logged in the event log files is possible because of the expanded coverage. - SOQL Error and Functionality Changes
Updates in this release can impact existing Apex code that relies on old SOQL error messages and functionality, particularly to dynamic SOQL code that handles the parsing of error messages. Review these changes and update your code as needed.- Review the changes in functionality and updates to error messages.
- Support for negative currency values in queries, such as
SELECT Name FROM Invoice__c WHERE Balance__c < USD-500
. - New error messages with invalid SOQL queries.
SELECT Id FROM Account USING everything
Old:unexpected token: '<EOF>'
New:unexpected token: 'everything'
SELECT ParentId, Value FROM InteractionRefOrValue WHERE ParentId IN ()
Old:unexpected token: ')'
New:unexpected token: 'ParentId IN ()'
SELECT FROM ServicePresenceStatus
Old:unexpected token: 'FROM'
New:unexpected token: 'SELECT FROM'
SELECT Id from $casecomment WHERE isdeleted = false
Old:line 1:15 no viable alternative at character '$'
New:line 1:15 unexpected token: '$'
SELECT lastmodifieddate, companyna fr$om user
Old:unexpected token: user
New:missing value at 'user'
- New error message in SOQL queries with quotes surrounding an unexpected token.
SELECT annualrevenue , parentid FROM Account WHERE (isDeleted = false AND NumberOfEmployees != 100) OR (isDeleted = false AND Site = '999') AND ParentId = '000000000000000' LIMIT 50000
Old:unexpected token: AND
New:unexpected token: 'AND'
- New error message when using NULL literals in WHERE statements with the LIKE keyword.
SELECT Id, Name, Country__c, State__c, City__c, PAN_Number__c FROM Account WHERE PAN_Number__c LIKE NULL AND Name LIKE '%a%'
Old:invalid operator
New:unexpected token: 'NULL'
- New error message when using more than two nested functions.
SELECT convertCurrency(calendar_year(convertTimezone(lastmodifieddate))) FROM account
Old:expecting a right parentheses, found ‘(’
New:unexpected token: ‘(’
- New error messages in SOQL queries with invalid datetime literals.
SELECT Id FROM Account WHERE SystemModstamp > 2020-12-12t12:12:00-25:00
Old:line 1:67 mismatched character '5' expecting set '0'..'3'
New:Invalid datetime: 2020-12-12t12:12:00-25:00
SELECT Id FROM Account WHERE SystemModstamp > 2020-52-12t12:12:00-05:00
Old:line 1:51 no viable alternative at character '5'
New:Invalid datetime: 2020-52-12t12:12:00-05:00
- New error message when there isn’t a valid bind variable reference after a colon.
SELECT Id FROM Custom_User_Attribute__c WHERE User__c =: 0050W000007Jz7jQAC
Old:Only variable references are allowed in dynamic SOQL/SOSL
New:unexpected token: '0050'
- Support for negative currency values in queries, such as
- Review the changes in functionality and updates to error messages.
- Limitation on Modifying a Collection in Iteration
In API version 62.0 and later, modifying elements of a set while iterating the set in a for or foreach() loop throws an exception. This behavior is versioned. In API 61.0 and earlier, modifications to sets while iterating were sometimes allowed and generated unexpected results.- This sample code removes elements while iterating the set, which throws an exception:
System.FinalException: Cannot modify a collection while it is being iterated
.Set<String> set_string = new Set<String>{'one', 'two', 'three'};
for (String str : set_string) {
System.debug(str);
set_string.remove(str);
System.debug(set_string.contains(str));
}
System.debug(set_string);
- This sample code removes elements while iterating the set, which throws an exception:
- Mock SOQL Tests for External Objects
To increase code coverage and quality, you can now write better Apex unit tests for external objects and mock SOQL query responses by using the new SOQL stub methods and a new test class. Use basic and joined SOQL queries against external objects and return mock records in a testing context.- Create mock test classes by extending the new
System.SoqlStubProvider
class and overriding thehandleSoqlQuery()
class method. Create external object records using eitherTest.createStubQueryRow()
orTest.createStubQueryRows()
. Register the mock provider in the test usingTest.createSoqlStub()
and execute the test code.
- Create mock test classes by extending the new
- Design and Layout Controls for LWR Sites
New features in Experience Builder offer abundant options for refining your site design. Use new properties in the Theme panel to specify the style for more elements, such as buttons and headings. Anchor the header region of your site to the top of the page so that it stays visible even when visitors scroll down. Customize the color palette for an individual Columns component. Previously, you could customize only a full section or an entire site. - Modernized Record Experience in Aura Sites
Use upgraded record components, running on Lightning web component technology, and see stylistic changes to these components in your Aura sites. Previously, changes were available only in sandbox environments. Now changes are available in Create Record Form, Record Banner, and Record Detail components in production environments. - Easier to Troubleshoot your Salesforce Flow
Troubleshooting flow errors is easier than ever before. The new Errors and Warnings pane lists issues that prevent you from saving and activating your flow as you work in an easy to scan format. The pane includes links to the Flow Builder canvas that help you identify the source of issues. You can show or hide the new pane with the Show Error button, which includes a notification badge that displays the total number of issues to address. - Flow Child Resources
When referencing the child resource of an element in a flow, such as a screen component within a Screen element, now you can search for and select it directly in the updated resource menu. Previously, you had to first select the element of the child resource, and then select the child resource.
This change applies to these child resources: Screen components, screen actions, Decision element outcomes, and Wait element configurations. - Create New Variable and Constant Flow Resources More Easily
Now it’s easier to create new variable and constant flow resources with improved grouping and user-friendly labeling. Resource grouping is now enabled for Text, Number, Currency, Boolean, Date, and Date/Time data types. These improvements make it easier for you to more quickly discover the resources that you need. - Find Flow Resource Variables More Easily
With this update, Flow Builder extends the enhanced resource-selection experience to Assignment and Create Records elements. Resources such as Actions, Screen components, and Variables are grouped so it’s easier to find what you need. - Identify Inefficient Flow Designs with New Tips
New tips in Flow Builder help you identify designs that can slow down your flows and increase the risk of reaching Apex governor limits. These tips appear in the Flow Builder canvas and provide guidance on how to improve your flow. By addressing these suggestions, you can ensure that your flows are running efficiently and avoid potential performance issues. - Better Screen Flow Experience with Action Buttons
With the Action Button component, the running user can trigger a screen action with the click of a button on a screen. The screen action runs an active autolaunched flow, and the results of the autolaunched flow can be shown on the same screen as the button. This component means fewer screens so users can complete screen flows more quickly and with fewer mistakes. Previously, users clicked through multiple screens to get the same functionality. Now generally available, the Action Button component includes some improvements since the last release. - Modify Existing Record Collection in the Repeater Component
You can now use the Repeater component to update existing record collections so it’s easier for end users to change a collection of records in a screen flow. Previously, the Repeater component in the Screen element supported only creating records. - Disable More Screen Component Fields at Run Time
Now you can disable fields on the Action Button, Dependent Picklist, Lookup, Phone, and Slider screen components by using the component’s Disabled attribute. When the Disabled attribute is set to true, screen flow users can’t focus on or modify any fields in the component. A gray background appears on the component’s input fields to give users a visual cue. - Select Multiple Choices with Choice Lookup Component
You can now configure the Choice Lookup component to accept either a single selection or multiple selections (up to 25), making it more flexible for your business processes. Previously, only the Lookup component supported selecting multiple options through a lookup field. - Recognize and Differentiate Between Custom Components Instantly in Screen Elements
Custom components now show labels or API names directly on the component in Flow Builder where you add the component to the Screen element, streamlining your workflow and reducing confusion. Previously, without a preview, understanding the role and function of each custom component was a guessing game, especially if you added the same component more than once. - Get Help Creating Flow Formulas with Einstein (Beta)
Build flow formulas with ease by describing what you want to calculate and letting Einstein generative AI figure out the functions and operators for you. Formulas created by Einstein are available only in Flow Formula Builder. Generative AI can produce inaccurate or harmful responses, so it’s important to test your formula for accuracy and safety before activating your flow. - CC and BCC Options in Send Email Action in Flow
The maximum total number of recipient email addresses is increased from 5 to 150. You can now add CC and BCC recipients to emails by using the Send Email Action in Flow Builder. Any address entered in the CC field receives a copy of the email, and those in the BCC field also receive a copy, but their email addresses are hidden from all recipients. - See Scheduled Flows Limit in Debug Details
Now, you can view the maximum number of scheduled flows that your org can run daily, helping you stay under the limits. Previously, the panel showed only the ID of the record on which the debug operation ran and the number of records impacted. This additional information helps you plan and execute more efficiently, avoiding the frustration of halted flows. - Einstein Next Best Action in Experience Cloud Sites
Use Einstein Next Best Action to build AI-powered insights for a wide array of use cases. You can use point-and-click and programmatic functionality to build applications that predict anything surfaced through Salesforce. In Experience Cloud sites, you can add the Einstein Next Best Action component in your Experience Cloud page to set up data that uses flows, strategies, and the Recommendation object to create personalized offers and actions for your users using business logic and predictive models to refine those recommendations. - Control Who Can Perform Authenticated Callouts with Ease
It’s easier than ever to configure permissions for named credentials so that your users can make authenticated callouts to external systems. Previously, after you enabled external credential principal access, you also assigned object permissions for User External Credentials manually on each permission set or profile. Now, most standard permission sets and profiles have access to the User External Credentials object by default. For the guest user profile, and for existing custom permission sets and profiles, you must still grant access to the User External Credentials object manually
Of course, there are more in this release, I will try to update this blog to cover them. However, I request all of you go to the Release note page and read them all as I have just covered platform stuff. There are many things related to each cloud and industry as well.
I hope you’ve enjoyed reading this. see you on the next one!