Skip to main content
New tool CRON Expression Builder — preview next run times before you schedule Apex. Open the builder →
3D icon of interconnected circuits representing Salesforce Winter '27 developer features and tools.
Apex

Salesforce Winter '27 Developer Features: Apex, LWC, AI

Winter '27 raises the Apex heap limits, lets integration tests make real HTTP callouts, and opens LWC templates to complex expressions. What each change means for the code you write.

Winter '27 is mostly a limits and tooling release for developers: more heap, real HTTP callouts inside tests, richer metadata for editors and AI assistants, and a few conveniences in SOQL and REST.

Key developer features in Salesforce Winter '27

1. Increased Apex heap limits

Salesforce raised the heap limits for Apex transactions. Synchronous transactions go from 6MB to 10MB, asynchronous from 12MB to 25MB. That is 66% more room synchronously and 108% asynchronously, which should take the edge off the heap overflow errors you hit working with large datasets in production. The "Enforce the Summer '26 Apex heap limit" setting becomes effectively obsolete once the new limits are enforced globally.

You can read the current limit from Apex with Limits.getLimitHeapSize().

2. Test external services and HTTP callouts in Apex integration tests (developer preview)

This developer preview lets you exercise external services and HTTP callouts directly from Apex integration tests, so you validate against real service responses instead of mock callouts.

Setup is short. Enable ApexIntegrationTests in your scratch org definition file, then annotate the integration test class and the relevant test methods with @IntegrationTest.

The constraints matter more than the setup. Integration tests forgo automatic rollback, so you own the test data lifecycle: use @BeforeClass for shared setup and @TearDown to clean up what you committed. Only one integration test can run at a time, and it has to run asynchronously. The release notes carry sample code for the setup and teardown pattern.

3. Apex Symbol API for richer development tools (beta)

The Apex Symbol API is a new Tooling API REST resource that returns detailed metadata about Apex types. It powers code completion in IDEs and gives AI agents something concrete to work from, including grounding for queries about Apex code. It bridges the gap between the /completions endpoint and the SymbolTable Tooling API object, so there is one source of truth for Apex type information. The point of it is AI tooling that generates executable code instead of plausible-looking hallucinations. Sample code is in the release notes.

4. Complex template expressions in Lightning Web Components (generally available)

Complex JavaScript expressions in LWC HTML templates are now generally available, after the beta in Spring '26. A broad subset of JavaScript works directly in the template, which kills off the getters that exist only to format a value or build a CSS class string, and it lets you bind data directly in the template when you iterate. It is opt-in: LWC version 66.0 or later, configured in the .js-meta.xml file.

5. Use third-party web components in LWC (generally available)

You can now use third-party web components directly inside an LWC, without iframes or hand-managed libraries. Apply the lwc:external directive to an element in your LWC template. It is built on web standards, so standards-compliant components work as they are, which saves development time and code you would otherwise maintain yourself.

6. Salesforce development Claude Code plugin

There is now a dedicated Claude code plugin for Salesforce development. It detects Salesforce DX projects and pulls org context through hosted MCP servers, which grounds models like Claude in your project and your org rather than general platform knowledge. That means more accurate code suggestions and fewer of the platform-specific errors AI assistants produce on Salesforce. It helps experienced Salesforce developers, and it helps people who are less familiar with the platform and are asking questions about the code in front of them.

7. Compare values between fields in SOQL (beta)

The FORMULA() function in a SOQL WHERE clause lets you compare and calculate across fields inline. Simple filtering no longer needs a formula field or a trip through Apex.

  • Filter opportunities that still have a balance outstanding:
    SELECT Id, Name FROM Opportunity WHERE FORMULA('Amount_To_Pay__c - Amount_Paid__c') > 0
    

It is beta in Winter '27, requires API version 68.0 or later, and is not available in production environments.

8. Simplify REST API version management

You can use the latest keyword in a REST API URI to point at the most recent API version, so integrations stop needing an edit every time the version number moves.

  • Replace the specific version number (for example v66.0) with latest in your endpoint:
    https://<MyDomainName>.my.salesforce.com/services/data/latest/sobjects/Account
    

9. Resolve field name conflicts in managed package SOQL queries

ISVs can now resolve field name conflicts in SOQL queries inside managed packages. It targets the case where a subscriber's custom field clashes with a package field API name, which is the sort of bug that only ever shows up in someone else's org.

Key takeaways

The higher heap limits and the LWC template expressions are the two changes that touch code you are writing this week. Apex integration tests that make real callouts make integration coverage mean something. The Apex Symbol API and the Claude code plugin both exist to make AI tooling context-aware on Salesforce rather than confidently wrong. Using latest in REST URIs and FORMULA() in SOQL cut maintenance overhead. And ISVs get relief on field name conflicts in managed package queries.

Originally reported by salesforceben.com

Newsletter

One email every Tuesday

New guides, tool updates, and the release-note changes that break things.

No spam. Unsubscribe in one click.

Comments

Loading comments...

Leave a Comment