Skip to content
ForceTricks
Back to blog

Salesforce Spring '26: RunRelevantTests and the End of Slow Deploys in Large Orgs

3 min read

For years, Salesforce teams working in large, highly interdependent orgs accepted a painful reality: long pipelines, massive test execution, and naming conventions used as a proxy for impact analysis.

Spring '26 changes that model in a concrete way.

The problem: tests that don't need to run

In complex orgs, the deploy cycle works like this: you change an Apex trigger, the pipeline runs all of the org's tests to ensure coverage, and you wait 40 minutes to find out that 35 of those minutes were tests with nothing to do with what you changed.

The traditional workaround is rigid naming — calling tests AccountTriggerHandlerTest so the system "knows" what to run. But in real orgs, with years of contributions from different teams, that discipline rarely survives.

The Spring '26 solution: RunRelevantTests (Beta)

With the new RunRelevantTests, Salesforce moves test execution from a name-convention-based approach to platform-level dependency intelligence.

What this means in practice:

  • The platform evaluates what was changed
  • Understands what is impacted by that change
  • Runs only the tests that matter

This is especially transformative for:

  • Orgs with tightly coupled Apex code
  • Teams without rigid naming conventions
  • CI/CD pipelines stuck behind thousands of irrelevant tests
  • Large programs where test execution time is the main deploy bottleneck

The new decorators: developer intent over platform intelligence

What makes this release strategically interesting is that the automation doesn't replace developer intent — it amplifies it.

After Salesforce selects the relevant tests, you can extend coverage intentionally with two new decorators:

@IsTest(testFor=...)

Explicitly links a test to a class or trigger:

@IsTest(testFor=AccountTriggerHandler.class)
private class AccountTriggerHandlerTest {
    // ...
}

@IsTest(critical=true)

Ensures a test always runs, regardless of what was changed. Use for critical business logic:

@IsTest(critical=true)
private class PaymentProcessorTest {
    // Always runs — no exceptions
}

The result is a layered model:

✔ Platform-guided relevance
✔ Developer-defined guarantees
✔ Faster pipelines without sacrificing confidence

What this is not

Before planning adoption, a few important caveats:

  1. It's still Beta — may not be available in every org. Test in sandbox before any production plan.
  2. It doesn't fix bad test data — if your tests have unmapped implicit dependencies, behavior may be unpredictable.
  3. It doesn't eliminate the need for good practices@IsTest(critical=true) assumes you know what's critical. That knowledge needs to exist in the team.

Real impact for architects and tech leads

For anyone managing enterprise orgs, this change redefines what "safe deploy" means. It's no longer "I ran all the tests" — it's "I ran the right tests, with the right guarantees, in the least time possible."

Salesforce's direction is clear: from run everything to run what matters — and only what matters.


Are you testing RunRelevantTests in Beta? Tell me in the comments or on LinkedIn how it's going.

Gabriel Cruz Ferreira

Gabriel Cruz Ferreira

Salesforce Architect · 15x Certified · Road to CTA

Was this post helpful?