Releases / Developers

9 Features for Salesforce Developers in the Spring ’26 Release

By Peter Chittum

Updated January 14, 2026

Spring ‘26 is a gobstopper of a release for developers. So much so that this will be a pretty high-level overview of some of the features now available to try out. It’s worth noting that the release notes are still early on. Additional features may be added, and some features may not make it into the release. 

So strap in, let’s take a look at what you can expect to see in February. 

1. Provide Structure to Agents With Agent Script

Salesforce has painted a picture of a new “hybrid” reasoning capability for agents. What does that mean exactly? It turns out that the very thing that makes LLMs so effective, their ability to appear human due to variability, is also the biggest obstacle to predictability. Hallucinations, as we’ve come to know them, are really a feature, not a bug. 

But unpredictability is the bane of enterprise software. Not only do users want predictability, but regulation can also sometimes dictate it. An agent that gets things right 93% can make users not trust it. Scale that to millions of transactions a day and you have tens of thousands of failures. 

Enter Agent Script. Agent Script is a declarative YAML-like domain-specific language for providing structure and instructions to agents using a series of blocks of text. If you’ve ever invoked an LLM API, you’ll be aware that there is something called a system prompt – the instructions that are meant to be followed each time the LLM is invoked. 

Agent Script is a bit like that, but with much more structure. There are specific sections for system, variables, language, and other blocks that dictate broad parameters for the agent. Then there can be one or more topics that include information about how the agent should reason, and actions available to that topic. 

Diagram of agent script blocks detailing both high-level sections as well as more detailed structure of topic sections.
Structure and sections of an Agent Script YAML file

Agent Script YAML files are stored in the agents folder in your project folder. According to the documentation, they are compiled into what’s described in the documentation as a “lower-level metadata” for use by the actual agent. Agent Script is a beta feature. 

2. Cursor Class in Apex

The Apex team has slowly been endowing the Queueable class with more and more features. It’s clear that the priority is to simplify asynchronous Apex. This was laid bare recently when a product manager from Salesforce opened a PR in the Apex PMD project, creating a violation for even using the @future annotation. One big reason not to use a Queueable was the larger processing size of Batchable Apex classes. 

Until now. Now available in the Spring, the Cursor class is a new way for creating a query, storing it in cache on the server, and having fine-grained control over how to access it.

A cursor can retrieve up to 50 million records with a limit of 10,000 instances per 24-hour period. 

The release of cursors is accompanied by the new class PaginationCursor. This provides a cursor for use in human-readable contexts, such as paging through results. Since cursors are cached, if records were deleted between fetches, page sizes could be inconsistent. PaginationCursor ensures that page sizes are consistent, providing an experience that won’t be weird for users. These have a more limited size of 100,000 records, but a higher limit of 200,000 instances per 24-hour period.  

3. Reduce Test Run Size With Relevant Tests

Orgs with complex Apex code bases can create headaches for deployment. Apex test runs have always been designed to be all or nothing. If you have a thousand Apex classes, and you make one change to one line of one of them, all your tests will run. The RunSpecifiedTests feature was added to alleviate this, but turned out to have too many hoops to jump through for most projects. 

The new RunRelevantTests test level is here to get rid of those hoops. So what is a “relevant” test? Well, it depends. Salesforce uses several criteria to determine the tests to run. 

In the Payload

First of all, any Apex tests that are in the deployment payload will be run. 

Discovered by Salesforce

The coolest part of this feature is that Salesforce is now looking at your deployed Apex and using dependency graphs and references to discover tests that are likely connected to the Apex being deployed. As of now, this is hands-off and completely determined by Salesforce as they continue to refine the feature. 

Marked as testFor

In your @isTest annotation, you can now add parameters. One of these is the testFor parameter, where you can identify in any test class, which Apex classes the test is expected to run for. This may not be easy to pin down for every code base, but if you keep well-organized tests, it’s straightforward to indicate which classes and triggers a test is expected to exercise. 

Marked as Critical

If there are tests that should always run, you can mark the @isTest annotation as critical.

The test level is set when deploying your project. 

> sf project deploy start --test-level RunRelevantTests

This feature is in beta for Spring ‘26. 

4. Invoke Predefined Queries by API 

For a long time, SOQL was either invocable in its full syntax from the API, or you might have an Apex method that invoked SOQL. But what if you wanted to create and test a query and make it invocable? This is the purpose of the Named Query API

You can now create and validate SOQL queries and surface them through an API. Go to Setup > Integrations > Named Query API and click New Named Query API. From there, you provide the label, API version, and a SOQL query, including binding any parameters that need to be provided via the query string. Once supplied, you can validate and save the SOQL query.

Named Query API has been surfaced to Agentforce, allowing you to incorporate them into any Agentforce actions you use (although this feature is only in beta). But if you want to test your query, the endpoint for the new API is shared in the UI, so you can use a tool like Postman or Salesforce Inspector Reloaded to test whether the new API behaves as desired. 

5. GraphQL Mutations in Lightning Web Components

The amount of server-side stuff required to make LWC work has been shrinking. With the advent of the GraphQL API, more developers are finding it possible to minimize Apex and directly get the data they need using client-side logic. Up until now, this has only been possible for retrieving data. But in Spring ‘26, mutation operations are now being surfaced in the Salesforce GraphQL API, including to LWC. 

mutation AccountExample{
  uiapi {
    AccountCreate(input: {
      Account: {
        Name: "Trailblazer Express"
      }
    }) {
      Record {
        Id
        Name {
          value
        }
      }
    }
  }
}

In order to support this a new executeMutation function is available for import from the lightning/graphql wire adapter. This is used to perform mutations imperatively in your LWC. 

6. TypeScript Support in LWC Inches Forward

Though still in developer preview, there continues to be movement in TypeScript support for creating LWCs. A small additional move is the ability to import type definitions for base components. You can now import the npm package @salesforce/lightning-types to ensure that any base components comply with TypeScript. 

Previously, developers may have created their own type definition files. If that is the case, the recommendation is to move away from those and use the new npm package. 

To accelerate your way to type safety, the Salesforce DX MCP server surfaces a tool to convert existing JavaScript-based LWCs to TypeScript. This is available as part of Agentforce Vibes.

7. Complex Expressions in LWC

When LWC was created, an architectural decision was made to keep template expressions as simple as possible – specifically, only properties and getters could be bound to templates. This and not dynamically creating components at runtime were part of a focus on ensuring LWCs were more testable and easy to reason about. The simple expressions were a departure from previous UI frameworks for Salesforce, where Visualforce and Aura components allowed complex expression evaluations. 

As a new beta feature, LWC will begin to support complex expressions. At the time of writing, the LWC developer guide had not been updated to explain how, but the release notes refer to a “comprehensive subset of JavaScript expressions”. 

8. Make LWCs Discoverable by Agentforce for Setup

With the advent of agent-based setup, you’ll surely want your LWC and Aura components not to be left behind. With some new configuration added to your LWC xml metadata file, you can make your components discoverable by Agentforce for Setup

By providing component and property descriptions, components will be discoverable and thus possibly recommended during agentic setup work for Lightning record pages. 

9. Session Id No Longer Sent With Outbound Messages

Outbound messages were one of the original ways to send data off-platform. When workflow rules and old approval processes needed to communicate something, this venerable feature could be called upon. 

Reflecting the state of integration at the time, in order to enable the receiving application to make changes back to Salesforce, you could opt for a session Id to be sent along with your posted message. 

Not anymore! In another move to tighten the security stance of Salesforce, session Id will no longer be sent along with outbound messages. While this is definitely a move toward a more secure install base, one would hope that Salesforce hasn’t retired this feature lightly and has been looking for customers still using this feature. 

Thankfully, with the retirement of workflow rules and the introduction of Flow approvals, the need for an outbound message could likely go away entirely. But if you have any two-way integrations using this feature, it would be good to check for them and take corrective action. 

Final Thoughts

With the release notes out and preview orgs in place, the stage is set to begin to get to know the new features we’ll be getting for the Spring ‘26 release. The developer features reach across a broad set of features that at once move development with Salesforce in a direction that makes work with Apex and LWC better, but also support Salesforce’s ambitions for the agentic enterprise. 

As you dig into the release notes, let us know what features you’re most looking forward to getting your hands on for the upcoming release. 

Read More

The Author

Peter Chittum

Peter is Technical Content Director at Salesforce Ben.

Leave a Reply