December 21: Preview release notes are available January 6 and 7: Sandboxes upgraded January 6: Spring ’23 release site is live February 10 and 11: Final release weekend https://www.salesforceben.com/salesforce-spring-23-release-date-preview-information/
General Features: 1. Dynamic Forms for Case and Leads objects (+ existing for Account, Contact and Opportunity) 2. Fetch Data Using the GraphQL Wire Adapter (Pilot): – Built on the Salesforce GraphQL API, the GraphQL wire adapter enables you to use UI API-enabled objects with the object-level security and field-level security of the current user. Lightning Data Service provides the wire adapter with client-side caching and data management capabilities. https://help.salesforce.com/s/articleView?id=release-notes.rn_lwc_graphql_wire.htm&type=5&release=242 3. Field History Tracking for Activities (Task and Event) up to 6 fields 4. Return characters in a String in Reverse Order - $REVERSE (не знаю где это можно использовать, но nice) 5. Track File Download in Near-Real Time with FileEvent (Beta) With FileEvent in Salesforce Real-Time Event Monitoring, you now get real-time notifications when a user downloads a file containing sensitive information. File Event supports transaction security policies. 6. Limit the Maximum number of Loaded Lightning Console Tabs in a session. (required to enable it and define a number of tabs)
<template> <template lwc:if={isTemplateOne}> This is template one. </template> <template lwc:else> This is template two.</template>
List<Account> acc = [SELECT Id FROM Account WITH USER_MODE];https://help.salesforce.com/s/articleVie ... ease=242
Implementation / Development features: 7. Screen FLOW - Reactive Screen Components (Beta)например показать результаты поиска в таблице когда пишешь в строке поиска 8. FLOW - make calls to external web services from within Flow Builder without any need for code (Beta) using "Create HTTP Callout (Beta)" option in flow 9. Development Improved conditional directives https://help.salesforce.com/s/articleView?id=release-notes.rn_lwc_if_else.htm&type=5&release=242 [code]<template> <template lwc:if={isTemplateOne}> This is template one. </template> <template lwc:else> This is template two.</template> [/code] 10. Secure Apex code with User Mode in DML. (GA) [code]List<Account> acc = [SELECT Id FROM Account WITH USER_MODE];[/code] https://help.salesforce.com/s/articleView?id=release-notes.rn_apex_User_Mode_GA.htm&type=5&release=242 11. Dynamically pass Bind variables to a SOQL queryWith the new Database.queryWithBinds, Database.getQueryLocatorWithBinds, and Database.countQueryWithBinds methods, the bind variables in the query are resolved from a Map parameter directly with a key rather than from Apex code variables. As a result, it’s not necessary for the variables to be in scope when the query is executed. https://help.salesforce.com/s/articleView?id=release-notes.rn_apex_bind_var_soql.htm&type=5&release=242
[quote="Eric"]Fetch Data Using the GraphQL Wire Adapter[/quote] Вот это интересненько. Пробовал GraphQL на одном Python проекте, очень понравилось. Хотя я не сторонник юзать дата модель (SObject и SObject Fields) на фронте. Я везде делаю DTO классы и перегоняю данные в них, а потом отправляю на фронт. Больше гибкости в этом и на фронте нет прямой зависимости от дата модели. Интересно как с GraphQL будет это все выглядеть. [quote="Eric"]9. Development Improved conditional directives[/quote] lwc:if, lwc:elseif, lwc:else - а вот это хорошая штука. Честно поднадоело if:true/if:false огороды городить. Но лично я очень скучаю по настоящим expression в теплейтах (к примере item.mode == 'list') а не просто boolean переменная. Надоело эти костыли из геттеров городить. [quote="Eric"]11. Dynamically pass Bind variables to a SOQL queryWith[/quote] А вот это интересно попробовать. Часто использую динамические запросы. И естественно с биндингом, но не испытывал проблем иметь переменную в scope чтобы ее подхватил динамический запрос так как все переменные обычно приходят в виде параметров метод. А так чтобы из map параметры биндить что-то еще не припомню необходимости. Но знать про эту фичу полезно!
Вот еще интересная фича! Использую достаточно часто когда сложные интерфейсы пилятся. С этим проблем не было, но то как это будет выглядеть теперь намного все проще. Плюс автокоплит в редакторе может будет обрабатывать. [url=https://help.salesforce.com/s/articleView?id=release-notes.rn_lwc_templaterefs.htm&type=5&release=242]Query DOM Elements with Refs[/url]
И вот эта штука крайне заманчиво звучит :surprised: [url=https://help.salesforce.com/s/articleView?id=release-notes.rn_lwc_light_dom.htm&type=5&release=242]Enable Third-Party Integrations with Light DOM (Beta)[/url] Я не очень люблю Shadow DOM, но понимаю что для инкапсуляции очень полезная штука чтобы не навредить другим компонентам. Но мне больше нравится подход как в том же Angular когда ВСЕ рендерится в один большой html и скажем те же глобальные стили можно легко накатить на все компоненты. Или с легкостью поменять стили из родителя внутри подчиненного компонента. И мне этого крайне не хватает в Lightning Components. Конечно данная фича касается кастомных компонентов и при желании в них можно пробросить все что угодно из родителя (добавить поддержку каких-то доп параметров) но хотелось бы видеть что-то подобное и для стандартных. Иногда так хочется поиздеваться над видом стандартного компонента, но хрень туда влезешь.
[quote="Eric"]FLOW - make calls to external web services from within Flow Builder without any need for code (Beta) using "Create HTTP Callout (Beta)" option in flow[/quote] Интересно, а будут такие же ограничения как с триггерами или нет?) [quote="Eric"]11. Dynamically pass Bind variables to a SOQL queryWith the new Database.queryWithBinds, Database.getQueryLocatorWithBinds, and Database.countQueryWithBinds methods, the bind variables in the query are resolved from a Map parameter directly with a key rather than from Apex code variables. As a result, it’s not necessary for the variables to be in scope when the query is executed. https://help.salesforce.com/s/articleVie ... ease=242[/quote] А тут вопрос чисто в том, а какая разница, кроме того что это будет MAP. [quote="Dmitry Shnyrev"]Вот еще интересная фича! Использую достаточно часто когда сложные интерфейсы пилятся. С этим проблем не было, но то как это будет выглядеть теперь намного все проще. Плюс автокоплит в редакторе может будет обрабатывать. Query DOM Elements with Refs[/quote] да, выглядит круто, жаль что нельзя их использовать для повторяющихся элементов, придется делать старый добрый template.query
[quote="Maxim Elets"]Интересно, а будут такие же ограничения как с триггерами или нет?)[/quote] не совсем понял, какие ограничения ты имеешь ввиду. Работает примерно так: создаешь Screen Flow, quick action чтоб отркрыть его. + Named Credential with service endpoint. в "Create HTTP Callout Beta" component выбераешь Named Credential, заносишь JSON response example,чтоб был mapping между полями в response и flow variables. вызов синхронный - Request & Reply
[quote="Eric"][quote="Maxim Elets"]Интересно, а будут такие же ограничения как с триггерами или нет?)[/quote] не совсем понял, какие ограничения ты имеешь ввиду. Работает примерно так: создаешь Screen Flow, quick action чтоб отркрыть его. + Named Credential with service endpoint. в "Create HTTP Callout Beta" component выбераешь Named Credential, заносишь JSON response example,чтоб был mapping между полями в response и flow variables. вызов синхронный - Request & Reply[/quote] ну я не ппо скрин флоу, а про тригер флоу
Spring '23 Release Highlights https://trailhead.salesforce.com/content/learn/modules/spring-23-release-highlights