--- name: lightning-2025-features description: Salesforce Lightning Web Components Winter '26 and 2025 features --- ## 🚨 CRITICAL GUIDELINES ### Windows File Path Requirements **MANDATORY: Always Use Backslashes on Windows for File Paths** When using Edit or Write tools on Windows, you MUST use backslashes (`\`) in file paths, NOT forward slashes (`/`). **Examples:** - ❌ WRONG: `D:/repos/project/file.tsx` - ✅ CORRECT: `D:\repos\project\file.tsx` This applies to: - Edit tool file_path parameter - Write tool file_path parameter - All file operations on Windows systems ### Documentation Guidelines **NEVER create new documentation files unless explicitly requested by the user.** - **Priority**: Update existing README.md files rather than creating new documentation - **Repository cleanliness**: Keep repository root clean - only README.md unless user requests otherwise - **Style**: Documentation should be concise, direct, and professional - avoid AI-generated tone - **User preference**: Only create additional .md files when user specifically asks for documentation --- # Lightning Web Components 2025 Features ## lightning/graphql Module (Winter '26) New module replaces deprecated `lightning/uiGraphQLApi`: ### Migration ```javascript // ❌ Old (deprecated) import { gql, graphql } from 'lightning/uiGraphQLApi'; // ✅ New (Winter '26) import { gql, graphql } from 'lightning/graphql'; export default class MyComponent extends LightningElement { @wire(graphql, { query: gql` query getAccount($id: ID!) { uiapi { query { Account(where: { Id: { eq: $id } }) { edges { node { Id Name Industry } } } } } } `, variables: '$variables' }) results; get variables() { return { id: this.recordId }; } } ``` ### Benefits - Improved performance - Better error handling - Enhanced type safety - Future-proof API ## Local Development (sf lightning dev component) Run LWC components locally without deploying: ```bash # Start local dev server sf lightning dev component # Opens browser at http://localhost:3333 # Live reload on file changes # No deployment needed # Faster development cycle # Specify component sf lightning dev component -n myComponent # Specify target org sf lightning dev component -o myOrg@example.com ``` **Benefits:** - Instant feedback (no deployment wait) - Debug in real browser DevTools - Hot module replacement - Work offline ## Platform Module Access in Component Preview Access platform modules in single component preview: ```javascript // Works in local preview now import { getRecord } from 'lightning/uiRecordApi'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import { NavigationMixin } from 'lightning/navigation'; // Previously required full org deployment // Now works in sf lightning dev component ``` ## Agentforce Targets (Winter '26) New LWC targets for AI agents: ```xml lightning__AgentforceInput lightning__AgentforceOutput ``` ```javascript // agentInputComponent.js import { LightningElement, api } from 'lwc'; export default class AgentInputComponent extends LightningElement { @api agentContext; // Provided by Agentforce handleSubmit() { const userInput = this.template.querySelector('input').value; // Send to Agentforce this.dispatchEvent(new CustomEvent('agentinput', { detail: { input: userInput } })); } } ``` ## Lightning Out 2.0 (GA Winter '26) Re-imagined embedding with web components: ### Traditional Lightning Out (Legacy) ```html
``` ### Lightning Out 2.0 (Modern) ```html ``` **Benefits:** - 50-70% smaller bundle size - Faster load times - Standards-based (no proprietary framework) - Better browser compatibility - Simplified integration ## SLDS 2.0 with Dark Mode (GA Winter '26) Salesforce Lightning Design System 2.0: ```css /* Dark mode support in custom themes */ :host([data-theme="dark"]) { --lwc-colorBackground: #16325c; --lwc-colorTextPrimary: #ffffff; --lwc-brandPrimary: #1589ee; } /* Light mode */ :host([data-theme="light"]) { --lwc-colorBackground: #ffffff; --lwc-colorTextPrimary: #181818; --lwc-brandPrimary: #0176d3; } ``` ```javascript // Toggle dark mode export default class ThemeToggle extends LightningElement { handleThemeChange(event) { const theme = event.target.checked ? 'dark' : 'light'; this.template.host.setAttribute('data-theme', theme); } } ``` ### SLDS Linter with Fix Option ```bash # Install SLDS linter npm install -D @salesforce-ux/slds-linter # Lint with auto-fix npx slds-linter --fix src/ # CI/CD integration npx slds-linter src/ --format json > slds-report.json ``` ## Unified Testing APIs (Winter '26) Test Discovery and Test Runner APIs unify Apex and Flow testing: ```apex // Discover all tests Test.DiscoveryResult discovery = Test.discoverTests(); // Get Apex tests List apexTests = discovery.getApexTests(); // Get Flow tests List flowTests = discovery.getFlowTests(); // Run all tests from single location Test.RunResult result = Test.runTests(discovery); // Check results System.debug('Apex passed: ' + result.getApexTestsPassed()); System.debug('Flow passed: ' + result.getFlowTestsPassed()); ``` **Benefits:** - Unified test execution - Single test report - Simplified CI/CD - Better test orchestration ## Lightning Web Security Enhancements New security protections with API distortions: ```javascript // Additional secure protections automatically applied export default class SecureComponent extends LightningElement { connectedCallback() { // Web APIs now include security distortions // ESLint rules validate distortion compliance // Example: Secure window access const secureWindow = window; // LWS-secured reference } } ``` ### ESLint Rules for Security ```json // .eslintrc.json { "extends": ["@salesforce/eslint-config-lwc/recommended"], "rules": { "@lwc/lwc/no-inner-html": "error", "@lwc/lwc/no-document-query": "error", "@salesforce/lwc-security/no-unsafe-references": "error" } } ``` ## Practical Migration Examples ### GraphQL Module Update ```javascript // Before (Winter '25) import { gql, graphql } from 'lightning/uiGraphQLApi'; @wire(graphql, { query: gql`...` }) results; // After (Winter '26) import { gql, graphql } from 'lightning/graphql'; @wire(graphql, { query: gql`...` }) results; ``` ### Local Development Workflow ```bash # Old workflow (deploy every change) sf project deploy start # Wait 30-60 seconds # Test in org # Repeat... # New workflow (instant feedback) sf lightning dev component # Changes reflect immediately # No deployment # Test in local browser # Deploy only when ready ``` ### Embedding with Lightning Out 2.0 ```html ``` ## Resources - [Lightning Web Components Dev Guide](https://developer.salesforce.com/docs/platform/lwc/guide) - [Winter '26 Release Notes](https://help.salesforce.com/s/articleView?id=release-notes.salesforce_release_notes.htm) - [SLDS 2.0](https://www.lightningdesignsystem.com) - [Lightning Out 2.0](https://developer.salesforce.com/docs/platform/lwc/guide/use-lightning-out.html)