Salesforce Spring’24 Release Quick Summary

Salesforce Spring’24 Release Quick Summary

Currently, the Spring’24 release is available under the pre-release program. On the 05th of January 2024, Sandboxes will be upgraded, and as a result, your organization will get the look and feel of the Spring’24 release.

In this release, there are numerous fresh features and improvements encompassing various areas. These include enhancements in Lightning Experience, enhancements in Salesforce Flow, updates to Lightning Web Component and Apex, and new features in Experience Cloud. Einstein Automate and Data Cloud have also seen significant upgrades. Additional improvements can be found in Salesforce Scheduler, Field Service, and Marketing Cloud Account Engagement (formerly known as Pardot). Updates to Quip, CRM Analytics, Salesforce CMS, and Salesforce Payments are also included. Enhancements in Salesforce Connect, Salesforce Backup, and Subscription Management are noteworthy. There are new features in Enablement Sites (myTrailhead), Financial Services Cloud, Salesforce Revenue Cloud, and various APIs.

For example, some exciting features like Streamline Integration Callouts with Integration Orchestration (Pilot), Use Status-Based Capacity with Messaging (Beta), Embed CRM Analytics Dashboards in LWR Sites (Beta) , Get Core Major Releases with No Downtime, Connect Securely to Snowflake and Perform Interactive Queries from Salesforce, and Create Richly Formatted Service Documents with Document Builder are coming to Salesforce. 

Additionally, take a look at these beta and pilot features:

  1. Define Rules to Filter Search Results Shown to End Users (Beta): – Give your end users more relevant search results with less noise by adding field rules to your search query configuration in Search Manager. You can apply rules to global search and search in LWR Experience sites for Experience Cloud and the Lightning Knowledge component in Service Console. 
    1. This change applies to Lightning Experience in Professional, Enterprise, Performance, Unlimited, and Developer editions.
  2. Trigger Recipes to Run When an External Connection Syncs or a CSV Uploads (Beta): – Set your event-based recipe schedules to run when an external connection syncs or a CSV upload finishes. Instead of being limited to one event for your trigger, you can select multiple events. Create a recipe schedule to run after a local connection syncs and after an external connection syncs, keeping your recipe up to date regardless of the input source.
    1. This change applies to CRM Analytics in Lightning Experience and Salesforce Classic. CRM Analytics is available in Developer Edition and for an extra cost in Enterprise, Performance, and Unlimited editions. This change also applies to Salesforce Data Pipelines in Lightning Experience. Salesforce Data Pipelines is available for an extra cost in Enterprise, Performance, and Unlimited editions.
  3. Reveal Actionable Data with Summary Filters in Lightning Reports (Beta): – Surface the data that’s most meaningful and actionable by adding summary filters to your Lightning reports. For example, you can filter campaign reports based on the number of campaigns a customer signed up for. Or display your top 10 accounts with the most activities. Summary filters aren’t available for Data Cloud reports or custom report types with an outer join.
    1. This change applies to Lightning Experience in Group, Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. From Setup, in the Quick Find box, enter Reports and Dashboards Settings, and then select Reports and Dashboards Settings.
      2. Select Enable filters on aggregated data such as record counts in reports.
      3. Create a summary report with at least one grouping, and turn off Detail Rows. Add a summary filter.
  4. Render Components in Native Shadow with Mixed Shadow Mode (Beta): – Get your components ready for native shadow DOM to achieve better performance and alignment with web standards.
    1. This change applies to custom Lightning web components in Lightning Experience, Experience Builder sites, and all versions of the Salesforce mobile app
    2. <<Steps to Implement>>
      1. Use shadowSupportMode = ‘native’ to render your component in native shadow DOM.
        
        
        export class MyComponent extends LightningElement {
          static shadowSupportMode = 'native';
        }

  5. Capture a Scratch Org’s Configuration with Scratch Org Snapshots (Beta): – Capture a snapshot of a scratch org’s configuration so that you can use it to create scratch org replicas. A snapshot is a point-in-time copy of a scratch org.
    1. This change applies to Lightning Experience and Salesforce Classic in Developer, Enterprise, Performance, and Unlimited editions.
    2. <<Steps to Implement>>
      1. Enable Scratch Org Snapshots in the Dev Hub org that you use to create scratch orgs. 
      2. Then use Salesforce CLI commands to create and manage the snapshot, such as org create snapshot and org list snapshot.
  6. Boost LWR Site Performance and Scalability with Experience Delivery (Pilot): – Boost the performance and scalability of your LWR sites using Experience Delivery, a powerful new infrastructure for hosting LWR sites in Experience Cloud. Along with subsecond page load times, this new infrastructure provides improved security and search engine optimization (SEO) to ensure that your site meets your customers’ demands.
    1. This change applies to all LWR sites accessed through Lightning Experience and Salesforce Classic in Enterprise, Performance, and Unlimited editions. Developer Edition is unsupported.
    2. <<Steps to Implement>>
      1. After your org is approved for the pilot, you can enable Experience Delivery at the site level in the Settings tab of the site’s Administration workspace. Experience Delivery is supported in new and existing LWR and enhanced LWR sites.
  7. Collect Tax Globally with Salesforce Tax (Pilot): – Your storefront is going places—and your tax configuration is ready to follow. Calculate, collect, and report tax on global payments without maintaining static tax tables. Launch your storefront with robust taxation implementation and less configuration so that orders roll in faster.
    1. This change applies to B2B Commerce and D2C Commerce in Enterprise, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. If Salesforce enables the pilot permission and you’ve configured a merchant account for a web store, the tax service uses Salesforce Tax for calculating taxes.
  8. Leverage AI to Discover Skills for Courses and Programs (Pilot): – Find the skills that you want to associate with your learning courses and programs by using the Einstein Skills Generator. Let Einstein suggest skills that fit the course or program based on data from the public domain, or choose from the skills that you used before.
    1. This change applies to Lightning Experience in Enterprise, Unlimited, and Developer editions where the Education Cloud license is enabled.
    2. <<Steps to Implement>>
      1. Enable Einstein for Education Cloud in Setup. Then, from the app navigation menu in the Academic Operations app, select Learning Courses and click New from Learning Wizard

Supported Browsers for Lightning Experience

Lightning Experience is supported by Apple® Safari®’s latest version on macOS. The most recent stable versions of Microsoft® Edge Chromium, Mozilla® Firefox®, and Google Chrome™ are also supported.

Use Apple Safari on iPadOS (iOS 13.x) or laterPortrait orientation and orientation switching aren’t supported on Lightning Experience on iPad Safari. Use landscape orientation and maximize your Safari browser to full width. To avoid orientation switching, turn on the iPad rotation lock.

Salesforce treats touch-enabled laptops, including Microsoft Surface and Surface Pro devices, as laptops instead of tablets. You can’t access the Salesforce mobile app on these devices. Users are redirected to the full site experience that’s enabled for them—Lightning Experience or Salesforce Classic. Only standard keyboard and mouse inputs are supported on these types of devices.

Customers / Administrator’s Point of View

  1. Import Account Engagement Email Data into Data Cloud: – Personalize your marketing efforts through Data Cloud using your email engagement data. To import data, enable the Account Engagement connector in Data Cloud and create an email engagement data stream.
    1. This change applies to all Account Engagement editions.
  2. Draft Personalized Sales Emails with Einstein: – Sales Emails empower busy sales reps to move quickly and expand deals through personalized and informed email content that buyers love. Einstein uses your sales data to generate personalized emails for contacts and leads, a method known as grounding. Sales reps can draft common emails, like a follow-up or a meeting invitation, by choosing an email type. Email types can include product information or related objects. Reps can use preset email types and custom email types created by their admins.
    1. This feature is available in Lightning Experience in Performance and Unlimited editions. Einstein generative AI is available in Lightning Experience.
    2. <<Steps to Implement>>
      1. In Lightning Experience, Einstein Sales Emails is built directly into the email composer. In Salesforce Outlook or Gmail integrations, users can see Einstein generative AI in the email application pane.
      2. Start creating an email. Click Draft with Einstein and choose an email type from the list (1). Review and edit the email, and then send it (2).
  3. Connect Google to Salesforce with a Google Workspace Marketplace App: – When setting up Einstein Activity Capture, you can now connect to Salesforce with the new Einstein Activity Capture app on Google Workspace Marketplace. This authentication method provides controlled access to your Google servers while letting you manage users directly in the Google Workspace Marketplace app.
    1. This change applies to Lightning Experience in Essentials, Professional, Enterprise, Performance, and Unlimited editions.
    2. <<Steps to Implement>>
      1. If you’re setting up Einstein Activity Capture for the first time, select Google Workspace Marketplace App as your authentication method.
      2. If you’ve set up Einstein Activity Capture and want to change your authentication method, reset Einstein Activity Capture. After the reset process is complete, set up Einstein Activity Capture again and select Google Workspace Marketplace App as the authentication method.
  4. Get a Full View of Account Health with the Account Intelligence View: – See account activity, scan opportunity metrics, review cases, and log activities, all in one place in the Account Intelligence view. Previously, the account home page provided only a simple list view and required users to navigate to individual records to view opportunity, activity, or case data.
    1. This change applies to Lightning Experience in Professional, Enterprise, Performance, and Unlimited editions with Sales Cloud.
    2. <<Steps to Implement>>
      1. In the Account Intelligence view, you can quickly filter accounts (1) and see statistics, such as the total value of open opportunities and next close date, for resulting records (2). To see detailed activity, opportunity, and case data for individual records, click the side panel icon (3) next to the record name. In the side panel, toggle between panes showing activity data or related records (4) or log activity (5) without leaving the Intelligence view.
  5. Create Responsive Cadences Faster with Cadence Builder 2.0: – Cadence creators can now build standard cadences sensitive to target engagement with much less effort and complexity. Creators use only three tracks—neutral, positive, and negative—to hold cadence steps appropriate to different target responses. Entry rules for each track let targets move to the appropriate track based on their responses, whenever they occur. Previously, relatively simple branching scenarios based on target response often required large numbers of redundant steps after each branch.
    1. This change applies to Lightning Experience in Performance, Unlimited Editions, Professional, and Enterprise Editions with Sales Cloud.
    2. <<Steps to Implement>>
      1. Users can choose between Cadence Builder 2.0 and Cadence Builder Classic when first creating a cadence. Cadence authors create steps and cadence exit rules in the same way in Cadence Builder 2.0 and Cadence Builder Classic. Cadence Builder 2.0 doesn’t support cadence autolaunched flows or screen flow steps.
  6. Drive Success with Seller Home: – Now Sales team members can start their day with a complete view of their business. Seller Home shows users an overview of their opportunities, accounts, leads, and contacts, along with their day’s agenda. Seller Home also lets users set goals and track progress and view their to-do items, recent records, and contact suggestions from Einstein.
    1. This change applies to Lightning Experience in Professional, Enterprise, Performance, and Unlimited editions with Sales Cloud.
    2. With more useful information available at a glance, users can get oriented faster and choose what to do next. Seller Home includes:
      1. Opportunity overview
      2. Account overview
      3. Lead overview
      4. Contact overview
      5. Weekly or monthly goals
      6. Today’s Events
      7. To-do items
      8. Recent Records
      9. Contact suggestions—identified by Einstein from a user’s emails and events
    3. <<Steps to Implement>>
      1. Seller Home is the default Home page for the Sales, Sales Console, and Sales Engagement apps. It appears automatically if you haven’t applied a custom home page to these apps or as your org-wide default. If you’ve customized these pages, you can manually enable Seller Home from the Home item in Setup. Once enabled, select the App System Default as the Home page for the Sales, Sales Console, and Sales Engagement apps.
  7. Build Your Own Predictive AI Models: – Use clicks, not code, to create AI models from scratch without leaving Salesforce. Let Einstein guide your way to AI-powered predictions in Data Cloud. For example, predict numeric measures like opportunity amount or case satisfaction score. Or predict binary outcomes such as whether you’ll win or lose an opportunity or the likelihood a case will be escalated.
    1. This change applies to Data Cloud in Developer, Enterprise, Performance, and Unlimited editions.
    2. <<Steps to Implement>>
      1. In Einstein Studio, click New and select Create a model from scratch.
  8. Get Predictions from Your AI Models: – Use Einstein Studio prediction jobs or Flow Builder actions to consume predictions from your AI models. Activating a model enables you to consume predictions in Salesforce. The resulting actionable insights can be used to drive business intelligence.
    1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. You can consume predictions from AI models created in Einstein Studio in two ways.
      2. In Setup, locate your activated model on the Einstein Studio tab. In the model details, scroll to the Prediction Jobs section. As a job runs, it scores records and saves the predictions in a Data Cloud object. Your predictions refresh when there are updates to your model input fields.
      3. In Setup, search for and go to Flows. To invoke the model endpoint to get predictions, create a flow and select the Autolaunched Flow.
  9. Deploy Scalable Apps with Scale Center: – Diagnose root causes and act on scale issues earlier in your development cycle. View org performance metrics and analyze performance reports.
    1. This change applies to Lightning Experience in the Unlimited Edition and Signature Success customers. Scale Center isn’t supported in Government Cloud Plus.
    2. Scale Center is generally available at no additional cost for all Unlimited Edition (UE) Full Copy Sandbox, Signature, and Scale Test customers.
    3. You can enable Scale Center for five Standard (non-SysAdmin) users per org.
    4. You can run 15 Deep Dive investigations per week, per org.
  10. View and Set Forecasts with Forecast Groups:Forecast the way you do business by grouping forecasts into segments that make sense for your business. For example, define forecasts that are grouped into specific industries or sale types. Creating your own forecast groups gives your forecast managers more flexibility to review and predict future sales. Forecast groups are available for forecast types created in Spring ’24 or later and they are based on the Opportunity and Opportunity Product objects. You can continue to group forecasts by product family.
    1. This change applies to Lightning Experience in Professional, Performance, and Developer editions and in Enterprise and Unlimited editions with the Sales Cloud.
    2. <<Steps to Implement>>
      1. Depending on which object you use for forecasts, add custom single-selection picklist fields that represent the groups to the Opportunity, Opportunity Product, or Product objects. Ensure the picklist is available on the object page layout that your sales reps and forecast managers use.
      2. In Setup, open Forecast Settings, and then create a forecast type based on the Opportunity or Opportunity Product object. In the setup flow, select to group by the custom picklist that you defined. Then, select the values within that picklist to include in the forecast type.
  11. Create Richly Formatted Service Documents with Document Builder: – Express your business goals and branding, make it easier for your mobile workers to share information with customers, and build service documents faster with Document Builder.  Document Builder provides components that you can drag onto the Template Builder to create service documents. Spend less time on upkeep with dynamic templates that can update numerous documents at once. Translate service documents, collect signatures, embed images, and generate and preview PDFs on your desktop and the Field Service mobile app. You can also add custom Lightning web components (LWCs) and use spanning fields to target polymorphic lookups. 
    1. This feature is available in Lightning Experience and Mobile in Enterprise, Unlimited, and Developer editions with the Field Service managed package installed.
    2. <<Steps to Implement>>
      1. To register your org, find Field Service Settings in Setup and select the Enable Document Builder checkbox. After you receive an email notification that you’re registered, you can start creating service document templates. Only Salesforce admins, with access to the Setup menu, can access the builder experience and create service document templates.
  12. Configure Scheduled Jobs Easily with Enhanced Optimization APIs: Fine-tune the configuration of optimization jobs scheduled via Enhanced Optimization by using the new FSL.ScheduleJobsApi Apex class. With this Apex class, you can modify the list of territory groups and their related scheduling policies for a specific job for easier job-to-territory matching.
    1. This change applies to Lightning Experience in Enterprise, Unlimited, and Developer editions with the Field Service managed package installed.
    2. View territories modified by FSL.ScheduleJobsAPI in the Field Service Admin app. From Field Service Settings, go to the Scheduled Jobs tab under Optimization. View the territories for the scheduled job under the Territory tab.
  13. Optimize Appointments by Using Concurrency in Shifts: – Service resources can now attend to multiple customers during the same time slot within their shift. Define the maximum number of appointments that can be booked for the same time slot for the selected topics within the selected shift.
    1. This change applies to Lightning Experience in Enterprise and Unlimited editions where Salesforce Scheduler is enabled.
    2. <<Steps to Implement>>
      1. To configure shift concurrency, in the shift schedule view, hover over a shift card, and then click Configure Shift Settings.
      2. Select Set concurrent topics, and then define the maximum number of appointments that can be booked for the same time slot for the selected topics.
  14. Evaluate Service Appointment Candidates Efficiently by Prioritizing Skill Preferences: – Identify the best-qualified candidates when optimizing your schedule by using the new Skill Preference service objective. Find candidates with a skill of a certain skill type that reflects the service appointment’s skill preferences. For example, a service appointment requires a caregiver who speaks English or Spanish but the preferred choice is Spanish. Previously, the candidates included English or Spanish speakers without ranking them.
    1. This feature is available in Lightning Experience and Salesforce Classic in Enterprise, Unlimited, and Developer editions with the Field Service managed package installed.
    2. <<Steps to Implement>>
      1. In Setup, go to Field Service Settings and verify that Field Service Enhanced Scheduling and Optimization is enabled. Add the Skill Preference service objective to your scheduling policy from the Customize Scheduling Policies page in Guided Setup or the Scheduling Policy Objectives related list on a policy.
  15. Transition to the Lightning Editor for Email Composers in Email-to-Case (Generally Available) (Release Update): – When enabled, this release update replaces the email editor in the docked and case feed email composers. The new email editor is generally available in Lightning Experience.
    1. This change applies to Lightning Experience in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
    2. Salesforce is replacing the email editor in the docked and case feed email composers and switching to a modern editor based in HTML 5. The new editor provides similar functionality in Lightning Experience. New features include:
      1. Full-screen mode
      2. Printing
      3. Undo and Redo buttons
      4. Format painting
      5. Emoji picker
      6. Resizability
      7. A more responsive toolbar
      8. Smart copy-paste functionality
      9. You can drag, as well as copy and paste, file attachments and inline images into the editor.
  16. Unify Your Organizational Knowledge Across Sources in Salesforce: – Unify all your organizational knowledge from third-party systems like SharePoint, Confluence, Google Drive, and websites within Salesforce. Expose the unified knowledge base across every customer touchpoint and search experience, and ground Generative AI products for Service.
    1. This change applies to Lightning Experience in Enterprise, Unlimited, Developer, Essentials, and Professional editions.
    2. Unified Knowledge (Beta) eliminates fragmentation issues by:
      1. Surfacing all your organizational knowledge in a single service platform and capturing new issues from cases.
      2. Improving self-service by lowering the customer effort to find solutions.
      3. Connecting and harmonizing all knowledge sources to ground Service GPT apps powered by generative AI.
  17. Easily Update Fields in Lightning Report Filters: Save time when updating filters in response to changing reporting needs. You can now change the field in a Lightning report filter without deleting the filter and adding a new one. For example, you can change a filter on Industry to a filter on Type in a report on accounts without having to remove and recreate the filter and filter logic. In earlier releases, you could change the operator and value but not the field. Previously, this feature was available only in Salesforce Classic.
    1. This change applies to Lightning Experience in Group, Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. In the Filter By window, change the field, operator, or value.
  18. Access Report and Dashboard Subscriptions with Slack Slash Commands: – Reduce context switching and increase workflow efficiency and collaboration with the new way to view and configure Lightning reports and dashboards subscriptions. Wherever you are in Slack, you can enter a slash command that opens a window for managing subscriptions, including adding and removing recipients. Previously, you could manage these items only within the CRM Analytics for Slack app.
    1. CRM Analytics for Slack is available for use where approved by a workspace admin and installed in Slack.
    2. <<Steps to Implement>>
      1. To access report subscriptions, enter /analytics-lx-rpt-subscriptions in the Slack message field.
      2. To access dashboard subscriptions, enter /analytics-lx-db-subscriptions in the Slack message field.
  19. Automate Payment Link Creation Using Flow Builder:Easily create a payment link for Pay Now transactions using the Generate Payment Link flow, which you can clone and customize for your workflow. You can then copy the link and send it to your customer. The link sends that customer to the Pay Now page to complete the transaction.
    1. This change applies to Pay Now in Enterprise and Unlimited editions.
    2. <<Steps to Implement>>
      1. In Flow Builder, copy and customize the standard flow. To launch the flow from an object record, add an action to the object, and then add the action to the object’s page layout. The action triggers the flow to create a payment link. Here’s an example of a Generate Payment Link button in a quote record that starts the flow.
  20. Add Fields from Related Objects to Dynamic Forms-Enabled Pages: – Drill into lookup relationship fields from the component palette in the Lightning App Builder and access fields from related objects. To display relevant data from related objects, drag the cross-object fields onto your record page.
    1. This change applies to Lightning Experience in Group, Professional, Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. On the Fields tab, a breadcrumb at the top shows the spans that you drilled into. The top-level breadcrumb indicates the object that the page is associated with.
      2. Cross-object relationship fields have an arrow icon (>). You can drag them onto the page as is, or click the arrow icon to drill in.
      3. When you select a cross-object field on the canvas, a new Object property shows the relationship of the field to the base object associated with the Lightning page.
      4. You can drill down two levels. Polymorphic relationship fields—where the related object can be one of several different types of objects—aren’t supported as cross-object fields in Lightning App Builder.
  21. Set Field Visibility by Device in Dynamic Forms: – Previously, you could set visibility rules based on device form factor on Field Sections and other components but not on individual fields. Now, you can customize your desktop and mobile Lightning record pages even more granularly and restrict field visibility by device form factor, such as desktop or phone.
    1. This change applies to Lightning Experience in Group, Professional, Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. On a Dynamic Forms-enabled page in the Lightning App Builder, select a field on the canvas. In the properties pane, create a visibility rule filter using the Device context to set the field to display exclusively when its page is viewed in a specific experience.
  22. Save Agents’ Time with New Messaging Components for Enhanced Bots (Beta): – Empower customers and save service agents’ time with the authentication, custom, form, and payment messaging components. Enhanced bots can now handle more complex use cases on enhanced Apple Messages for Business channels. The form component is also available for Messaging for In-App and Web.
    1. This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions. Setup for Einstein Bots is available only in Lightning Experience.
    2. <<Steps to Implement>>
      1. Create and manage components on the Messaging Components page in Setup.
      2. To add a messaging component to your enhanced bot, on the Dialogs page of the Bot Builder, add the associated dialog step to a dialog.
  23. Translate Dialogs Easily to Different Languages (Beta): – Connect with more customers by quickly translating your bot’s dialogs to different languages. Multi-language bots can now translate a dialog to another language in seconds. Previously, you manually added translations for each secondary language.
    1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions. 
    2. <<Steps to Implement>>
      1. In the Bot Builder, go to the dialog that you want to translate. Then, on the Dialog Translations tab, select a secondary language from the dropdown. In the Translations section, select the dialog steps that you want to translate, and then click Translate Selected.
  24. Get More in Pipeline Inspection with Increased Record Limits in Charts and Views: – All metrics, list views, and charts now have a 2,000 record limit. Previously, the flow chart and some metrics in the pipeline changes metrics group had a 1,000 record limit, while the waterfall chart and forecast category metrics had a 2,000 record limit. This change greatly expands your sales teams’ ability to manage more deals and view wider time periods. 
    1. This change applies to Lightning Experience in Enterprise, Performance, and Unlimited editions with Sales Cloud.
  25. See the Knowledge Article Einstein Used to Draft Grounded Service Replies: – Help agents quickly focus in on relevant case information with links to knowledge articles from recommended replies. In a live chat or messaging session, Einstein shows which replies are based on knowledge articles in the replies component. To see the source article, click Knowledge.
    1. This change applies to Lightning Experience in Unlimited Edition with Service Cloud Einstein and the Einstein GPT for Service add-on.
    2. <<Steps to Implement>>
      1. After you set up Service Replies for Chat and Service AI Grounding, Einstein uses your knowledge base to draft replies. When agents use replies in a live chat or messaging session, Einstein drafts and recommends relevant replies. Below each reply Einstein shows which replies are based on conversation context or knowledge. For replies based on knowledge articles, click the link to see the article Einstein used as a source for the reply.
  26. Disable Ref ID and Transition to New Email Threading Behavior (Release Update): – This update turns off Ref ID threading and transitions to Lightning threading in Email-to-Case. With the new Email-to-Case threading behavior, incoming emails aren’t matched using Ref IDs. Instead, they’re matched using a secure token in the email subject or body. If no match is found, Email-to-Case checks metadata from the email headers. This update is scheduled for enforcement in Spring ’25.
    1. This change applies to Lightning Experience in Essentials, Professional, Enterprise, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. To review this update, from Setup, in the Quick Find box, enter Release Updates, and then select Release Updates. For Disable Ref ID and Transition to New Email Threading Behavior, follow the testing and activation steps.
      2. When you enable Lightning threading, emails continue to thread to cases using email headers. If you disable the update and move back to Ref ID, emails don’t always thread to previously created cases, resulting in new cases being generated. If Do Not Auto-Enable New Features is off, Salesforce set email preferences for threading tokens based on the corresponding Ref ID settings for email subjects and bodies.
      3. If you use merge fields in email templates, replace Case.Thread_Id with the merge field Case.Thread_Token.
      4. In your custom code, replace Cases.getCaseIdFromEmailThreadId wherever it occurs with Cases.getCaseIdFromEmailHeadersEmailMessages.getRecordIdFromEmail, or a combination of both.

Additional Enhancements Worth Noting!

  1. Generate Content with Einstein in Account Engagement: – Safely use generative AI to streamline your content creation process. Quickly create forms, landing pages, email subject lines, and email body copy with Einstein Assistant for Account Engagement.
    1. This feature is available in Account Engagement Advanced and Premium editions and in Lightning Experience in Enterprise, Unlimited, and Performance editions.
  2. Update Your Account Engagement Sending Domains to Prepare for 2024 Email Platform Changes: – Gmail and Yahoo announced changes to their spam prevention methods in 2024. Keep emails out of spam filters and stay aligned to email deliverability best practices by updating your sending domain with a verified DomainKeys Identified Mail (DKIM) record.
    1. This change applies to all Account Engagement editions.
  3. Experience Improved Performance on More Record Home Pages: – More objects are Lightning Web Components (LWC)-enabled in Spring ’24. Create, view, or edit the record home pages with improved performance, stronger accessibility support, and better service availability.
    1. This change applies to Lightning Experience and all Salesforce mobile apps in all editions.
    2. Over 120 objects are LWC-enabled in Spring ’24, including AdverseEventAction, IssuedCard, ResearchStudy, and Visit. For the full list, see the Lightning Web Components Developer Guide (can be outdated or unavailable during release preview).
    3. Several objects are no longer LWC-enabled.
      1. WorkOrder
      2. WorkOrderLineItem
      3. ServiceAppointment
  4. Troubleshoot Setup and Appointment Scheduling Issues: – Users with the out-of-the-box System Administrators profile can run the Salesforce Scheduler Troubleshooter to identify the issues related to Scheduler setup, service resource setup, and an Experience Cloud user setup. The issues can occur due to missing system permissions, object accesses, or field-level permissions, unavailable time slots, and object record validations.
    1. This change applies to Lightning Experience in Enterprise and Unlimited editions where Salesforce Scheduler is enabled.
    2. <<Steps to Implement>>
      1. From Setup, in the Quick Find box, enter Troubleshooter, and then select Troubleshooter under Salesforce Scheduler.
  5. Control Your Data Prep Concurrency Allocation: – Allocate your data prep jobs to meet your orchestration needs. Instead of being limited to only two dataflows and one recipe at a time, you can share concurrency across job types. For example, with concurrency sharing enabled, you can schedule three recipes to run at the same time.
    1. This change applies to CRM Analytics in Lightning Experience and Salesforce Classic. CRM Analytics is available in Developer Edition and for an extra cost in Enterprise, Performance, and Unlimited editions. This change also applies to Salesforce Data Pipelines in Lightning Experience. Salesforce Data Pipelines is available for an extra cost in Enterprise, Performance, and Unlimited editions.
    2. <<Steps to Implement>>
      1. From Setup, in the Quick Find box, enter Analytics, and select Settings. Select Enable concurrency limit sharing between dataflows and recipes and save.
  6. Get Improved Dashboard Performance with Better Caching: – Your dashboards are now more responsive and load faster with improved caching. Dashboard query results are now cached, increasing performance with fewer calls to the server.
    1. This change applies to CRM Analytics in Lightning Experience and Salesforce Classic. CRM Analytics is available in Developer Edition and for an extra cost in Enterprise, Performance, and Unlimited editions.
    2. <<Steps to Implement>>
      1. From Setup, in the Quick Find box, enter Analytics, and select Settings. Select Disable dashboard query caching.
  7. Update Organization-Wide Defaults Faster: – Changes to organization-wide defaults now process quicker when you have a large number of parent accounts, person accounts, or associated portal accounts. You can monitor the progress of these smaller phases of the larger org-wide defaults recalculation operation on the Background Jobs page.
    1. This change applies to Lightning Experience and Salesforce Classic in Professional, Enterprise, Performance, Unlimited, Developer, and Database.com editions.
    2. <<Steps to Implement>>
      1. From Setup, in the Quick Find box, enter Background Jobs, and then select Background Jobs.
  8. Power Generative AI Using Third-Party LLMs: – Connect to generative AI power from external large language models (LLM) inside Salesforce. In Einstein Studio, you can now set up an external LLM as a foundation model to serve as a source for generative AI. For example, configure Open AI or Azure OpenAI to summarize text or generate chat responses to accelerate tasks, reduce response time, and enhance your overall operational efficiency.
    1. This change applies to Data Cloud in Developer, Enterprise, Performance, and Unlimited editions.
    2. <<Steps to Implement>>
      1. In Einstein Studio, go to the Foundation Models tab and click Add Foundation Model. Enter the endpoint details, and specify a name.
  9. Get Notified Before Deleting Permission Sets Assigned to Users: – If you try to delete a permission set included in a permission set group that’s assigned to users, you now receive an error. You can only delete a permission set that isn’t assigned to users either directly or through a permission set group. Previously, this action wasn’t blocked, which allowed users to be assigned to empty permission set groups without enabled permissions.
    1. This change applies to Lightning Experience and Salesforce Classic in Contact Manager, Group, Essentials, Professional, Enterprise, Performance, Unlimited, Developer, and Database.com editions.
  10. Enable ICU Locale Formats (Release Update): – To conduct business wherever you are, adopt the International Components for Unicode (ICU) locale formats. Locales control the formats for dates, times, currencies, addresses, names, and numeric values. ICU sets the international standard for these formats. The ICU locale formats provide a consistent experience across the platform and improve integration with ICU-compliant applications across the globe. When you enable this update, the ICU locale formats replace Oracle’s Java Development Kit (JDK) locale formats in Salesforce. This update was first made available in Winter ’20 and will be enforced on a rolling basis starting in Spring ’24.
    1. This change applies to Lightning Experience, Salesforce Classic, and all versions of the Salesforce mobile app in all editions, except Database.com.
    2. <<Steps to Implement>>
      1. To enable this update, from Setup, in the Quick Find box, enter Release Updates, and then select Release Updates. To Enable ICU Locale Formats, follow the testing and activation steps.
      2. The English (Canada) locale (en_CA) requires separate activation. From Setup, in the Quick Find box, enter User Interface, and select User Interface. Then select Enable ICU formats for en_CA, and save your changes.
      3. To defer the enforcement of the ICU locale formats until Spring ‘25, in Setup, in the Quick Find box, enter User Interface, and select User Interface. . Then deselect Enable ICU locale formats as part of the scheduled rollout and save your changes. This checkbox is visible only if your org uses the JDK locale formats.
  11. Improve SEO with Custom URLs for Custom Objects: – Boost organic traffic to your site by improving search engine optimization (SEO) with new URL configuration solutions. Create SEO-friendly URL snippets, or “slugs,” for your enhanced LWR site’s custom object pages. A slug improves SEO by replacing the record ID in the URL with relevant and human-readable information, ensuring that your site’s pages are optimally surfaced in search engines. Previously, SEO-friendly URLs were only available for Product and Catalog pages.
    1. This change applies to LWR sites accessed through Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.
  12. Report on Knowledge Engagements Across Channels and Contexts: – Measure the effectiveness of your knowledge base and get recommendations on how to increase ROI with the Knowledge Effectiveness dashboard. Across all Service channels and Einstein products, understand how Knowledge is providing value through direct views or Knowledge-grounded generative AI content.
    1. This change applies to Lightning Experience in Enterprise and Unlimited editions.
    2. With the Knowledge Effectiveness dashboard, you can:
      1. Analyze article trends based on how often or seldom users engage with articles over time. By understanding how your service agents and customers are interacting with knowledge content over time, you can spot trends and better understand article effectiveness.
      2. View engagement metrics to quickly assess whether your agents are meeting the compliance and training objectives set by your organization.
      3. Clarify ROI and cost saving metrics, such as reduced average handling time (AHT) and case deflection, by differentiating who is engaging with an article.
  13. Schedule Content to Publish and Unpublish in Enhanced CMS Workspaces: – Create schedules for your Salesforce CMS content to publish and unpublish on designated dates and at specific times. With content publication schedules, you can manage the content lifecycle more conveniently, without manually publishing and unpublishing each piece of content immediately. The workflow to publish or unpublish immediately or schedule content is now streamlined into one process.
    1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. From the content detail page, click Publish or Unpublish. Then choose to publish or unpublish now, or create a publication schedule. View and manage content publication schedules from the enhanced CMS workspace Publication Calendar tab or the Publication Activity tab on the content detail page.
  14. Control User Access with Operating Hours Sharing: – Sharing is now enabled and sharing settings are available for Operating Hours. Manage your sharing settings, including Org Wide Defaults, Sharing Rules, and Guest Sharing, on operating hours similar to other Salesforce objects that support sharing.
    1. This feature is available in Lightning Experience in Enterprise, Unlimited, and Developer editions with the Field Service managed package installed.
    2. <<Steps to Implement>>
      1. If you’re new to Salesforce Field Service this release, your Org Wide Default (OWD) for sharing is set to private. Existing customers retain user access to all operating hours records, and the OWD for sharing is automatically still set to public read/write. If you have guest users, Salesforce recommend creating guest-sharing rules post-release, so that operating hours are shared with all guest users. 
  15. Optimize Workforce Utilization by Comparing Workstream Consumption: – Sort the Weekly Summary view to help planners identify in advance days where demand for a specific workstream is low compared to days where the workstream has almost reached the limit. You can sort the view alphabetically or by consumption. Planners can then adjust the daily limits accordingly. For example, let’s assume you have a week with a daily limit of 100 hours for installation work and a 200-hour limit for breakfixes. Sorting the weekly view alphabetically can alert the planner if only 20 hours were consumed for installations while breakfixes have reached the 200-hour limit, preventing additional breakfixes from being scheduled. The planner can then decrease the limit for installations and increase the limit for breakfixes to ensure better resource utilization.
    1. This feature is available in Lightning Experience and Salesforce Classic in Enterprise, Unlimited, and Developer editions with the Field Service managed package installed.
    2. <<Steps to Implement>>
      1. In Setup, go to Field Service Settings and verify that Field Service Enhanced Scheduling and Optimization is enabled.
  16. Visualize Hierarchies and Flatten Transformations with Preview in the Recipe Editor: – Preview the results of hierarchical data in aggregate nodes and flatten transformations to ensure that you have the correct output before running your recipe. For example, if you’re flattening a role hierarchy to implement row-level security on a dataset, you can preview the results to verify that they’re as expected before proceeding.
    1. This change applies to CRM Analytics in Lightning Experience and Salesforce Classic. CRM Analytics is available in Developer Edition and for an extra cost in Enterprise, Performance, and Unlimited editions. This change also applies to Salesforce Data Pipelines in Lightning Experience. Salesforce Data Pipelines is available for an extra cost in Enterprise, Performance, and Unlimited editions.
    2. <<Steps to Implement>>
      1. In the Data Prep recipe, select an aggregate node (1) in the graph to view the preview results (2).
  17. Translate the Related List Label in the Dynamic Related List – Single Component: – To show users the Related List label in their language, create a custom label with translations in Setup. In the Lightning App Builder, go to the Lightning page where you want to include the Dynamic Related List – Single component. Enter {!$Label.customLabelName} in the Related List Label field, replace “customLabelName” with the name of your custom label, and save your changes. Users whose language is set to the language of your translated custom label see the translated value.
    1. This change applies to Lightning Experience in Professional, Enterprise, Performance, Unlimited, and Developer editions.
  18. Focus Your View with More Dashboard Filters in All Salesforce Editions: – Users in all Salesforce editions can now refine and target dashboard data with up to five filters on Lightning dashboards. With more filters, you can reuse the same dashboard for different teams while preserving the filters that are already set up. Save time and effort and reduce dashboard redundancy by eliminating the need to clone dashboards for different teams and business units.
    1. This change applies to Lightning Experience in Group, Essentials, Professional, Enterprise, and Developer editions.
    2. <<Steps to Implement>>
      1. For example, previously, if you filtered on Stage, Opportunity Owner, and Type, you couldn’t add a Region filter to reuse the dashboard for all your teams. Now you can include the Region filter and even have room for a Created Date filter.
  19. Filter Report Types by Objects or Fields in Enterprise and Performance Editions: – Ensure the Lightning reports that you create contain the data you need without trial and error. Enterprise and Performance Edition users can now quickly find all the report types that include specific Salesforce objects or fields. For example, if you’re building a report that needs to include the Age field on the Case object and the SLA field on the Account object, add those fields to the report type filter to see report types that include those fields. You can filter report types by up to 20 objects or fields. You can’t filter by fields included in a lookup or part of a composite field, such as geolocation or address. Previously, this feature was available only in Unlimited Edition.
    1. This change applies to Lightning Experience in Enterprise and Performance editions.
    2. <<Steps to Implement>>
      1. In the Create Report window, click Filter report types, and select either Salesforce objects or fields to search.
  20. Supercharge Your Visualizations with Images, Rich Text, and Dashboard Widgets in All Salesforce Editions: – Salesforce users in all editions can now use rich text and image widgets in Lightning dashboards. Explain charts, describe metrics and KPIs, and clarify tables with rich text right where users need it. Add company logos and branding, flow diagrams, and embedded images. Guide users through their data with section titles, narrative text, and even animated GIFs. Lightning dashboard components are now called widgets in all editions. Dashboards now support up to 25 widgets, including a maximum of 20 charts and tables, 2 images, and 25 rich text widgets. The former limit was 20 in total. Previously, this feature was available only in Unlimited Edition and Performance editions.
    1. This change applies to Lightning Experience in Group, Essentials, Professional, Enterprise, and Developer editions.
    2. <<Steps to Implement>>
      1. When editing a dashboard, click +Widget and select the type of widget to add.
      2. Combine charts, text, and images to inform, engage, and guide viewers.
      3. Image widget settings, like tile, stretch, and fit to height, aren’t applied to dashboards delivered through email subscriptions. The image is shown at the original resolution within the widget.
  21. Renamed
    1. Salesforce Connect Adapter for Amazon Athena Is Now Salesforce Connect Adapter for SQL
    2. To support new Marketing features in Salesforce, the classic app called Marketing was renamed to Marketing CRM Classic
  22. Retired:
    1. Salesforce Functions Is Being Retired
    2. Social Accounts, Contacts, and Leads Was Retired
    3. Salesforce for Outlook Is Being Retired in June 2024
    4. Social Customer Service Starter Pack Is Being Retired
    5. The Twitter Connector Has Been Retired
    6. Social Customer Service Starter Pack Is Being Retired
    7. Meeting Studio Is Being Retired
    8. Salesforce-Managed App for the Twitter Authentication Provider is Being Retired

Developer’s Point of View

  1. Handle Callbacks Asynchronously in Apex:If your OpenAPI specification includes a valid callback operation, External Services generates a typesafe Apex class with callback interfaces. Create an Apex client capable of handling an asynchronous callout by using the Apex callback interface. The Apex client waits for a delayed response from an external system for up to a year or beyond. To monitor status and system messages, use the Background Operations app or the Apex Debug log. Previously, you could call out to External Services only synchronously, where the callout waits for an HTTP response for up to two minutes and then times out.
    1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
  2. Search for Records with the Lightning Record Picker Component (Generally Available): – Use the lightning-record-picker component in a Salesforce application so that desktop and mobile users can quickly find and select Salesforce records. Configure the component’s behavior and presentation, and enable filtering so that users can retrieve and display precisely the records that they want. This feature, now generally available, includes some changes since the last release. You can now retrieve up to 100 records. Previously, it was 50 records. The component also displays clear error messages when you configure invalid specifications and supports new attributes. This component uses the GraphQL wire adapter, which enables offline use.
    1. This feature is available for Lightning Experience in all editions.
    2. <<Steps to Implement>>
      1. Here’s an example to get started with the lightning-record-picker component. The component attributes provide the label for the input field, the object to search, and a callback to handle the selection of a record.
        
        
        <lightning-record-picker
            label="Select a record"
            placeholder="Search..."
            object-api-name="Contact"
            value={initialValue}
            onchange={handleChange}>
        </lightning-record-picker>

      2. Here’s what the example looks like in the UI.
      3. Providing a record ID to the value attribute makes the record picker component display a default selected record.
  3. Monitor Component Events with Custom Component Instrumentation API (Generally Available): – Add observability to your Lightning web components with Custom Component Instrumentation API. Directly monitor and track events or interactions with custom Lightning web components in your org’s Event Monitoring. Previously, Event Monitoring tools tracked only insights about your application as a whole, such as records loaded and page performance. Custom Component Instrumentation API, now generally available, includes a change since the beta release. Now you can view custom component logs on the browser console. Custom Component Instrumentation API is designed for Lightning web components and isn’t supported for Aura components.
    1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions where Event Monitoring is enabled.
    2. <<Steps to Implement>>
      1. From Setup, in the Quick Find box, enter event, and then select Event Monitoring Settings. Turn on Lightning Logger Events.
      2. Next, import log from the lightning/logger module in your component and log data messages to Event Monitoring. The log() function publishes data to a new EventLogFile event type called Lightning Logger Event that structures the event data for use in Event Monitoring.
        
        
        <!-- myComponent.html -->
        <template>
            <lightning-button label="Approve"
                onclick={handleClick}>
            </lightning-button>
        </template>

        // myComponent.js
        import { LightningElement } from 'lwc';
        import { log } from 'lightning/logger';
        
        export default class HelloWorld extends LightningElement {
            constructor() {
                super();
            }
        
            let msg = {
                type: "click",
                action: "Approve"
            }
        
            handleClick() {
                log(msg);
            }
        }

  4. Be Aware of Base Component lightning-input Internal DOM Structure Changes: – Salesforce is preparing the base Lightning components to adopt native shadow DOM to enhance performance and comply with Web Components standards. These updates include changes to the internal DOM structure for the lightning-input component. Ensure that your tests and styling don’t rely on the previous internal structure of this component.
    1. This change applies to Lightning Experience and all versions of the Salesforce mobile app in all editions.
  5. Use the Null Coalescing Operator: – The ?? operator returns the left-hand argument if the left-hand argument isn’t null. Otherwise, it returns the right-hand argument. Similar to the safe navigation operator (?.), the null coalescing operator (??) replaces verbose and explicit checks for null references in code. 
    1.  This change applies to all editions.
    2. <<Steps to Implement>>
      1. The null coalescing operator is a binary operator in the form a ?? b that returns a if a isn’t null, and otherwise returns b. The operator is left-associative. The left-hand operand is evaluated only one time. The right-hand operand is only evaluated if the left-hand operand is null.
      2. You must ensure type compatibility between the operands. For example, in the expression: objectZ result = objectA ?? objectB, both objectA and objectB must be instances of objectZ to avoid a compile-time error.
      3. Here’s a comparison that illustrates the operator usage. Before the Null Coalescing Operator, you used
        
        
        Integer notNullReturnValue = (anInteger == null) ? anInteger : 100;

      4. With the Null Coalescing Operator, use:
        
        
        Integer notNullReturnValue = anInteger ?? 100;

  6. Get Support for Randomly Generated UUID v4: – Use the new UUID class to generate a version 4 universally unique identifier (UUID). The UUID is generated using a cryptographically strong pseudo-random number generator and is represented as 32 hexadecimal values. 
    1. This change applies to all editions.
    2. <<Steps to Implement>>
      1. To generate a UUID and perform operations on a UUID instance, use these methods in the UUID class.
        1. randomUUID() – Randomly generates a UUID that uniquely identifies an object.
        2. equals(obj) – Compares the UUID instance with the specified object. Returns true if both are equal; otherwise, returns false.
        3. hashcode()Returns the hashcode corresponding to the UUID instance.
        4. fromString(string) – Returns a UUID instance from a string representation of a UUID.
        5. toString() – Returns the string representation of the UUID instance.
  7. Make Callouts After Rolling Back DML and Releasing Savepoints: – Roll back all uncommitted DML by using a savepoint. Then use the new Database.releaseSavepoint method to explicitly release savepoints before making a desired callout. Previously, callouts after creating savepoints resulted in a CalloutException regardless of whether there was uncommitted DML or the changes were rolled back to a savepoint. 
    1. This change applies to all editions.
    2. <<Steps to Implement>>
      1. To allow callouts, roll back all savepoints and explicitly release them. In this example, the makeACallout() callout succeeds because the uncommitted DML is rolled back and the savepoint is released.
        
        
        Savepoint sp = Database.setSavepoint();
        try {
        // Try a database operation
        insert new Account(name='Foo');
        integer bang = 1 / 0;
        } catch (Exception ex) {
        Database.rollback(sp);
        Database.releaseSavepoint(sp); // Also releases any savepoints created after 'sp'
        makeACallout(); // Callout is allowed because uncommitted work is rolled back and savepoints are released
        }

      2. In this example, the savepoint isn’t released before making the callout. The CalloutException informs you that you must release all active savepoints before making the callout.
        
        
        Savepoint sp = Database.setSavepoint();
        try {
            makeACallout(); 
        } catch (System.CalloutException ex) {
            Assert.isTrue(ex.getMessage().contains('All active Savepoints must be released before making callouts.'));
        }

      3. In this example, DML is pending when the callout is made. The CalloutException informs you that you must roll back the transaction before the callout is made or the transaction must be committed.
        
        
        Savepoint sp = Database.setSavepoint();
        insert new Account(name='Foo');
        Database.releaseSavepoint(sp);
        try {
            makeACallout(); 
        } catch (System.CalloutException ex) {
            Assert.isTrue(ex.getMessage().contains('You have uncommitted work pending. Please commit or rollback before calling out.'));
        }

      4. When Database.releaseSavepoint() is called, SAVEPOINT_RELEASE is logged if savepoints are found and released.
  8. Compress and Extract Zip Files in Apex (Developer Preview) – Use the methods in the new Compression namespace to easily generate and extract compressed zip files. To optimize compression, you can specify the compression method and level. You can compress multiple attachments or documents as an Apex blob that contains the zip archive. You can also specify the data to extract from the zip archive without uncompressing the entire zip archive. 
    1. This feature is available in scratch orgs where the ApexZipSupport feature is enabled. If the feature isn’t enabled, Apex code with this feature can be compiled but not executed.
    2. <<Steps to Implement>>
      1. To add zip entries by specifying details, such as an entry name, comment, and compression method, use the addEntry(String name, Blob data)addEntry(compression.ZipEntry prototype), and setMethod(compression.Method method) methods in the ZipWriter class. To generate a zipped archive and return the result as an Apex blob, use the getArchive() method. This code sample compresses email attachments into a single file.
        
        
        ZipWriter writer = new ZipWriter();
        
        List<id> contentDocumentIds = new List<id>();
        
        // Add IDs of documents to be compressed to contentDocumentIds 
        
        for ( ContentVersion cv : [SELECT PathOnClient, Versiondata
                                   FROM ContentVersion
                                   WHERE ContentDocumentId IN :contentDocumentIds]) 
        {
              writer.addEntry(cv.PathOnClient, cv.versiondata);
        }
        
        blob zipAttachment = writer.getArchive();
        
        Messaging.EmailFileAttachment efa1 = new Messaging.EmailFileAttachment();
        efa.setFileName('attachments.zip');
        efa.setBody(zipAttachment);
        fileAttachments.add(efa);
        
        Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
        
        // Set all the other email fields, such as addresses, subject, and body
        
        email.setEntityAttachments(fileAttachments);
        
        Messaging.sendEmail(new Messaging.SingleEmailMessage[] { email });

      2. Get zip entry details, such as the list of entries in the archive, entry names, and extract the contents of the zip file by using the getEntries()getEntry(String name)extract(ZipEntry entry), and other methods in the ZipReader class. This code sample extracts the translation from a callout response.
        
        
        HttpRequest request = new HttpRequest();
        request.setEndpoint('callout:My_Named_Credential/translationService');
        request.setMethod('POST');
        
        // Set translation service request payload for input to translate
        // The translation endpoint will return translations to the requested languages as JSON in a Zip archive 
        
        HttpResponse response = new Http().send(request);
        Blob translationZip = response.getBodyAsBlob();
        
        ZipReader reader = new ZipReader(translationZip);
        ZipEntry frTranslation = reader.getEntry('translations/fr.json');
        Blob frTranslationData = reader.extractEntry(frTranslation);

  9. Evaluate Dynamic Formulas in Apex (Developer Preview): – Evaluate user-defined formulas for Apex objects and sObjects by using the classes in the new FormulaEval namespace. With this feature, you can optimize database CPU demands for evaluating formula expressions and avoid designing static expressions. 
    1. This feature is available in scratch orgs where the FormulaEvalInApex feature is enabled. If the feature isn’t enabled, Apex code with this feature can be compiled but not executed.
    2. <<Steps to Implement>>
      1. To create an instance of the formula, call the static method builder() in the FormulaBuilder class by specifying the formula text, return type, and context object. To validate the formula instance, call the build() method. If the validation fails, the build() method triggers the FormulaValidationException exception.
      2. To calculate the formula expression and return the result, use the evaluate() method in the FormulaInstance class. If the evaluation results in an error, the method triggers the FormulaEvaluationException exception.
      3. Here’s an example that uses the build() and evaluate() methods.
        
        
        global class MotorYacht {
           global Integer lengthInYards;
           global Integer numOfGuestCabins;
           global String name;
           global Account owner;
        }
        
        MotorYacht aBoat = new MotorYacht();
        aBoat.lengthInYards = 52; 
        aBoat.numOfGuestCabins = 4;
        aBoat.name = 'RV Foo';
        FormulaEval.FormulaInstance isItSuper = FormulaEval.FormulaBuilder.builder()
                                    .withReturnType(FormulaEval.FormulaReturnType.STRING)
                                    .withType(MotorYacht.class)
                                    .withFormula('IF(lengthInYards < 100, "Not Super", "Super")')
                                    .build();
        isItSuper.evaluate(aBoat); //=> "Not Super"
        
        aBoat.owner = new Account(Name='Acme Watercraft', Site='New York');
        FormulaEval.FormulaInstance ownerDetails = FormulaEval.FormulaBuilder.builder()
                                    .withReturnType(FormulaEval.FormulaReturnType.STRING)
                                    .withType(MotorYacht.class)
                                    .withFormula('owner.Name & " (" & owner.Site & ")"')
                                    .build();
        ownerDetails.evaluate(aBoat); //=> "Acme Watercraft (New York)"

  10. Secure API Access with the New Least-Privilege User Profile: – The new Minimum Access – API Only Integrations user profile is used with the Salesforce Integration user license to provide the minimum required access to API users. The Salesforce API Only Systems Integration user profile currently in use incorrectly provides CRUD permissions to custom objects. Replace with the new Minimum Access – API Only Integrations user profile.
    1. One or more Salesforce Integration user licenses are available by default in Enterprise, Unlimited, Performance, and Developer editions. More add-on licenses are available to purchase for these editions.
    2. The new profile is based on the existing Minimum Access – Salesforce profile and provides the API Enabled and Api Only User permissions. You can grant additional permissions to API users by using permission sets and permission set groups.
  11. Find Uncaught Exceptions of Platform Event Triggers in Event Log Files: – If an unhandled exception occurs during the execution of your platform event Apex trigger, you can get information about the exception using event log files in Event Monitoring. Examples of an unhandled exception include an uncatchable limit exception or an exception that the trigger doesn’t catch. Previously, unhandled exceptions in platform event Apex triggers weren’t available in event log files.
    1. This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. To retrieve information about the unhandled exception, query EventLogFile. The event type for unhandled exceptions is Apex Unexpected Exception Event Type (ApexUnexpectedException).
  12. Expand Branding Options and Improve Security for Headless Identity Flows: – To use multiple, branded email templates for the headless registration, passwordless login, and forgot password flows, create an allowlist for one-time password (OTP) email templates that are used to verify a user’s identity. When your app sends its initial request to the headless API for the flow you’re using, Salesforce accepts only allowlisted email templates in the emailtemplate parameter. This change also improves the security of your flow because templates that aren’t allowlisted are blocked. Even if you’re only using one email template, Salesforce recommend configuring an allowlist.
    1. This change is available in LWR, Aura, and Visualforce sites accessed through Lightning Experience and Salesforce Classic in Enterprise, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. To create the allowlist for your Experience Cloud site, use Metadata API to create a NetworkEmailTmplAllowlist metadata type for each allowlisted template.
      2. For headless registration and headless passwordless login, include an emailtemplate parameter containing a template from the allowlist in your initial request to Headless Registration API or Headless Passwordless Login API.
      3. For the Headless Forgot Password Flow, there’s an extra step. On the Login & Registration page in your Administration workspace, under Headless Forgot Password, select Use only allowlisted email templates. Then include the emailtemplate parameter with an allowlisted template in your initial request to Headless Forgot Password API.
  13. Salesforce Flow Enhancements: – There are several enhancements in Salesforce Flow as follows:
    1. Send Data to Data Cloud using Flows: – Use actions to send data from a flow to Data Cloud through Ingestion API without writing any code. For example, use the Send Data to Data Cloud action in a flow to create an automation that automatically sends archival data to Data Cloud, or use it in a screen flow that sends engagement data directly to Data Cloud.
      1.  This change applies to Lightning Experience and Salesforce Classic in all editions.
      2. <<Steps to Implement>>
        1. First, create and configure Ingestion API connectors in Data Cloud. Next, add a Send to Data Cloud action to your flow. A unique invocable action is provided for each Ingestion API connector schema.
    2. Use Custom Input Validations with Screen Extension Components: – Enter custom user input validations for your screen extension components in a Flow Screen. Previously, only some screen components in Screen Element supported custom input validations. Now, all do. Customize the error message that appears if the user enters an invalid value and define the values allowed for the components using a formula.
      1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
      2. Screen extension components that now support custom input validations include:
        1. Appointment Scheduling
        2. Address
        3. Data Table
        4. Dependent Picklists
        5. Email
        6. Display Image
        7. Lookup
        8. Name
        9. Phone
        10. Slider
        11. Toggle
        12. URL
        13. Slack Channel Selector
        14. Slack Workspace Selector
        15. File Upload
        16. Call Script
        17. Enhanced Message
    3. Have Unlimited Paused and Waiting Flows: – Salesforce has removed the per-org usage-based limit for paused and waiting flow interviews. The amount of Salesforce storage available to your org can still limit the number of paused and waiting flow interviews stored. If you need more data storage, contact Salesforce.
      1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
    4. Verify Your API Connection via HTTP Callout: – When configuring the API response for a new HTTP Callout, you now have the option to choose Connect for Schema. Selecting Connect for Schema establishes a connection to the API endpoint and retrieves an accurate, real-time sample response body. The response from the selected system is then used to automatically configure the HTTP Callout.
      1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
      2. <<Steps to Implement>>
        1. In Flow Builder, add the Action element, then click Create HTTP Callout. Name and select the named credential that authorizes the connection between Salesforce and the API. Configure the HTTP callout method and details for the invocable action. Then select Connect for Schema and click Next. To create a real-time call to the system selected, click Connect.
    5. Create Multiple Instances of a Set of Fields with the New Repeater Component (Beta):Add a set of components to a screen, and enable your users to duplicate the set of components at run time with the new Repeater component. For example, use a Repeater component to collect information about beneficiaries on an insurance policy. When a user runs the flow and reaches the screen, the user can add as many beneficiaries as needed. You can then loop through and save the list of beneficiaries to use later in the flow.
      1. This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions. It’s supported only in Lightning runtime for flows.
      2. <<Steps to Implement>>
        1. In Flow Builder, create a screen flow. Then, add a Screen element to the flow that includes a Repeater component. Add child components to the Repeater component.
    6. Sum or Count Items in Collections More Easily with the Transform Element (Beta): – Transform collections of data between flow resources with the Transform element in Flow Builder. The Transform element includes some changes since the last release. Now you can aggregate data from a source collection to calculate the sum or count of items in that collection and assign the result to a target data field. You can also enter a fixed value for a target data field.
      1. This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
      2. <<Steps to Implement>>
        1. The Transform element can count the number of items in a source collection. For example, let’s say you create a flow that retrieves company data from an external system. The external data includes company locations and the number of employees per location. In the flow, you add and configure the Transform element to count the number of company locations.
        2. And you configure the Transform element to calculate the sum of employees per company location.
        3. Previously, you used the Assignment element to calculate the number of locations. You used the Loop and Assignment elements to calculate the sum of employees per company location.
    7. Save the Progress of Your Flow as You Build Expanded to More Elements: – With this update, you can save your flow at any point in the building process without finishing the configuration for all elements except for Screens and Action. Required values don’t need to be completed. Errors that previously prevented you from saving your flow are now warnings.
      1. This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Unlimited, and Developer editions.
    8. Maintain Your Previous Selections When You Search a Data Table: – When a user searches in the Data Table component and selects a record, the Data Table component preserves the selection even if the user searches again. The user must deselect the value to remove it from the list of selected values. If you pass the selected value to another component, the other component retains the value unless the user deselects it in the Data Table component. Previously, the Data Table component cleared the user’s selection after each search.
      1. This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions. It’s supported only in Lightning runtime for flows.
  14. Flow Orchestrator: – There are several enhancements in Flow Orchestrator as follows:
    1. Control the User Context of a Background or MuleSoft Step: – Starting in API version 60.0, the default running user for background steps and MuleSoft steps is the Automated Process User. When the Automated Process User doesn’t have required access to features, records, or external credentials, specify who you want to run the step as. Run the step as a selected user or opt to run the step as a user specified by a resource at run time. When an orchestration is activated, every step that’s configured to run as a selected user generates an entry in the audit trail.
      1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
      2. <<Steps to Implement>>
        1. When you configure your background or MuleSoft step, use the new Select Who to Run the Action As Section to select a specified user or a user specified by a resource at run time.
    2. Use Reports for Flow Orchestration Objects to Track Orchestration Usage: – New custom report types include Orchestration Runs Spring ’24, Orchestration Stage Runs Spring ’24, Orchestration Step Runs Spring ’24, Orchestration Work Items Spring ’24, and Orchestration Run Logs Spring ’24. Each custom report type also has an associated sample report. For example, use Sample Report: Orchestration Runs to determine what orchestration runs have been created and the status of each run. These reports aren’t added to your org when it already contains the maximum number of defined custom report types.
      1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
    3. Disable Default Email Notifications for Orchestration Work Items: – Too many orchestration work item notifications getting emailed to users, groups, and queues? Use the new Stop Sending Orchestration Work Item Default Email Notifications process automation setting to stop sending default email notifications when work items are assigned or reassigned.
      1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
    4. Fine-Tune Access to Flow Orchestration Functions : – Use new permissions instead of Manage Orchestration Runs and Work Items to better control user access to Flow Orchestration functions. With the Reassign Orchestration Work Items user permission, users can reassign orchestration work items. With the Manage Orchestration Runs user permission, users can cancel or debug orchestrations.
      1. This change applies to Lightning Experience in Enterprise, Performance, Unlimited, and Developer editions.
  15. Manage Your Event Subscriptions with Pub/Sub API (Beta): – Use managed event subscriptions to track the events that a subscriber client consumed and to resume a subscription from where it left off after a client disconnects. When you resubscribe with the new ManagedSubscribe RPC method, the subscription resumes after the last Replay ID that the client successfully committed on the server. You can subscribe to platform events and change events, custom platform event channels and change data capture channels, and the standard change data capture channel (ChangeEvents). After the initial subscription call, commit the Replay ID of the event you last processed every time you receive a batch of events.
    1. This change applies to Enterprise, Performance, Unlimited, and Developer editions. Pub/Sub API isn’t available in Non-Hyperforce Public Cloud and Government Cloud.
    2. Managed subscriptions use configuration options that you set in ManagedEventSubscription using Tooling API or Metadata API.
  16. Use the Basic Authentication Protocol with Named Credentials: – Configure external credentials to use the Basic authentication protocol, and authenticate directly into the external system with a username and password. The new Basic authentication protocol combines the security of the enhanced named credential schema with the functionality of the legacy named credential Password authentication protocol.
    1. This change applies to Lightning Experience and Salesforce Classic in all editions.
    2. <<Steps to Implement>>
      1. When you create an external credential from the Salesforce UI, select Basic Authentication as the authentication protocol. Then, create the external credential’s principal and specify the identity type to use.
        1. To authenticate to the external system on behalf of your users, choose the Named Principal identity type.
        2. To allow each user accessing the external system to manage their own username and password, choose the Per User identity type.
  17. Access and Download Event Log File Data with the Event Log File Browser (Beta): – Explore and download all of your Event Log File data using the Event Log File Browser (beta) in Setup.
    1. This change is available to customers who purchased Salesforce Shield or Salesforce Event Monitoring add-on subscriptions.
    2. Access the Event Log File Browser (beta) in Setup. To download Event Log File data, select a date range and click the dropdown button to the right of the event log file and select Download as CSV File. Alternatively, use the File Download servlet by adding /servlet/servlet.FileDownload?file=<ELF_ID_NUMBER> after your org URL. For example, https://mycompany.my.salesforce.com/servlet/servlet.FileDownload?file=0ATRM000000dcbH0A0. The file download begins automatically.

Additional Enhancements Worth Noting!

  1. Ant Migration Tool End of Life: – The Ant Migration Tool is retired with Spring ’24. The tool continues to function for future API versions but isn’t updated with new functionality and isn’t supported. To manage metadata changes, switch to Salesforce CLI for a modern, supported developer experience.
  2. Rotate Refresh Tokens: – To prevent security threats during the OAuth 2.0 refresh token flow, enable refresh token rotation on your connected app. Each time an app invokes the flow, get a new refresh token. To ensure that each token is used only one time, the old token is automatically invalidated. If someone tries to use a previous refresh token that’s been rotated out, Salesforce invalidates the current refresh token, along with any associated access tokens. In that case, the client must complete a new flow to get another refresh token. This feature is supported for connected apps and external client apps.
    1. This change is available in Salesforce Classic and Lightning Experience in all editions.
  3. Log In to All Your Sandboxes from Setup: To help you manage your sandboxes, logins from the Sandboxes Setup page now use the sandbox’s My Domain login URL. Previously, the process used the sandbox’s instanced URL, so you could log into a sandbox from Setup only if that sandbox allowed logins from https://test.salesforce.com. 
    1. This change applies to Lightning Experience and Salesforce Classic in Professional, Enterprise, Performance, Unlimited, and Database.com editions.
  4. See Improved Logging When FOR UPDATE Locks Are Released: Record locks that are obtained in Apex using FOR UPDATE are automatically released when making callouts. The information is now logged in the debug log and the logged message includes the most recently locked entity type. For example: FOR_UPDATE_LOCKS_RELEASE FOR UPDATE locks released due to a callout. The most recent lock was Account.
    1. This change applies to all editions.
  5. LWS Automatically Uses Closed Shadow Root Mode: – If a Lightning web component creates an open shadow root, LWS changes the shadow root mode to closed. Previously, LWS displayed an error message when it encountered a shadow root set to open mode. The closed mode protects the shadow root internals from JavaScript manipulation.
    1. This change applies to Lightning Experience in all editions, LWR-based Experience Cloud sites, and Lightning web components in Aura sites when LWS is enabled.
  6. Improved Validation and Limit Accounting with DML on External Objects: – Starting Spring ’24, only external objects can only use the DML methods such as Database.insertImmediate() and Database.insertAsync(). A catchable TypeException is thrown if object types other than external or big objects are used in the lists of arguments to these DML methods. Further, these DML operations no longer increment DML statement and record limits. Previously, there was no validation to ensure that external and non-external objects weren’t mixed in the arguments to these DML calls.
    1. This change applies to all editions.
  7. Decorators Throw a Syntax Error in Non-LightningElement classes:Custom components using LWC API version 60.0 and later can use decorators only in components that extend the LightningElement class. Remove decorators from other classes if you use them.
    1. This change applies to custom Lightning web components in Lightning Experience, Experience Builder sites, and all versions of the Salesforce mobile app. This change also applies to Lightning web components in open source.
    2. <<Steps to Implement>>
      1. Remove these decorators from non-LightningElement classes.
        1. @api
        2. @track
        3. @wire
      2. For example, remove the @track decorator from this class.
        
        
        // Don’t do this
        class MyCustomClass {
            @track myName = { firstName: "", lastName: "" };
        }

      3. In LWC API version 60.0 and later, this class returns a syntax error. You can use decorators only on LightningElement classes or those that extend LightningElement, such as a class that extends LightningDatatable.
        
        
        // Do this instead
        import { LightningElement } from 'lwc';
        
        export default class DecoratorExample extends LightningElement {
            @track fullName = { firstName : '', lastName : ''};
        }

      4. In all LWC API versions, your component already throws an error if it doesn’t extend LightningElement from “lwc”. However, you can create a class that extends HTMLElement, which is a non-LightningElement class, to create custom elements using customElements.define().
  8. Migrate LWC Projects from LWC.studio to StackBlitz: – LWC.studio is discontinuing its services and shutting down the online IDE on January 1, 2024. If you have LWC projects on LWC.studio that you want to keep, move them to StackBlitz. With StackBlitz, you can start coding without any installation overheads and speed up your development with rapid prototyping. The online IDE helps you reproduce bugs and share a URL with your team quickly. StackBlitz is built on VS Code, so the interface is familiar to some users.
    1. To get started, go to https://playground.lwc.dev. The default project includes a parent component x-app and a child component x-counter, where x is the namespace.
    2. StackBlitz projects don’t include Lightning Design System styling and base components. StackBlitz provides both Salesforce platform and LWC open source features. It doesn’t have access to your Salesforce data. For example, it doesn’t support @salesforce/* imports and Lightning Data Service wire adapters.
  9. Receive Change Event Notifications for More Objects: – With Change Data Capture, you can now receive notifications of record changes for more objects.
    1. This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. Select the objects that you want to get notifications for on the Change Data Capture page in Setup or create a custom channel. You can now receive change events for:
        1. Accreditation
        2. AssessmentConfiguration
        3. AssessmentEnvelope
        4. AssessmentEnvelopeItem
        5. BoardCertification
        6. CareBarrierDeterminant
        7. CareBarrierType
        8. CareBenefitVerifyRequest
        9. CareBenefitVerifySettings
        10. CareDeterminantType
        11. CareInterventionType
        12. CareLimitType
        13. CarePreauth
        14. CarePreauthItem
        15. CareProviderAdverseAction
        16. CareProviderFacilitySpecialty
        17. CareProviderSearchableField
        18. CareProviderSearchConfig
        19. CareRegisteredDevice
        20. CareTaxonomy
        21. CoverageBenefitItemLimit
        22. HealthCareDiagnosis
        23. HealthcareFacilityNetwork
        24. HealthcarePayerNetwork
        25. HealthCareProcedure
        26. HealthcareProviderNpi
        27. HealthcareProviderTaxonomy
        28. OpportunityLineItem
        29. PlanBenefit
        30. PlanBenefitItem
        31. ProviderSearchSyncLog
        32. PurchaserPlanAssn
        33. ReceivedDocumentType
        34. TimelineObjectDefinition
  10. Remove Custom Metadata Type Records from a Second-Generation Managed Package: – Better manage your second-generation managed packages with the ability to remove protected and public records from a custom metadata type. After you remove the records from a package, what happens to those records in the subscriber org depends on the record visibility. If the records are visible to the subscriber org, they’re marked as deprecated. If the records aren’t visible to the subscriber org, they’re deleted. Alert your subscribers that deprecated records count against their subscriber org limit, and encourage them to delete any deprecated records. 
    1. This change applies to second-generation managed packages.
    2. <<Steps to Implement>>
      1. Removing metadata from managed packages requires approval from Salesforce. To request access to the component removal feature, log a support case in the Salesforce Partner Community.
  11. Control API Access to XML Deserialization of Apex Classes: – Developers constructing Apex classes in managed packages via API call using XML deserialization must have explicit access to those classes via the @JsonAccess annotation. The @JsonAccess annotation controls XML deserialization.
    1. This change applies to all API versions. 
    2. <<Steps to Implement>>
      1. Previously, developers could construct instances of Apex classes through XML serialization without restriction. This provided access to Apex classes that developers shouldn’t have had access to. Attempting XML deserialization without the annotation’s permission now results in a 400 response with an XML_PARSER_ERROR error code.
  12. See Detailed Information About Unusual Guest User Activity with the Guest User Anomaly Event: – Know when a guest user in Experience Cloud attempts to maliciously extract data through aura controllers with the new Guest User Anomaly Event from the Threat Detection app.
    1. This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions where Event Monitoring is enabled.
  13. Empty Comment Nodes Replace Empty Text Nodes: – Custom components using LWC API version 60.0 and later render empty comment nodes instead of empty text nodes in features like slots in light DOM, scoped slots, and the lwc:if directive. Salesforce recommend that you review your test snapshots and code that rely on DOM node APIs like childNodes or nextSibling.
    1. This change applies to custom Lightning web components in Lightning Experience, Experience Builder sites, and all versions of the Salesforce mobile app. This change also applies to Lightning web components in open source.
    2. <<Steps to Implement>>
      1. In LWC API version 60.0 and later, LWC uses an empty comment node (<!–-->) instead of an empty text node ('') with the implementation of the virtual DOM nodes.
      2. Consider this example that displays content when the expression variable is true.
        
        
        <template>
            <template lwc:if={expression}>Some content here</template>
        </template>

      3. In LWC API version 60.0 and later, the example renders in the DOM an empty comment node before and after the content.
        
        
        <!–--->
        "Some content here"
        <!---->

      4. In LWC API version 59.0 and earlier, the component renders the content like this.
      5. The additional empty comment nodes resolve the hydration issues and have no impact on performance or file size.
  14. ARIA Property Reflection Available For More Attributes: – ARIA attributes like aria-braillelabel and aria-brailleroledescription are part of the Accessible Rich Internet Applications (WAI-ARIA) standard, but property reflection wasn’t previously available for them on LWC.
    1. This change applies to custom Lightning web components in Lightning Experience, Experience Builder sites, and all versions of the Salesforce mobile app. This change also applies to Lightning web components in open source.
    2. ARIA property reflection is now available on these attributes:
      1. aria-colindextext—Defines a human-readable text alternative of the numeric aria-colindex.
      2. aria-rowindextext—Defines a human-readable text alternative of the numeric aria-rowindex.
      3. aria-description—Describes the current element.
      4. aria-braillelabel—Defines a string value for the current element, which is intended for Braille conversion.
      5. aria-brailleroledescription—Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended for Braille conversion.
    3. <<Steps to Implement>>
      1. With property reflection, you can define these ARIA properties in a component and customize its getter and setter behavior. For example:
        
        
        import { LightningElement } from 'lwc';
        
        export default class extends LightningElement {
            get ariaBrailleLabel() {
                return this._ariaBrailleLabel
            }
        
            set ariaBrailleLabel(val) {
                console.log('I am in the setter!')
                this._ariaBrailleLabel = val
            }
        }
        

      2. Additionally, you can call this.aria* in a component using a property getter and setter. If the browser doesn’t support the ARIA reflection, calling this.ariaBraille*, such as this.ariaBrailleLabel, returns undefined. Currently, Safari and Firefox don’t support property reflection for ariaBraille* properties.
  15. Run Flows in Bot User Context (Release Update): – With this update enabled, a flow initiated by a bot runs in user context. The user profile and permission sets associated with the bot, as well as any sharing rules, determine the object permissions and field-level access of the flow. This update prevents flows initiated by a bot from creating, reading, updating, or deleting records that the bot doesn’t have permission to access or modify. Previously, a flow initiated by a bot ran in system context and had permission to access and modify all data. This update was first made available in Summer ’23.
    1. This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions. Setup for Einstein Bots is available only in Lightning Experience.
    2. <<Steps to Implement>>
      1. Before you enable this update in your production org, Salesforce recommend that you test your bots that run flows with this update enabled in a sandbox or developer org. Test that the flows initiated from your bot can perform all flow operations. If a flow fails, identify the missing permissions and add them to the user profile or permission sets associated with your bot.
  16. Use Text Templates to React to Changes on the Same Screen: – Text Template resources that reference the output of a component on the same screen can now respond in real time to changes in the output. For example, consider a Text Template resource that references the output of a Name component on the same screen. If you include the Text Template in a Display Text component, the flow updates the displayed text each time the user changes the Name component at run time.
    1. This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions. It’s supported only in Lightning runtime for flows.
  17. Wait for Engagement Events in Segment-Triggered Flows with the Wait Until Event Element: – With the new Wait Until Event element, you can resume flows based on email and SMS engagements. For example, you can resume a flow when a user opens an email or SMS, or clicks a specific link.
    1. This feature is available in Lightning Experience for Salesforce Enterprise and Unlimited editions with Marketing Cloud Growth edition.
    2. <<Steps to Implement>>
      1. Open a segment-triggered flow in Flow Builder, then add a Wait Until Event element to the canvas. In the element’s properties panel, select the event you want to monitor, which action and engagement resumes the flow, and configure the wait element’s timeout path.
  18. Run Event-Triggered Flows as Workflow User: – Select whether to run event-triggered flows as the user that triggered the flow or as your org’s specified default workflow user. If you select the default workflow user, any changes triggered by the flow are attributed to the default workflow user, regardless of who triggered the flow.
    1. This change applies to Lightning Experience and Salesforce Classic in all editions.
    2. <<Steps to Implement>>
      1.  In the Start element of an event-triggered flow, expand the Advanced Settings section and select who to run the flow as. Running as the default workflow user can help if your flows fail due to mixing callouts and DML operations.
  19. Identify Flows Containing Email Alerts: – With this update, you can see which flows use an email alert. A new category in Email Alerts Setup displays this information.
    1. This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
    2. <<Steps to Implement>>
      1. From Setup, in the Quick Find box, enter Email Alerts, and then select Email Alerts.
      2. Click the link for a specific email alert. If used in a flow, the Flows Using This Email Alert section is populated, including version, description, and object. You can also see if the flow is active.
  20. Control Which Profile Settings Are Packaged: – Use the new scopeProfiles setting in the sfdx-project.json file to control which profile settings are included in a new package version when you run the sf package version create command.
    1. This change applies to unlocked packages and second-generation managed packages.
    2.  If you set scopeProfiles to true for a package directory, profile settings from only the package directory being packaged are included, and profile settings outside of that package directory are ignored. When you set scopeProfiles to false, which is the default value, the new package version includes relevant pieces of profile settings in any package directory defined in sfdx-project.json.
    3. The scopeProfiles parameter is a child of packageDirectory, as shown in this example.
      
      
      {
      "packageDirectories": [
          {
              "path": "force-app",
              "package": "TV_unl",
              "scopeProfiles": "true",
              "versionName": "ver 0.1",
              "versionNumber": "0.1.0.NEXT",
              "default": true,
              "unpackagedMetadata": {
                  "path": "my-unpackaged-directory"
              }
          }
      ],
      "namespace": "",
      "sfdcLoginUrl": "https://login.salesforce.com",
      "sourceApiVersion": "60.0"
      }

Salesforce Mobile App Enhancements

Mobile Offline for Salesforce Mobile App Plus gets updates to the Offline App Developer Starter Kit, Offline App Onboarding Wizard, and the new Mobile Builder (beta). The new Salesforce mobile app is available for all editions, except Database.com, without an additional license. Your org’s Salesforce edition and licenses, as well as a user’s assigned profile and permission sets, determine the Salesforce data and features that are available to each user.

  1. Save Dashboard Views on Your Mobile Devices:The new Save View functionality enables you to save dashboard views on your mobile devices, such as a daily performance snapshot. Before this update, dashboard views could only be created on the desktop. In addition to creating views on your mobile device, you can easily switch between other saved views associated with the dashboard. 
    1. This change applies to Lightning Experience and the Salesforce mobile app for iOS and Android in Professional, Developer, Enterprise, and Unlimited Editions.
  2. Easily Configure Offline Landing Pages with Mobile Builder (beta):- The new Mobile Builder for Salesforce Mobile App (beta) enables you to customize the Salesforce mobile app’s offline landing page for your mobile users without writing a single line of code. You can create custom configurations to show the most important records to mobile users and allow them to quickly and easily take relevant actions based on their unique mobile use cases.
    1. These changes apply to Salesforce Mobile App Plus for iOS and Android on phone and tablets in all editions, except Database.com.
    2. Mobile Builder (beta) is available in orgs with the Salesforce Mobile App Plus license and to users within that org who have the Mobile Offline for Salesforce Mobile App Plus user permission.
  3. Defined Global Actions Now Primed for Offline Use: – Global actions that are defined in the Actions card on the landing page are now primed and available for use offline.
    1. This change applies to the Salesforce Mobile App Plus for iOS and Android on phone and tablets in all editions, except Database.com.
    2.  Mobile Offline is available in orgs with the Salesforce Mobile App Plus license and to users within that org who have the OfflineForMobilePlus user permission.
  4. Visualize Record Pages on Mobile with the Phone Preview: – When you create record pages in Lightning App Builder, use the Phone preview option to see how they appear on mobile devices. The mobile preview also shows you if any components aren’t available on mobile devices.
    1. This change applies to Lightning Experience desktop and the Salesforce mobile app in Group, Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
  5. Use Dynamic Actions on Standard Objects on Mobile: – Dynamic actions on mobile are no longer limited to custom objects. Use dynamic actions on standard objects on mobile devices.
    1. This change applies to Lightning Experience desktop and the Salesforce mobile app in Group, Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
  6. View All Rules and Filters on a Briefcase: – You can now expand or collapse all rules when you view the details of a briefcase in Briefcase Builder. The Expand All and Collapse All buttons are available on the Data Sets and Run As User tabs of a briefcase’s details.
    1. This change applies to Lightning Experience desktop and in Salesforce with Field Service (SFS) enabled. Briefcase Builder supports the Salesforce Field Service mobile app for iOS and Android and Salesforce Mobile App Plus.
    2. From Setup, in the Quick Find box, enter Briefcase Builder, and then select Briefcase Builder. Click on a briefcase to view its details. Then click the Data Sets tab or Run As User tab to expand or collapse all rules.
  7. Update Your Android Mobile Connected App’s Information for Push Notifications: – Because of a change in how Google handles push notifications for apps, Android mobile connected apps now collect the Admin SDK private key and project ID from a Google Firebase project. To make sure that there’s no disruption to the delivery of your app’s notifications, submit the Firebase Admin SDK private key and project ID required for the new Firebase Cloud Messaging API (HTTP v1).
    1. This change applies to mobile connected apps with Android push notifications. Connected apps can be created in Group, Professional, Enterprise, Essentials, Performance, Unlimited, and Developer editions.

Key Resources:

Check out the resources below to learn about some of the most exciting innovations before officially GA on February 05th!

Formative Assessment:

I want to hear from you!

What are your favorite Spring’24 release note gems? You can download release notes in HTML format!, for PDF files.

Feel free to share in the comments below.

← Back

Thank you for your response. ✨

Have feedback, suggestions for posts, or need more information about Salesforce online training offered by me? Say hello, and leave a message!

Preferred Timing(required)

One thought on “Salesforce Spring’24 Release Quick Summary

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.