The Summer ’25 release is rolling out to your sandbox and production environments starting in April and continuing through June 2025. Get ready — this release includes product updates and new features to enhance your development experience. Whether you’re looking to build agents for your business, build a solid data foundation on Data Cloud, or work with Platform features for enhancing your applications, you’ll find significant new capabilities in this release.
Let’s take a look at the highlights for developers in Agentforce, Data Cloud, Apex, LWCs, developer tools, and APIs.
Agentforce features
Agentforce enables you to customize pre-built agents, or create and deploy new agents that work seamlessly across Salesforce apps, Slack, websites, and third-party platforms and apps. In the upcoming release, we’re adding some important features for developers. However, Salesforce releases Agentforce updates frequently, so keep an eye on the monthly release section of the Salesforce release notes for the latest information.
Note: You can find features that went out before April in the monthly release section of the Spring ’25 release notes.
Agentforce SDK
Define and interact with Agentforce programmatically in Python using the Salesforce Agentforce SDK. You can install the SDK using pip as shown below.
pip install agentforce-sdk
The SDK provides features like the ability to create and manage AI agents in Salesforce via code, as well as generate and manage prompt templates with Salesforce field mappings. It also offers flexibility through support for various agent definition formats, including JSON, among other capabilities. Explore the repository for code examples to get started.
Agentforce DX (Beta)
You can now create and test agents directly in a Salesforce DX project with Agentforce DX’s pro-code tools, such as the Salesforce CLI and VS Code extensions for Salesforce. Install a dedicated VS Code extension for working with Agentforce.
Here’s a simple list of commands available in the CLI to manage and create Agents directly via the Salesforce CLI.
sf search Use ↑ and ↓ keys or type to search for a command. Press ENTER to view help. Press ESC to exit. ? Search for a command agent ❯ agent create agent generate agent-spec agent generate template agent generate test-spec agent preview agent test create agent test list agent test results agent test resume agent test run org open agent (Move up and down to reveal more choices) Create an agent in your org from a local agent spec file.
Lightning types and LWCs for default Agentforce (Developer Preview)
You can now bring structured user interfaces to Agentforce (Default) using the standard Lightning types offered out of the box and the custom Lightning web components (LWCs). To create a custom Lightning type, you’ll need to create a new metadata type bundle called LightningTypeBundle. The bundle consists of a schema, editor, and renderer. Once you have the bundle type, you’ll reference them in your LWC’s meta XML.
Use the new lightning__AgentforceInput
and lightning__AgentforceOutput
targets to enable LWCs within agent actions for custom input and output rendering. Below is a code snippet that shows how to expose LWCs for output rendering in Agentforce.
<?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>64.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__AgentforceOutput</target> </targets> </LightningComponentBundle>
Below is an example of bringing a user interface using LWCs into Agentforce (Default).
To learn more about building LWCs and LightningTypeBundle, refer to the code examples in the developer documentation. Note that this feature is in Developer Preview and only available for the Agentforce (Default) type agents.
Additionally, you can now view a list of the Lightning types available in your org from the Setup UI. Below is a screenshot that shows the available Lightning types.
Agent Connections (Beta)
Agent Connections enable Agentforce Service Agents to use rich content formatting. These surfaces adapt to various channels. Currently, two standard adaptive responses are supported: rich link response (Beta) and rich choice response (Beta).
The screenshot below shows how to turn on adaptive response formats in Agent Builder.
External objects support in Prompt Builder
You can now bring external objects into Prompt Builder. External objects let you bring large-volume data from external systems into Salesforce without having to store the data in Salesforce. You can now create a prompt template of type Flex, select an external object, and then access that object’s fields just as you would with a custom or standard object.
The screenshot below shows how you can create a Flex template with external objects used for grounding.
Agentforce for identity
Agent for Setup can now create external client apps. With the Create External Client App action, you can create and configure your external client app by asking the Agent for Setup.
The screenshot below shows Agent for Setup in action, helping users create external client apps through a conversational experience.
Package Agentforce actions, topics and prompt templates
Agentforce actions, topics, and prompt templates can now be packaged as a 2GP managed package and distributed on the AgentExchange.
Data Cloud release highlights
Like Agentforce, Data Cloud gets updates every month, so please keep an eye on the monthly release notes section for Data Cloud to learn more. If you missed features released the previous month, check out the monthly release notes section for the Spring ’25 release.
Related list enrichments
- Create related list enrichments for accounts, cases, contracts, and vehicles using direct relationships between Data Cloud DMOs and Salesforce objects (direct-DMO), without requiring identity resolution
- Deploy related list enrichments (excluding direct-DMO) from a Data Cloud sandbox to a CRM production org
Copy field enrichments
You can now add copy field enrichments to cases, contracts, orders, products, and quotes. With the additional objects enabled, you can enrich more Salesforce objects with field data from Data Cloud.
Log Flow execution data to Data Cloud
You can now log Flow executions for auto-launched and scheduled flows directly to Data Cloud, ensuring reliable and scalable data management. Here is how to turn on this feature:
- Open your flow
- Click the gear icon, and then click Show Advanced
- Click Install and Set Up Package
- After installation and setup, select Collect and log metrics in Data Cloud for this flow
Note that logging Flow execution will consume Data Cloud credits.
The screenshot below shows how to find the installation screen.
Apex enhancements
Dynamic formula evaluation in Template mode
Use the new FormulaBuilder.parseAsTemplate()
method to evaluate dynamic formulas using merge field syntax {!Object_Name.Field_Name}
, making code cleaner. In Template mode, you can create formula expressions where values are interpolated into a string by using the merge field syntax {!Object_Name.Field_Name}
.
Here is a simple example code snippet of using the FormulaBuilder class with parseAsTemplate method.
Contact con = [SELECT Id, FirstName, LastName, Title, Account.Name FROM Contact WHERE AccountId != null AND Title != null AND FirstName != null AND LastName != null ORDER BY CreatedDate DESC LIMIT 1]; if (con != null) { FormulaEval.FormulaInstance summaryFormula = Formula.builder() .withType(Schema.Contact.class) // Context is Contact .withReturnType(FormulaEval.FormulaReturnType.STRING) // We want a summary string // The literal spaces, comma, and "at" will be handled by the template evaluation. .withFormula('{!FirstName} {!LastName}, {!Title} at {!Account.Name}') .parseAsTemplate(true) // Enable template mode interpolation .build(); try { // Evaluate the formula using the Contact record data String contactSummary = (String) summaryFormula.evaluate(con); // Expected Output (using your example data): 'Geoff Minor, President at Global Media' System.debug('Contact Summary: ' + contactSummary); } catch (Exception e) { // Catch potential evaluation errors (e.g., if a required field used in the template is unexpectedly null) System.debug('Error evaluating contact summary formula: ' + e.getMessage()); } } else { System.debug('No suitable Contact record found for the example.'); }
Setting to enable org-wide enablement of debug logs during metadata deployment
Debug logs during metadata deployment are turned off by default for performance reasons. We now allow you to enable it if needed via an org-wide setting or using Metadata API. For Metadata API, check the enableDebugLogsDuringDeployment field in ApexSettings.
Crypto class enhancements
The Crypto class now supports the AES-GCM mode for 128-bit, 192-bit, and 256-bit encryption/decryption and the P1363 signature format for signing/verifying.
Here is a code snippet that shows the AES-GCM mode in action.
// Example: AES-GCM Encryption Blob key = Crypto.generateAesKey(256); // Generate a 256-bit key Blob dataToEncrypt = Blob.valueOf('Sensitive Data'); Blob additionalData = Blob.valueOf('Contextual Info'); // Optional additional authenticated data // Encrypt using AES256-GCM mode Blob encryptedData = Crypto.encryptWithManagedIV('AES256-GCM', key, dataToEncrypt, additionalData); // Decrypt (requires the same key and additionalData) Blob decryptedData = Crypto.decryptWithManagedIV('AES256-GCM', key, encryptedData, additionalData); System.assertEquals(dataToEncrypt, decryptedData);
LWC enhancements
Preview a single Lightning web component using Local Dev (Beta)
You can now preview a single LWC using Local Dev without needing to publish it to an org first.
Here are the steps to preview a single LWC:
Install the Local Dev CLI plugin with sf plugins install @salesforce/plugin-lightning-dev
- Run
sf lightning dev
component on the command line - In the CLI output, use arrow keys to choose a component
- Local Dev automatically opens the selected component in a new single component preview browser page
This repository holds the CLI plugin documentation with the list of available commands.
Lightning base component updates
- Type definitions for base components are available in the @salesforce/lightning-types Node Package Manager (npm) package.
Internal DOM structures for components like lightning-tree-grid
, lightning-user-consent-cookie
, and lightning-quick-action-panel
are changing to prepare for native shadow DOM. Ensure that tests don’t rely on the previous internal structure.
SLDS Validator & Linter (Beta)
Use the SLDS Validator extension for VS Code or the new command-line SLDS Linter (Beta) to validate your code against SLDS guidelines, including the SLDS 2 beta rules, and apply automatic fixes. Check out the SLDS linter project on GitHub to learn more.
Strict access check
We have now enabled stricter access checks when components import or reference other components or modules. Resolve any “No COMPONENT or MODULE named…” errors by checking import statements and ensuring that managed package components are properly exposed.
To learn more about this, check out the documentation.
Platform development tools
Salesforce CLI
Manifest generation: An improved project generate manifest
command includes the --excluded-metadata
flag. Check examples in the documentation to learn how to use them.
Decompose ExternalServiceRegistration (Beta): The ExternalServiceRegistration
metadata type can now be decomposed into .yaml
and .xml
files for easier source control management. Enable with:
sf project convert source-behavior --behavior decomposeExternalServiceRegistrationBeta
Improved Apex test output: project deploy start
with --test-level
and --verbose
now shows duration for each test in human-readable output.
Snapshot org creation: Simplified scratch org creation from snapshots using the new --snapshot
flag on org create scratch
removes the need for a definition file. An example command is shown below.
sf org create scratch --alias my-scratch-org --target-dev-hub MyHub --snapshot NightlyBranch --wait 10
Wait for org resume scratch: Use the new --wait
flag with org resume scratch
to specify how long the command should poll for completion. An example command is shown below.
sf org resume scratch --job-id 00Dxxxxxxxxxxxxxxx --wait 10
Flow testing and debugging
We’ve made several enhancements to improve the flow debugging capabilities. You can read about them in the documentation.
An enhancement worth noting is: now you should be able to run a flow test via your CI/CD pipeline or from the Salesforce CLI command line. Use the command below to run flow tests.
sf flow run test
DevOps testing
DevOps Testing extends the capabilities of DevOps Center by bringing AI-powered testing and quality control into your DevOps pipeline. If you’re using DevOps Center, install the additional DevOps Testing package from the AppExchange.
Once installed, you can configure it and bring in quality gates like Salesforce Code Analyzer and third-party tools from our partners. To learn more about this, check out the official documentation.
Code Analyzer v5 is GA
Code Analyzer v5 is now generally available. The previous v4 version is set to retire in August 2025, so plan to migrate to the improved v5, which now comes with these features:
- Two new engines: Flow Scanner and Regular Expressions
- AI-powered quick fixes by Agentforce for Developers (works for Apex for now, LWC in the future)
- A single command to execute Code Analyzer
- A brand new, highly polished HTML report
- A completely new YAML configuration file
- New integrations with DevOps Testing, GitHub Actions
To learn more about these features, check out the official documentation.
API updates
Metadata API updates
Retrieve with dependencies: Use the new rootTypesWithDependencies
parameter in RetrieveRequest to retrieve metadata types along with their dependencies automatically.
Look for the feature rolling out with selected metadata types in the Salesforce CLI release notes in a few weeks.You can see that the source-deploy-retrieve npm package already supports rootTypesWithDependencies
. In this release, we only support the Bot metadata type for rootTypesWithDependencies
to support retrieving Agentforce-related metadata and dependencies.
Deploy and retrieve pilot metadata types: You can now enable developers working in your org to deploy and retrieve pilot metadata types. Pilot metadata types are only guaranteed to work with the current API version and can be changed or removed in future releases. The screenshot below shows how to enable usage of pilot metadata types.
New Metadata Coverage report: There is a new Metadata Coverage report. The older one will retire after Summer ’25 release.
OpenAPI for sObjects REST API (Beta)
Query for all available resources using /async/specifications/oas3
, and use wildcards * in URIs. To learn more, check out the documentation.
Legacy API version retirement (versions 21.0 to 30.0)
Retirement will be enforced in Summer ’25. Applications using these legacy API versions will fail after Summer ’25, so be sure to upgrade applications to current API versions before then. Use the API Total Usage event to identify requests using older versions. You can enable rejection of these versions early via release updates. Here’s a blog post that suggests tools and a strategy to accompany you for the API version retirement.
My Domain Login URL enforcement in API calls
To prevent disruption from instance changes, ensure API traffic uses your org’s My Domain login URL. This update is available in Summer ’25 and will be enforced in Spring ’26 (Winter ’26 for sandboxes).
Streaming API clients can receive disconnect messages from Salesforce app servers
In Streaming API version 64.0 and later, clients might experience disconnections and will need to reconnect to the API endpoint. These disconnects occur more often on Hyperforce instances due to infrastructure auto-scaling. To maintain an active subscription, implement a listener for the /meta/disconnect
channel and establish a reconnection process upon receiving a disconnect message.
More Summer ’25 learning resources
- Read the official release notes
- Join the Salesforce Developers Trailblazer Community group to connect with the global developer community
- Join the Release Readiness Trailblazers Community group to stay informed about the latest product enhancements and innovations across the Salesforce ecosystem
About the author
Mohith Shrivastava is a Principal Developer Advocate at Salesforce with 14 years of experience building enterprise-scale products on the Salesforce Platform. Mohith is currently among the lead contributors on Salesforce Stack Exchange, a developer forum where Salesforce Developers can ask questions and share knowledge. You can follow him on LinkedIn.
The post The Salesforce Developer’s Guide to the Summer ’25 Release appeared first on Salesforce Developers Blog.