<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet title="XSL_formatting" type="text/xsl" href="https://developer.salesforce.com/blogs/wp-content/themes/dfctheme/includes/feed_styles.xsl" ?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:podcast="https://podcastindex.org/namespace/1.0"
xmlns:rawvoice="https://blubrry.com/developer/rawvoice-rss/"
xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:dscblog="https://developer.salesforce.com/blog/dscblog/"
>


<channel>
	<title>Salesforce Developers Blog</title>
	<atom:link href="https://developer.salesforce.com/blogs/feed" rel="self" type="application/rss+xml" />
	<link>https://developer.salesforce.com/blogs</link>
	<description>Elevating developer skills and connecting with the Salesforce Developers community</description>
	<lastBuildDate>Fri, 17 Apr 2026 19:04:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<atom:link rel="hub" href="https://pubsubhubbub.appspot.com/" />
	<itunes:author>Salesforce Developers Blog</itunes:author>
	<itunes:explicit>false</itunes:explicit>
	<itunes:image href="https://developer.salesforce.com/blogs/wp-content/plugins/powerpress/itunes_default.jpg" />
	<itunes:owner>
		<itunes:name>Salesforce Developers Blog</itunes:name>
	</itunes:owner>
	<podcast:medium>podcast</podcast:medium>
	<image>
		<title>Salesforce Developers Blog</title>
		<url>https://developer.salesforce.com/blogs/wp-content/plugins/powerpress/rss_default.jpg</url>
		<link>https://developer.salesforce.com/blogs</link>
	</image>
	<podcast:podping usesPodping="true" />
<site xmlns="com-wordpress:feed-additions:1">244780846</site>	<item>
		<title>Lightning MiniHack Live 予選実装要件: 予算超過を打破せよ！緊急承認ロジックの実装</title>
		<link>https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-qualifiers-implementation-task-jp</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-qualifiers-implementation-task-jp#respond</comments>
		<pubDate>Thu, 16 Apr 2026 23:00:24 +0000</pubDate>
		<dc:creator><![CDATA[Hiroyuki Inaba]]></dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[mini hack]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206035</guid>
		<description><![CDATA[<p>&#23455;&#35013;&#12398;&#27491;&#30906;&#24615;&#12384;&#12369;&#12391;&#28961;&#12367;&#12473;&#12500;&#12540;&#12489;&#12418;&#37325;&#35201;&#12394; Lightning MiniHack Live&#12290;&#20104;&#36984;&#12398;&#23455;&#35013;&#35201;&#20214;&#12399;&#12300;&#20104;&#31639;&#36229;&#36942;&#12434;&#25171;&#30772;&#12379;&#12424;&#65281;&#32202;&#24613;&#25215;&#35469;&#12525;&#12472;&#12483;&#12463;&#12398;&#23455;&#35013;&#12301;&#12364;&#12486;&#12540;&#12510;&#12391;&#12377;&#12290;&#27491;&#30906;&#24615;&#12399;&#12418;&#12385;&#12429;&#12435;&#12289;&#26368;&#36895;&#12398;&#23455;&#35013;&#25163;&#27573;&#12399;&#12393;&#12428;&#12394;&#12398;&#12363;&#65311;&#12415;&#12394;&#12373;&#12414;&#12398;&#12450;&#12452;&#12487;&#12450;&#12539;&#38275;&#12365;&#12395;&#26399;&#24453;&#12391;&#12377;&#65281;</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-qualifiers-implementation-task-jp">Lightning MiniHack Live 予選実装要件: 予算超過を打破せよ！緊急承認ロジックの実装</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2 data-pm-slice="1 3 []">ビジネスシナリオ</h2>
<p>株式会社アストロ・エンタープライズ(架空の会社名)では、各プロジェクトの経費管理を Salesforce 上で行っています。通常、プロジェクト予算は厳格に管理されており、予算残高がマイナスになるような経費の支出はシステムでブロックする必要があります。 しかし、現場からは「災害時や緊急トラブル対応時には、承認を待たずに予算超過してでも経費を計上したい」という強い要望が出ています。</p>
<p>あなたはシステム管理者兼開発者として、この「原則禁止、ただし緊急時は例外」という柔軟かつ堅牢なロジックと、現場が使いやすい操作画面をゼロの状態から構築しなければなりません。</p>
<h2>実装要件</h2>
<p>以下のコンポーネント作成から画面カスタマイズ、ロジック実装までのすべての工程を録画に含めてください。</p>
<h4>1. カスタムオブジェクトと項目の作成</h4>
<table>
<tbody>
<tr>
<th>オブジェクト</th>
<th>項目名 (表示名)</th>
<th>型</th>
<th>説明</th>
</tr>
<tr>
<td><strong>プロジェクト</strong> (<code>Project__c</code>)</td>
<td><strong>予算残高</strong> (<code>Budget__c</code>)</td>
<td>通貨 (18, 0)</td>
<td>プロジェクトの残り予算。</td>
</tr>
<tr>
<td><strong>経費</strong> (<code>Expense__c</code>)</td>
<td><strong>プロジェクト</strong> (<code>Project__c</code>)</td>
<td>主従関係 または 参照関係</td>
<td>親となるプロジェクト。参照関係の場合は必須項目とすること。</td>
</tr>
<tr>
<td></td>
<td><strong>金額</strong> (<code>Amount__c</code>)</td>
<td>通貨 (18, 0)</td>
<td>支出する金額。</td>
</tr>
<tr>
<td></td>
<td><strong>緊急フラグ</strong> (<code>Is_Emergency__c</code>)</td>
<td>チェックボックス</td>
<td>ON の場合、予算超過を許容する。</td>
</tr>
</tbody>
</table>
<p>※記載以外のオブジェクトや項目を作っても構いませんが、加点はされません。「録画提出の手順と完了定義」のステップ3 動作検証（証明操作）が記述通り完了すれば良し、とします。</p>
<h4>2. 画面カスタマイズ（UI/UX）</h4>
<ul>
<li><strong>プロジェクトのレコード詳細画面</strong>:
<ul>
<li>関連リストとして「経費」オブジェクトが表示されるように設定してください。</li>
<li>関連リストには「経費名」「金額」「緊急フラグ」の各項目が表示されている必要があります。</li>
<li><strong>重要:</strong> プロジェクトのレコード詳細と関連リストは、タブの切り替えではなく、同一ページ内に同時に表示されるように配置してください。</li>
</ul>
</li>
</ul>
<h4>3. 予算超過の制御ロジック（基本ルール）</h4>
<ul>
<li><strong>目的</strong>: 通常時、プロジェクトの「予算残高」が 0 未満（マイナス）になるような保存を禁止する。</li>
<li><strong>エラーメッセージ</strong>: 「予算が不足しています。経費を計上できません。」</li>
<li><strong>実装手段</strong>: 入力規則、フロー、または Apex トリガーのいずれか、もしくは組み合わせて実装。</li>
</ul>
<h4>4. 自動減算ロジックの実装</h4>
<ul>
<li><strong>内容</strong>: 経費レコードが作成された際、親プロジェクトの「予算残高」から経費の「金額」を差し引く。</li>
<li><strong>実装手段</strong>: Apex トリガー、またはフローのいずれかで実装。今回はバルク更新を考慮せず画面操作での1件 &amp; 新規作成のみが対象で良い。</li>
</ul>
<h4>5. 緊急承認ロジック（例外要件）</h4>
<ul>
<li><strong>目的</strong>: 現場の緊急事態に柔軟に対応するため、特定の条件下で基本ルールをスキップさせる。</li>
<li><strong>要件</strong>: 経費レコードの「緊急フラグ」が <strong>ON</strong> の場合は、要件3で定義した「予算超過の制限」を無視し、予算残高がマイナスになっても正常に保存を完了させること。</li>
</ul>
<h2>録画提出の手順と完了定義</h2>
<p>以下の操作手順をすべて含む、開始から完了までは無編集の 1 本の画面操作録画を作成してください。</p>
<p>操作にあたっては禁止事項があります。(ブラウザのオートコンプリート禁止、事前に用意したコードのコピー&amp;ペースト禁止など)</p>
<p>詳しくは<a href="https://developer.salesforce.com/jpblogs/2026/04/lightning-minihack-live-2026-jp">イベント概要&amp;予選参加ガイド</a>「操作にあたっての制約」を参照してください。</p>
<h4>ステップ 1：開始確認</h4>
<ol>
<li>設定のホームを表示させた状態から録画を開始する。
<ul>
<li>Trailhead Playground で新規に取得した直後の状態</li>
<li>事前設定は表示言語が日本語以外の場合は日本語に変えることのみを可とする</li>
</ul>
</li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206037" >
			    <img fetchpriority="high" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260413205610/lightning-minihack-live-implementation-start.jpeg?w=1538" class="postimages" width="1538" height="1000" alt="" />
			  </span>
			</p>
<p>※「設定のホーム」画面であれば表示内容に差異があっても良いです。</p>
<h4>ステップ 2：環境構築（実装操作）</h4>
<ol>
<li><strong>オブジェクト作成</strong>: 指定された 2 つのオブジェクトと項目を作成する。</li>
<li><strong>画面カスタマイズ</strong>: プロジェクトのレコードページを編集し、関連リストを配置する。</li>
<li><strong>ロジック実装</strong>: 「予算減算」「超過制御」「緊急例外」の各ロジックを実装・有効化する。</li>
</ol>
<h4>ステップ 3：動作検証（証明操作）</h4>
<ol>
<li><strong>テストデータの準備</strong>:
<ul>
<li>「プロジェクト」レコードを作成し、<strong>プロジェクト名: プロジェクト1</strong>、<strong>予算残高: 100,000</strong> と入力して保存する。</li>
</ul>
</li>
<li><strong>通常時のブロック確認（要件3の証明）</strong>:
<ul>
<li>関連リストから「経費」を新規作成する。</li>
<li><strong>経費名: 経費1</strong>、<strong>金額: 150,000</strong>、<strong>緊急フラグ: OFF</strong> で保存を試み、エラーメッセージが表示されることを示す。</li>
</ul>
</li>
<li><strong>緊急時の許可確認（要件5の証明）</strong>:
<ul>
<li>同じ入力画面のまま、<strong>緊急フラグ: ON</strong> に変更して保存し、成功することを示す。</li>
</ul>
</li>
<li><strong>最終結果の確認（要件2・4の証明）</strong>:
<ul>
<li>親の「プロジェクト」レコード詳細画面で、予算残高が <strong>-50,000</strong> になり、かつ関連リストに経費が表示されていること、レコードの項目として経費名、金額、緊急フラグが表示されていることを示す。</li>
</ul>
</li>
</ol>
<ul>
<li style="list-style-type: none">
<ul></ul>
</li>
</ul>
<h4>ステップ 4：終了確認</h4>
<ol>
<li>ステップ3-4操作完了時の画面で、録画を終了する。</li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206038" >
			    <img decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260413205641/lightning-minihack-live-implementation-finish.jpeg?w=1538" class="postimages" width="1538" height="1000" alt="" />
			  </span>
			</p>
<p>※アプリケーションがセールスである必要はありません。</p>
<h2>お問い合わせ</h2>
<p>実装要件や録画方法について不明点や質問がありましたら<a href="https://developer.salesforce.com/jpblogs/2026/04/lightning-minihack-live-2026-jp">イベント概要&amp;予選参加ガイド</a>をご確認の上、コミュニケーション用の Slack ワークスペースの指定のチャンネルでお尋ねください。</p>
<p>Happy Hacking!</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-qualifiers-implementation-task-jp">Lightning MiniHack Live 予選実装要件: 予算超過を打破せよ！緊急承認ロジックの実装</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-qualifiers-implementation-task-jp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206035</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260413210340/lightning-minihack-live-qualifiers-implementation-task-blog-feature.png?w=1200" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260413210340/lightning-minihack-live-qualifiers-implementation-task-blog-feature.png?w=1200" medium="image" />
	</item>
		<item>
		<title>Performance-First Apex Development with ApexGuru in Salesforce DX MCP Server</title>
		<link>https://developer.salesforce.com/blogs/2026/04/performance-first-apex-development-with-apexguru-in-salesforce-dx-mcp-server</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/performance-first-apex-development-with-apexguru-in-salesforce-dx-mcp-server#respond</comments>
		<pubDate>Thu, 16 Apr 2026 08:00:20 +0000</pubDate>
		<dc:creator><![CDATA[Mayuresh Verma]]></dc:creator>
				<category><![CDATA[Agentforce Vibes]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Agentic DX]]></category>
		<category><![CDATA[Apex Performance]]></category>
		<category><![CDATA[ApexGuru]]></category>
		<category><![CDATA[Code Analyzer]]></category>
		<category><![CDATA[developer tooling]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Model context protocol]]></category>
		<category><![CDATA[Salesforce DX MCP Server]]></category>
		<category><![CDATA[Scale Products]]></category>
		<category><![CDATA[Shift-Left]]></category>
		<category><![CDATA[Static Analysis]]></category>
		<category><![CDATA[Vibe Coding]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206079</guid>
		<description><![CDATA[<p>Shift your performance analysis left with ApexGuru and the Salesforce DX MCP Server. Now, you can catch and fix costly Apex bottlenecks directly in your IDE before you ever hit deploy.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/performance-first-apex-development-with-apexguru-in-salesforce-dx-mcp-server">Performance-First Apex Development with ApexGuru in Salesforce DX MCP Server</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">What if performance analysis started before deployment instead of after it? That is the shift </span><a href="https://help.salesforce.com/s/articleView?language=en_US&amp;id=xcloud.apexguru_overview.htm&amp;type=5"><span style="font-weight: 400">ApexGuru</span></a><span style="font-weight: 400"> now enables through the </span><a href="https://github.com/salesforcecli/mcp/blob/main/packages/mcp-provider-scale-products/README.md"><span style="font-weight: 400">Salesforce DX MCP Server</span></a><span style="font-weight: 400">. (</span><i><span style="font-weight: 400">Model Context Protocol, or MCP, </span></i><span style="font-weight: 400">serves as an interface between AI assistants and external data sources.) ApexGuru is the Salesforce AI-powered capability for identifying and helping you fix performance-related issues in your code. If you’ve read our earlier posts on </span><a href="https://developer.salesforce.com/blogs/2025/06/the-apexguru-ai-engine-explained"><span style="font-weight: 400">specialized AI models</span></a><span style="font-weight: 400"> and </span><a href="https://developer.salesforce.com/blogs/2025/06/the-apexguru-ai-engine-explained"><span style="font-weight: 400">agentic code fixing</span></a><span style="font-weight: 400">, this is the next step: </span><b>bringing ApexGuru performance analysis directly into the developer workflow in agentic IDEs and MCP-compatible clients so you can catch performance bottlenecks while the code is still in front of you</b><span style="font-weight: 400">. In this post, you’ll learn what ApexGuru adds to the agentic developer experience, why this changes the day-to-day Apex workflow, and how to start using it in your MCP client.</span></p>
<h2><span style="font-weight: 400">Why this matters to developers</span></h2>
<p><span style="font-weight: 400">Most teams treat performance analysis as a late-stage activity. Code gets written, reviewed, tested, and deployed, and only then do the costly problems show up: SOQL in loops, unbounded queries, expensive schema lookups, or queries that fetch more data than the code actually uses. By that point, fixing those issues often means rework, delay, and production cleanup.</span></p>
<p>ApexGuru changes that sequence. In the Agentic DX MCP workflow, performance analysis can happen in the same loop as writing code, reviewing code, and preparing changes for deployment. That means developers can catch issues before they become runtime incidents or technical debt. This is especially useful because ApexGuru is not just a generic static check. In Salesforce DX MCP Server, the <a href="https://github.com/salesforcecli/mcp?tab=readme-ov-file#scale-products-toolset"><u><code>scale-products</code><span> toolset</span></u></a><span> includes the GA tool </span><code>scan_apex_class_for_antipatterns</code>, which analyzes Apex classes for performance antipatterns and then returns detections grouped by severity along with fix guidance. When connected to an org where ApexGuru is enabled, the severity assessment can also reflect runtime-informed context rather than static structure alone.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206081" >
			    <img decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260416120708/ApexGuru-runtime-data-and-performance-guidance-displayed-directly-in-the-IDE.png?w=817" class="postimages" width="817" height="643" alt="ApexGuru runtime data and performance guidance displayed directly in the IDE." />
			  </span>
			</p>
<h2><span style="font-weight: 400">From Code Analyzer to Salesforce DX MCP Server</span></h2>
<p><span style="font-weight: 400">The shift-left journey of ApexGuru did not start with MCP. It had already begun moving into the developer workflow through its integration with </span><a href="https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview"><span style="font-weight: 400">Code Analyzer</span></a><span style="font-weight: 400">, where developers could authorize an ApexGuru-enabled org and scan a selected Apex class directly from the editor for performance issues. Unlike Code Analyzer, however, ApexGuru itself is available only in Production and Full Copy Sandbox orgs for Unlimited, Enterprise, Professional, and Signature Editions.</span></p>
<p><a href="https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/analyze-vscode.html#scan-your-apex-code-for-performance-issues-using-apexguru"><span style="font-weight: 400">ApexGuru Insights in Code Analyzer</span></a><span style="font-weight: 400"> can still be surfaced in earlier-stage environments when ApexGuru has already been activated in Production or Full Copy Sandbox orgs. In practice, this allows developers to view ApexGuru Insights through Code Analyzer in Developer Sandbox, Partial Copy Sandbox, and Scratch Orgs where the Developer Hub is backed by a Production or Full Copy org. That brought ApexGuru from an app experience into an IDE-assisted workflow and extended performance analysis further left in the development lifecycle.</span></p>
<p><span style="font-weight: 400">Salesforce DX MCP Server builds on that foundation. ApexGuru first established a runtime-aware, specialized AI approach to detecting Apex performance antipatterns, then moved closer to the developer workflow through Code Analyzer integration in Visual Studio Code (VS Code). With DX MCP, ApexGuru takes the next step by expanding into broader MCP-based and agentic workflows across clients such as </span><a href="https://www.salesforce.com/agentforce/developers/vibe-coding/"><span style="font-weight: 400">Agentforce Vibes</span></a><span style="font-weight: 400">, Claude Code, Cursor, Cline, and other MCP-compatible developer environments. Code Analyzer brought ApexGuru into the IDE, while Salesforce DX MCP Server broadens its reach and makes ApexGuru available as part of a more flexible, agent-driven development experience.</span></p>
<h2><span style="font-weight: 400">What ApexGuru adds to Salesforce DX MCP Server</span></h2>
<p><span style="font-weight: 400">ApexGuru is especially useful in Salesforce DX MCP Server because it brings performance analysis into the same workflow where developers are already writing and reviewing code. A class can compile, pass tests, and still carry avoidable CPU cost, query inefficiency, or scalability risk. ApexGuru helps surface those issues earlier, before they turn into runtime incidents or costly cleanup later.</span></p>
<p><span style="font-weight: 400">With Salesforce DX MCP Server, the flow becomes much simpler. You write code, ask your MCP client to scan the class, review the antipatterns and severity, and apply the recommended fixes before you commit or deploy. Performance is no longer a separate destination. It becomes part of the development loop.</span></p>
<h2><span style="font-weight: 400">Designing performance guidance for agentic workflows</span></h2>
<p><span style="font-weight: 400">To truly empower an AI agent to act as a performance engineer, we had to move beyond simple API wrappers and design for </span><i><span style="font-weight: 400">context exchange</span></i><span style="font-weight: 400">. That is, we had to design for a workflow that combines local code context with org-side runtime context. The core challenge in bringing ApexGuru to agentic IDEs was bridging two completely different environments: the developer&#8217;s local machine (where the unsaved code lives) and the Salesforce org (where the runtime telemetry lives).</span></p>
<p><span style="font-weight: 400">To solve this, we mapped ApexGuru to the MCP as an executable tool within the Salesforce DX MCP Server. The Salesforce DX MCP Server runs locally, so it can inspect the developer’s file directly while also using </span><a href="https://developer.salesforce.com/tools/salesforcecli"><span style="font-weight: 400">Salesforce CLI</span></a><span style="font-weight: 400"> authentication to access org-side runtime context.</span></p>
<p>When an agent invokes the <code>scan_apex_class_for_antipatterns</code> tool, the invocation requires specific parameters: the <code>className</code> and the absolute <code>apexFilePath</code>. Behind the scenes, the tool does not rely on simple regular expressions; it utilizes Abstract Syntax Tree (AST) parsing to accurately analyze the local code&#8217;s syntax, tracking method context and loop depth.</p>
<p>The real magic happens when this local static analysis is combined with remote telemetry. The tool connects to your authorized org to see if the detected pattern (such as a <code>Schema.getGlobalDescribe()</code> call) is actually causing high CPU usage in a Production or a Full Copy Sandbox org. It then returns a JSON-structured payload to the agent containing the antipattern type, the runtime-informed severity level, the problematic code snippet, and explicit fix instructions. Because the output is structured, an MCP-compatible client can reliably summarize the finding, explain why it matters, and help display a potential fix in the editor.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206082" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260416120736/Sequence-diagram-showing-how-the-Scan-Apex-Class-for-Antipatterns-tool-works-e1776366470348.png?w=1000" class="postimages" width="1000" height="704" alt="Sequence diagram showing how the Scan Apex Class for Antipatterns tool works." />
			  </span>
			</p>
<p>To enable this agentic experience in an MCP-compatible client, simply define the Salesforce DX MCP Server in your configuration file and pass the <code>--toolsets scale-products</code> flag.</p>
<p><span style="font-weight: 400">Much more than a static scan wrapped in chat, ApexGuru in Salesforce DX MCP Server provides a way to bring local code analysis and org-aware prioritization into the same workflow, so developers can decide what to fix first while they are still coding.</span></p>
<h2><span style="font-weight: 400">What the experience looks like in practice</span></h2>
<p><span style="font-weight: 400">ApexGuru in Salesforce DX MCP Server does more than flag a pattern; it can show you runtime-informed findings directly in the coding surface. In the following two screenshots from Agentforce Vibes, the first scan view shows the detected antipatterns, their severity, and a short explanation of why each one matters. The second, deeper view expands the issue into a more detailed explanation with telemetry-backed reasoning, expected improvement after remediation, and the likely impact on performance and stability.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206083" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260416120812/ApexGuru-scan-results-inside-Agentforce-Vibes-showing-a-CRITICAL-severity-antipattern-its-description-and-runtime-metrics-including-8.4-of-App-CPU-during-peak-support-traffic.png?w=873" class="postimages" width="873" height="266" alt="ApexGuru scan results inside Agentforce Vibes showing a CRITICAL severity antipattern, its description, and runtime metrics, including “8.4% of App CPU during peak support traffic”." />
			  </span>
			</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206084" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260416120855/Detailed-view-of-a-critical-ApexGuru-finding-showing-the-flagged-line-why-Schema.getGlobalDescribe-in-a-loop-is-costly-and-the-recommended-direct-SObject-type-fix.png?w=638" class="postimages" width="638" height="598" alt="Detailed view of a critical ApexGuru finding showing the flagged line, why Schema.getGlobalDescribe() in a loop is costly, and the recommended direct SObject type fix." />
			  </span>
			</p>
<p><span style="font-weight: 400">Whereas a traditional code check might tell you that something is risky, ApexGuru goes further by helping answer three more useful questions: why this issue hurts, why it matters in this org, and what the likely benefit is if you fix it now. That is what makes the developer experience feel closer to performance guidance than to using a simple linter.</span></p>
<p><span style="font-weight: 400">For example, if you are editing an Apex class that queries inside a loop or retrieves far more fields than the code actually uses, the code may still work functionally, but the pattern can become expensive as data volume grows. With </span><a href="https://github.com/salesforcecli/mcp/tree/main"><span style="font-weight: 400">ApexGuru in Salesforce DX MCP Server</span></a><span style="font-weight: 400">, you can ask your MCP client to scan the file for performance issues in your prompt; for example, “Scan the class for performance issues.&#8221;” A typical result includes a grouped antipattern type, a fix instruction, one or more detected instances, and severity for each instance.</span></p>
<h2><span style="font-weight: 400">Conclusion</span></h2>
<p><span style="font-weight: 400">Performance-first development is not just about catching issues earlier. It is about making performance review a natural part of how code gets written and refined. ApexGuru in Salesforce DX MCP Server moves performance analysis closer to the moment where developers can still act on it quickly. Instead of discovering costly bottlenecks after deployment, developers can now surface telemetry-backed findings while they are still coding, understand why those findings matter, and fix them before they become larger problems.</span></p>
<p><span style="font-weight: 400">That is the real promise of this integration. ApexGuru is no longer limited to a separate app surface or a single IDE extension flow. It is becoming part of a broader developer workflow where performance, code quality, and remediation come together in the same loop.</span></p>
<h2><span style="font-weight: 400">Resources</span></h2>
<ul>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=xcloud.apexguru_overview.htm&amp;type=5"><span style="font-weight: 400">Help documentation ApexGuru</span></a></li>
<li style="font-weight: 400"><a href="https://salesforce.vidyard.com/watch/9wrv1Nhuk3xntidbouDWpz"><span style="font-weight: 400">ApexGuru in DX MCP Server: Demo video </span></a></li>
<li style="font-weight: 400"><a href="https://github.com/salesforcecli/mcp/blob/main/packages/mcp-provider-scale-products/README.md"><span style="font-weight: 400">ApexGuru or Scale Products MCP README</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/blogs/2025/06/the-apexguru-ai-engine-explained"><span style="font-weight: 400">The ApexGuru AI Engine, Explained</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/blogs/2025/09/inside-apexguru-agentic-code-fixing"><span style="font-weight: 400">Inside ApexGuru: Agentic Code Fixing</span></a></li>
<li style="font-weight: 400"><a href="https://github.com/salesforcecli/mcp/tree/main"><span style="font-weight: 400">Salesforce DX MCP Server repository and tool documentation</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/blogs/2025/02/optimize-your-apex-for-apps-and-agentforce-with-apexguru"><span style="font-weight: 400">Optimize Your Apex for Apps and Agentforce with ApexGuru</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/analyze-vscode.html#scan-your-apex-code-for-performance-issues-using-apexguru"><span style="font-weight: 400">Code Analyzer VS Code extension documentation</span></a></li>
</ul>
<h2><span style="font-weight: 400">About the Authors</span></h2>
<p><b>Mayuresh Verma</b><span style="font-weight: 400"> is a Senior AI Product Manager at Salesforce working on the Scalability Products portfolio, including ApexGuru. Reach out to him on </span><a href="https://www.linkedin.com/in/mayuresh-verma/"><span style="font-weight: 400">Linkedin</span></a><span style="font-weight: 400">.</span></p>
<p><b>Samarth Arora</b><span style="font-weight: 400"> is a Member of Technical Staff at Salesforce working on ApexGuru. Reach out to him on </span><a href="https://www.linkedin.com/in/samarth-sfdc/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/performance-first-apex-development-with-apexguru-in-salesforce-dx-mcp-server">Performance-First Apex Development with ApexGuru in Salesforce DX MCP Server</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/performance-first-apex-development-with-apexguru-in-salesforce-dx-mcp-server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206079</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260416121249/Generic-D-e1776366784247.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260416121249/Generic-D-e1776366784247.png?w=1000" medium="image" />
	</item>
		<item>
		<title>New in Salesforce Developer Edition: Agentforce Vibes IDE, Claude 4.5, MCP</title>
		<link>https://developer.salesforce.com/blogs/2026/04/new-developer-edition-agentforce-vibes-claude-mcp</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/new-developer-edition-agentforce-vibes-claude-mcp#respond</comments>
		<pubDate>Wed, 15 Apr 2026 16:00:46 +0000</pubDate>
		<dc:creator><![CDATA[René Winkelmeyer]]></dc:creator>
				<category><![CDATA[Agentforce Vibes]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[New Developments]]></category>
		<category><![CDATA[Salesforce Events]]></category>
		<category><![CDATA[Agentforce Vibes IDE]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[Claude Sonnet 4.5]]></category>
		<category><![CDATA[developer edition]]></category>
		<category><![CDATA[Lightning Web Components]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Salesforce Hosted MCP]]></category>
		<category><![CDATA[TDX 2026]]></category>
		<category><![CDATA[Vibe Coding]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205995</guid>
		<description><![CDATA[<p>Salesforce Developer Edition now includes Agentforce Vibes IDE, Claude Sonnet 4.5, and Hosted MCP Servers - all free. Here's what's new.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/new-developer-edition-agentforce-vibes-claude-mcp">New in Salesforce Developer Edition: Agentforce Vibes IDE, Claude 4.5, MCP</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400;">The free Salesforce Developer Edition just got a major upgrade today at TDX in April 2026, alongside other platforms like </span><a href="https://www.salesforce.com/news/stories/agent-fabric-control-plane-announcement/"><span style="font-weight: 400;">Agent Fabric</span></a><span style="font-weight: 400;">. Starting today, every Developer Edition org includes access to </span><a href="https://developer.salesforce.com/docs/platform/code-builder/guide/codebuilder-overview.html"><span style="font-weight: 400;">Agentforce Vibes IDE</span></a><span style="font-weight: 400;">, </span><a href="https://www.salesforce.com/agentforce/developers/vibe-coding/"><span style="font-weight: 400;">Agentforce Vibes</span></a><span style="font-weight: 400;"> with Claude Sonnet 4.5 as the default coding model, and </span><a href="https://help.salesforce.com/s/articleView?id=platform.hosted_mcp_servers.htm&amp;type=5"><span style="font-weight: 400;">Salesforce Hosted MCP Servers</span></a><span style="font-weight: 400;">, all at no cost.</span></p>
<p><span style="font-weight: 400;">If you&#8217;ve been waiting for a reason to spin up a new Developer Edition org (or dust off your existing one), this is it. Since </span><a href="https://developer.salesforce.com/blogs/2025/03/introducing-the-new-salesforce-developer-edition-now-with-agentforce-and-data-cloud"><span style="font-weight: 400;">we launched the new Developer Edition in March</span></a><span style="font-weight: 400;"> with Agentforce and Data 360 (formerly Data Cloud), these three additions turn it into a full AI development environment.</span></p>
<h2><span style="font-weight: 400;">Agentforce Vibes IDE is now available in Developer Edition</span></h2>
<p><span style="font-weight: 400;">Agentforce Vibes IDE is a </span><b>browser-based, cloud-hosted Visual Studio Code (VS Code) environment</b><span style="font-weight: 400;"> that launches directly from your org&#8217;s Setup menu. Previously known as Code Builder, it gives you a fully authenticated, org-aware development environment with no local installation required.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206059" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260414144519/image1_bd4d9d-e1776199536496.png?w=1000" class="postimages" width="1000" height="622" alt="Agentforce Vibes IDE open in the browser" />
			  </span>
			</p>
<p><span style="font-weight: 400;">Open Setup, click Agentforce Vibes, and within moments you&#8217;re working in a full VS Code editor with Salesforce Extensions, </span><a href="https://developer.salesforce.com/tools/salesforcecli"><span style="font-weight: 400;">Salesforce CLI</span></a><span style="font-weight: 400;">, and GitHub integration preconfigured. Your org&#8217;s metadata loads automatically into an SFDX project. No manual authentication, no CLI setup, no extension hunting.</span></p>
<p><span style="font-weight: 400;">From there you can develop and deploy Apex, Lightning Web Components (LWCs), and flows; run tests against your org; use the integrated terminal; and access Agentforce Vibes (the agentic coding experience) directly from the sidebar.</span></p>
<h2><span style="font-weight: 400;">Agentforce Vibes with Claude Sonnet 4.5: vibe coding for Salesforce</span></h2>
<p><span style="font-weight: 400;">Agentforce Vibes is the Salesforce enterprise vibe coding capability, and it&#8217;s now available in Developer Edition with </span><b>Claude Sonnet 4.5 as the default model</b><span style="font-weight: 400;">. It understands your Salesforce org&#8217;s metadata, schema, and existing code patterns. When you tell it to &#8220;create a trigger that prevents duplicate Accounts based on email,&#8221; for example, it reads your actual org structure first. No hallucinated field names.</span></p>
<p><span style="font-weight: 400;">The coding agent comes with two modes:</span></p>
<ul>
<li style="font-weight: 400;"><b>Plan mode:</b><span style="font-weight: 400;"> Analyzes your org, clarifies requirements, and generates an implementation plan before writing code.</span></li>
<li style="font-weight: 400;"><b>Act mode:</b><span style="font-weight: 400;"> Creates and modifies Apex classes, LWCs, triggers, and test classes based on your natural language instructions.</span></li>
</ul>
<p><span style="font-weight: 400;">Agentforce Vibes comes with predefined agent skills, and integrates with Salesforce ALM tools like </span><a href="https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/code-analyzer.html"><span style="font-weight: 400;">Code Analyzer</span></a><span style="font-weight: 400;">, and </span><a href="https://help.salesforce.com/s/articleView?id=platform.devops_center_overview.htm&amp;type=5"><span style="font-weight: 400;">DevOps Center</span></a><span style="font-weight: 400;">. It does not deploy anything unless you explicitly ask; by default, it modifies local project files you review first.</span></p>
<h3><span style="font-weight: 400;">Usage limits for Developer Edition</span></h3>
<ul>
<li style="font-weight: 400;"><b>110 requests per month</b><span style="font-weight: 400;"> with Claude Sonnet 4.5</span></li>
<li style="font-weight: 400;"><b>1.5 million tokens per month</b></li>
<li style="font-weight: 400;"><b>Monthly refresh through May 31, 2026</b><span style="font-weight: 400;"> (allocation resets each month)</span></li>
<li style="font-weight: 400;"><b>After May 31:</b><span style="font-weight: 400;"> a one-time-only allocation of 110 requests / 1.5M tokens with no further refresh</span></li>
</ul>
<p><span style="font-weight: 400;">You have about two months of recurring access to experiment and build, followed by a final allocation, if you start </span><i><span style="font-weight: 400;">now</span></i><span style="font-weight: 400;">. Use the monthly cycles to explore broadly; use the final allocation to finish what you&#8217;ve started. If you don&#8217;t start now, you&#8217;ll only get the final allocation.</span></p>
<p><b>To stretch your requests,</b><span style="font-weight: 400;"> use Plan mode before switching to Act mode, be specific in your prompts (for example, say &#8220;create an Apex before-insert trigger on Lead that checks for duplicate Email values&#8221; rather than &#8220;build something for leads&#8221;), and retrieve only the metadata relevant to your current task.</span></p>
<h2><span style="font-weight: 400;">Salesforce Hosted MCP Servers come to Developer Edition</span></h2>
<p><span style="font-weight: 400;">Now available in Developer Edition, Salesforce Hosted MCP Servers provide a standardized way for external AI tools to connect to your Salesforce data.</span></p>
<p><span style="font-weight: 400;">MCP (</span><a href="https://modelcontextprotocol.io/"><span style="font-weight: 400;">Model Context Protocol</span></a><span style="font-weight: 400;">) is an open standard created by Anthropic that acts as a </span><b>universal interface between AI assistants and external data sources</b><span style="font-weight: 400;">. Configure one MCP server, and any MCP-compatible client (for example Claude Desktop, Cursor, or Claude Code) can interact with your Salesforce org.</span></p>
<p><b>The following table shows how</b><span style="font-weight: 400;"> Hosted MCP differs from DX MCP.</span></p>
<table>
<thead>
<tr>
<th><b>Dimension</b></th>
<th><b>DX MCP Server</b></th>
<th><b>Hosted MCP Server</b></th>
</tr>
</thead>
<tbody>
<tr>
<td><span style="font-weight: 400;">Runs on</span></td>
<td><span style="font-weight: 400;">Your local machine</span></td>
<td><span style="font-weight: 400;">Salesforce infrastructure</span></td>
</tr>
<tr>
<td><span style="font-weight: 400;">Authentication</span></td>
<td><span style="font-weight: 400;">CLI credentials</span></td>
<td><span style="font-weight: 400;">OAuth 2.0 (per user)</span></td>
</tr>
<tr>
<td><span style="font-weight: 400;">Primary tools</span></td>
<td><span style="font-weight: 400;">60+ dev tools (metadata, Apex testing, LWC)</span></td>
<td><span style="font-weight: 400;">sObject API access, invocable actions, flows</span></td>
</tr>
<tr>
<td><span style="font-weight: 400;">Use case</span></td>
<td><span style="font-weight: 400;">Development and deployment workflows</span></td>
<td><span style="font-weight: 400;">Data and logic access for external AI tools</span></td>
</tr>
<tr>
<td><span style="font-weight: 400;">Requires local CLI</span></td>
<td><span style="font-weight: 400;">Yes</span></td>
<td><span style="font-weight: 400;">No</span></td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400;">Hosted MCP respects your org&#8217;s security model: object and field-level security, sharing rules, and profiles all apply.</span></p>
<p><a href="https://help.salesforce.com/s/articleView?id=platform.hosted_mcp_servers_setup.htm&amp;type=5"><span style="font-weight: 400;">Once connected</span></a><span style="font-weight: 400;">, you can query your Salesforce data through natural language in Claude Desktop, build Agentforce agents that interact with your data via MCP, and prototype AI-driven integrations before committing to a production implementation.</span></p>
<h2><span style="font-weight: 400;">How these three features work together</span></h2>
<p><b>Agentforce Vibes IDE</b><span style="font-weight: 400;"> provides the development environment, </span><b>Agentforce Vibes with Claude Sonnet 4.5</b><span style="font-weight: 400;"> provides the AI coding partner, and </span><b>Hosted MCP Servers</b><span style="font-weight: 400;"> connect external AI tools to your org&#8217;s data. Each is useful independently, but together they create a complete AI-assisted development loop.</span></p>
<p><span style="font-weight: 400;">A practical workflow:</span></p>
<ol>
<li style="font-weight: 400;"><span style="font-weight: 400;">Launch Agentforce Vibes IDE from Setup.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Use Agentforce Vibes to scaffold an Apex class and an LWC.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Configure a Hosted MCP Server to let Claude Desktop query the data your component displays.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Iterate on the component with Vibes while validating the data layer through MCP.</span></li>
</ol>
<p><span style="font-weight: 400;">That&#8217;s a full AI-assisted development loop running in a free Salesforce org.</span></p>
<h2><span style="font-weight: 400;">Sign up and start building</span></h2>
<p><span style="font-weight: 400;">If you don&#8217;t have a Developer Edition org yet, </span><a href="https://developer.salesforce.com/signup"><span style="font-weight: 400;">sign up here</span></a><span style="font-weight: 400;">. It&#8217;s free, doesn&#8217;t expire as long as you log in regularly, and now includes everything covered in this post.</span></p>
<p><span style="font-weight: 400;">If you already have a Developer Edition with Agentforce and Data 360, these features are gradually rolling out starting this week to existing environments. Navigate to Setup and search for “Agentforce Vibes” to get started. No additional enablement steps required.</span></p>
<h2><span style="font-weight: 400;">Developer Edition resources and documentation</span></h2>
<ul>
<li style="font-weight: 400;"><a href="https://developer.salesforce.com/signup"><span style="font-weight: 400;">Sign up for a free Developer Edition</span></a></li>
<li style="font-weight: 400;"><a href="https://developer.salesforce.com/developer-centers/agentforce"><span style="font-weight: 400;">Agentforce Developer Center</span></a><span style="font-weight: 400;"> &#8211; documentation, guides, and tutorials</span></li>
<li style="font-weight: 400;"><a href="https://developer.salesforce.com/workshops/agentforce-vibes-workshop/explore-agentforce-vibes/overview"><span style="font-weight: 400;">Agentforce Vibes Workshop</span></a><span style="font-weight: 400;"> &#8211; hands-on guided workshop</span></li>
<li style="font-weight: 400;"><a href="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_mcp_server_eca.htm"><span style="font-weight: 400;">Salesforce Hosted MCP Server setup guide</span></a></li>
<li style="font-weight: 400;"><a href="https://github.com/salesforcecli/mcp"><span style="font-weight: 400;">Salesforce DX MCP Server on GitHub</span></a><span style="font-weight: 400;"> &#8211; local MCP server with 60+ tools</span></li>
<li style="font-weight: 400;"><a href="https://github.com/forcedotcom/code-builder-feedback/blob/main/release-notes.md"><span style="font-weight: 400;">Agentforce Vibes IDE release notes</span></a></li>
</ul>
<h2><span style="font-weight: 400;">About the Author</span></h2>
<p><b>René Winkelmeyer</b><span style="font-weight: 400;"> leads the Developer Advocacy team at Salesforce. His team focuses on Agentforce, Data 360, and the Salesforce Platform. In his spare time, you might find him still coding on </span><a href="https://github.com/muenzpraeger"><span style="font-weight: 400;">GitHub</span></a><span style="font-weight: 400;">. Follow René on </span><a href="https://www.linkedin.com/in/muenzpraeger/"><span style="font-weight: 400;">LinkedIn</span></a><span style="font-weight: 400;">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/new-developer-edition-agentforce-vibes-claude-mcp">New in Salesforce Developer Edition: Agentforce Vibes IDE, Claude 4.5, MCP</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/new-developer-edition-agentforce-vibes-claude-mcp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205995</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260414025546/SingleHeadshot-1-1-e1776156960413.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260414025546/SingleHeadshot-1-1-e1776156960413.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Build with React, Run on Salesforce: Introducing Salesforce Multi-Framework</title>
		<link>https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework#respond</comments>
		<pubDate>Wed, 15 Apr 2026 13:45:11 +0000</pubDate>
		<dc:creator><![CDATA[Charles Watkins]]></dc:creator>
				<category><![CDATA[Agentforce Vibes]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[New Developments]]></category>
		<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[app development]]></category>
		<category><![CDATA[developer experience]]></category>
		<category><![CDATA[Frontend Frameworks]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Open Beta]]></category>
		<category><![CDATA[react]]></category>
		<category><![CDATA[Salesforce CLI]]></category>
		<category><![CDATA[Salesforce Multi-Framework]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[UI API]]></category>
		<category><![CDATA[Vite]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205990</guid>
		<description><![CDATA[<p>Salesforce Multi-Framework is in open beta. Build native React apps on the Agentforce 360 Platform with GraphQL, Apex, and built-in platform security.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework">Build with React, Run on Salesforce: Introducing Salesforce Multi-Framework</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">You can now build native Salesforce apps in React. Salesforce Multi-Framework is a framework-agnostic runtime on the Agentforce 360 Platform that lets developers build native Salesforce apps using React and other frontend frameworks — with authentication, security, and governance built in. It&#8217;s now in open beta for scratch orgs and sandboxes that use English as the default language. React is supported today; additional frameworks are coming. </span></p>
<p><span style="font-weight: 400">Bring your hooks, your component libraries, your existing toolchain, and build on Salesforce without having to choose between your framework and your platform.</span></p>
<h2><span style="font-weight: 400">Why React on Salesforce? </span></h2>
<p><span style="font-weight: 400">Until now, building on Salesforce meant adopting </span><a href="https://developer.salesforce.com/developer-centers/lightning-web-components"><span style="font-weight: 400">Lightning Web Components</span></a><span style="font-weight: 400"> (LWC) or </span><a href="https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/intro_components.htm"><span style="font-weight: 400">Aura</span></a><span style="font-weight: 400">. You got base components, declarative tools, Lightning Data Service, and UI API access, but you gave up the broader ecosystem. Open-source libraries had to be managed as static resources, and there was no way to use your own framework without losing platform features. Salesforce Multi-Framework eliminates that trade-off.</span></p>
<p><span style="font-weight: 400">Starting today, you can bring your existing React apps, dashboards, and micro-frontends and run them natively on the Agentforce 360 Platform. Multi-Framework apps can retrieve and mutate records with </span><a href="https://developer.salesforce.com/docs/platform/graphql/overview"><span style="font-weight: 400">GraphQL</span></a><span style="font-weight: 400">, invoke Apex methods, and use UI APIs to get user information and context, all with the same security and governance model you already know.</span></p>
<h2><span style="font-weight: 400">Build your first React app on Salesforce</span></h2>
<p><span style="font-weight: 400">Before you start, you&#8217;ll need the Salesforce CLI, Node.js v18 or later, and a scratch org or sandbox. Multi-Framework is not available in production orgs during beta.</span></p>
<h3><span style="font-weight: 400">Generate your first app</span></h3>
<p><span style="font-weight: 400">The easiest way to get started is with the new React project template in the Agentforce Vibes welcome screen. Click the </span><b>React App </b><span style="font-weight: 400">tile and select </span><b>Internal App</b><span style="font-weight: 400"> to generate a new employee-facing React app.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206056" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260414134040/image2-e1776195658373.png?w=1000" class="postimages" width="1000" height="647" alt="Agentforce Vibes welcome screen showing the React App tile" />
			  </span>
			</p>
<p><span style="font-weight: 400">Alternatively, you can generate an app using the SFDX CLI:</span></p>
<pre language="shell">sf plugins install @salesforce/plugin-ui-bundle-dev

# Generate the project

sf template generate project --name my-react-project

# Switch to the project directory

cd my-react-project

# Generate the web app using the reactbasic template

sf template generate ui-bundle -n myreactapp -d "./force-app/main/default/uiBundles" -t reactbasic
</pre>
<p>The <code>sf template generate ui-bundle </code>command generates a starter React app in <code>force-app/main/default/uiBundles</code>. The React template comes preconfigured with:</p>
<ul>
<li style="font-weight: 400"><b>Salesforce Multi-Framework SDK</b><span style="font-weight: 400"> for accessing Salesforce APIs and services</span></li>
<li style="font-weight: 400"><b>Vite </b><span style="font-weight: 400">for bundling</span></li>
<li style="font-weight: 400"><b>Vitest</b><span style="font-weight: 400"> for testing</span></li>
<li style="font-weight: 400"><b>shadcn/ui</b><span style="font-weight: 400"> for components</span></li>
<li style="font-weight: 400"><b>Tailwind CSS</b><span style="font-weight: 400"> for styling</span></li>
</ul>
<h3><span style="font-weight: 400">Running the app locally</span></h3>
<p><span style="font-weight: 400">The underlying project is just a React app, so you can run and preview it locally like any other:</span></p>
<pre language="shell"># Switch to the web app folder

cd force-app/main/default/uiBundles/myreactapp

# Install the react app dependencies

npm install

# Run the project in local dev

npm run dev
</pre>
<p>Open your browser and navigate to the local app (default: <code>localhost:5173</code>) to see the app.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206057" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260414134125/image1-e1776195703953.png?w=1000" class="postimages" width="1000" height="628" alt="Starter React app running locally at localhost:5173]" />
			  </span>
			</p>
<h3><span style="font-weight: 400">Deploying to Salesforce</span></h3>
<p><span style="font-weight: 400">When you&#8217;re ready to deploy the app to your org, build the React app and push it:</span></p>
<pre language="shell"># Build the project with Vite

# This creates a /dist folder or overwrites its contents

npm run build

# Deploy the metadata file and the build to Salesforce

sf project deploy --target-org my-org
</pre>
<p><span style="font-weight: 400">Search for &#8220;myreactapp&#8221; in the App Launcher to see the app live. You can update the app label from the app meta xml file. You now have a React-based app hosted on Salesforce with built-in authentication, security, and governance.</span></p>
<h2><span style="font-weight: 400">Access Salesforce data from React</span></h2>
<p>Once your app is deployed, you&#8217;ll want to pull live data from your org. The <code>@salesforce/sdk-data</code> package provides hooks for querying records via GraphQL and invoking Apex methods. Here&#8217;s a React component that fetches a Contact record:</p>
<pre language="jsx">import { useEffect, useState } from 'react';
import { createDataSDK, gql } from '@salesforce/sdk-data';

const QUERY = gql`
  query GetContact {
    uiapi {
      query {
        Contact(first: 1) {
          edges {
            node {
              Name { value }
              Title { value }
              Picture__c { value }
            }
          }
        }
      }
    }
  }
`;

export default function SingleRecord() {
  const [contact, setContact] = useState(null);

  useEffect(() =&gt; {
    const fetchData = async () =&gt; {
      const sdk = await createDataSDK();
      const response = await sdk.graphql(QUERY);
      
      // Navigate the UI API tree to get the first record
      const record = response.data?.uiapi?.query?.Contact?.edges[0]?.node;
      
      if (record) {
        setContact({
          name: record.Name.value,
          title: record.Title.value,
          picture: record.Picture__c.value
        });
      }
    };
    fetchData();
  }, []);

  if (!contact) return &lt;p&gt;Loading...&lt;/p&gt;;

  return (
    &lt;div style={{ border: '1px solid #ccc', padding: '1rem' }}&gt;
      {contact.picture &amp;&amp; (
        &lt;img src={contact.picture} alt={contact.name} width="50" /&gt;
      )}
      &lt;h1&gt;{contact.name}&lt;/h1&gt;
      &lt;p&gt;{contact.title}&lt;/p&gt;
    &lt;/div&gt;
  );
}
</pre>
<p>The <code>createDataSDK()</code> utility handles authentication automatically so no token management is required in the application code. You can also call Apex methods directly using the SDK’s <code>fetch()</code> method for server-side logic that goes beyond CRUD operations. See the <a href="https://developer.salesforce.com/docs/platform/einstein-for-devs/guide/reactdev-overview.html"><u>Multi-Framework Beta Documentation</u></a> for the full API reference.</p>
<h2><span style="font-weight: 400">Build React Apps with Agentforce Vibes</span></h2>
<p><a href="https://www.salesforce.com/agentforce/developers/vibe-coding/"><b>Agentforce Vibes 2.0</b></a><span style="font-weight: 400"> generates Multi-Framework React apps from natural language prompts. Describe the component you need to Agentforce Vibes — a dashboard showing open Opportunities by stage, for example — and Vibes produces the React code, GraphQL queries, and Salesforce metadata.</span></p>
<p><span style="font-weight: 400">Vibes has a variety of tools to make it easy to build React apps:</span></p>
<ul>
<li style="font-weight: 400"><b>React and Apex templates</b><span style="font-weight: 400"> to scaffold apps without starting from scratch</span></li>
<li style="font-weight: 400"><b>Salesforce MCP server</b><span style="font-weight: 400"> for retrieving and deploying metadata directly from the IDE</span></li>
<li style="font-weight: 400"><b>Live Preview</b><span style="font-weight: 400"> to see your React app update in real time as you build</span></li>
<li style="font-weight: 400"><b>Einstein Trust Layer</b><span style="font-weight: 400"> to ensure prompts and responses are never used to train future models</span></li>
</ul>
<h2><span style="font-weight: 400">React and Lightning Web Components on Salesforce</span></h2>
<p><span style="font-weight: 400">Salesforce Multi-Framework doesn&#8217;t replace LWC; it runs alongside it. Your existing Lightning Web Components continue to work. On Lightning, React components can be embedded as micro-frontends, with the platform providing the shared data and permissions layer between them. Micro-frontend support is in developer preview. </span></p>
<p><span style="font-weight: 400">Choosing React does not mean leaving the platform capabilities that make Salesforce useful. We’re bringing those enterprise features to React through</span><b> framework-agnostic libraries</b><span style="font-weight: 400">: </span><span style="font-weight: 400"> </span></p>
<ul>
<li><b>Efficient Data Management:</b> React developers can use <code>@salesforce/sdk-data</code>, which provides API client methods for GraphQL and Apex that manage record querying and mutation efficiently, ensuring your app stays within API limits.</li>
<li><b>Built-in Governance</b>: The <code>createDataSDK()</code> utility handles authentication automatically, removing the need for manual token management.</li>
<li><b>Security and Accessibility</b>: While LWC has accessibility baked in, Multi-Framework apps can use Agentforce Vibes 2.0 templates, tools, and skills to embed enterprise-grade accessibility and security into every component.</li>
</ul>
<p>Where they differ is in the developer experience and tooling:<br />
<span style="font-weight: 400"></span></p>
<table>
<thead>
<tr>
<th><b>Capability</b></th>
<th><b>React (Multi-Framework)</b></th>
<th><b>Lightning Web Components</b></th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Data access</b></td>
<td><span style="font-weight: 400">GraphQL queries, Apex invocations, UI API</span></td>
<td><span style="font-weight: 400">@wire</span><span style="font-weight: 400"> decorators, Lightning Data Service with built-in caching</span></td>
</tr>
<tr>
<td><b>Component library</b></td>
<td><span style="font-weight: 400">Bring your own (Shadcn, MUI, Ant Design, etc.) or use Agentforce Vibes-generated components</span></td>
<td><span style="font-weight: 400">Salesforce Base Components (80+ out of the box)</span></td>
</tr>
<tr>
<td><b>Styling</b></td>
<td><span style="font-weight: 400">Tailwind CSS, CSS Modules, or any CSS-in-JS library</span></td>
<td><span style="font-weight: 400">Salesforce Lightning Design System (SLDS) tokens and classes</span></td>
</tr>
<tr>
<td><b>Security and standards</b></td>
<td><span style="font-weight: 400">Delivered via SDK and Agentforce Vibes governed “vibe coding”</span></td>
<td><span style="font-weight: 400">Built directly into the LWC compiler and base components</span></td>
</tr>
<tr>
<td><b>App Builder support</b></td>
<td><span style="font-weight: 400">Not yet available (planned for GA)</span></td>
<td><span style="font-weight: 400">Full drag-and-drop support with property panels</span></td>
</tr>
<tr>
<td><b>Cross-platform reuse</b></td>
<td><span style="font-weight: 400">Share components across Salesforce and non-Salesforce apps</span></td>
<td><span style="font-weight: 400">Salesforce-only; can run on LWR sites and Experience Cloud</span></td>
</tr>
<tr>
<td><b>Ecosystem tooling</b></td>
<td><span style="font-weight: 400">npm, Vite, Vitest, React DevTools, full open-source ecosystem</span></td>
<td><span style="font-weight: 400">Salesforce CLI, LWC Local Dev, limited third-party tooling</span></td>
</tr>
</tbody>
</table>
<h3><span style="font-weight: 400">Which should you choose?</span></h3>
<p><b>Choose React</b><span style="font-weight: 400"> when you need to share components across Salesforce and non-Salesforce surfaces, or use the broader React ecosystem. </span></p>
<p><b>Choose LWC</b> when you want declarative data access with <code>@wire</code> and Lightning Data Service, the base component library, and the drag-and-drop Lightning App Builder.</p>
<h2><span style="font-weight: 400">Beta limitations</span></h2>
<p><span style="font-weight: 400">This has been one of the most requested capabilities by the developer community, and we&#8217;re excited to finally get it into your hands. Multi-Framework is in open beta now in scratch orgs and sandboxes, and your feedback will shape where it goes from here.</span></p>
<p><span style="font-weight: 400">A few constraints to know before you start: beta apps cannot be deployed to production orgs, Lightning App Builder drag-and-drop placement is not yet supported for React components, and some platform APIs are not available in the beta runtime. Check the </span><a href="https://developer.salesforce.com/docs/platform/einstein-for-devs/guide/reactdev-overview.html"><span style="font-weight: 400">Beta Documentation</span></a><span style="font-weight: 400"> for the full list of known limitations.</span></p>
<p><span style="font-weight: 400">Looking ahead, micro-frontend support for embedding React components directly into Lightning pages is in closed pilot for Spring 2027. In the meantime, we encourage you to try it out, file issues, and tell us what&#8217;s missing and what you want to see in the future.</span></p>
<h2><span style="font-weight: 400">Resources</span></h2>
<ul>
<li>Demo: <a href="https://salesforce.vidyard.com/watch/q96Q44LQEEHFz4YsjDaJbr">Introducing: Salesforce Multi-Framework</a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/einstein-for-devs/guide/reactdev-overview.html"><span style="font-weight: 400">Multi-Framework Beta Documentation</span></a><span style="font-weight: 400"> — Setup guide, API reference, and known limitations</span></li>
<li style="font-weight: 400"><a href="https://github.com/trailheadapps/multiframework-recipes"><span style="font-weight: 400">Salesforce Multi-Framework Recipes</span></a><span style="font-weight: 400"> – A collection of 20+ easy-to-digest code samples for React on the Agentforce 360 Platform</span></li>
<li style="font-weight: 400"><a href="https://www.salesforce.com/plus/experience/tdx"><span style="font-weight: 400">TDX Session Recording: Building React Apps on the Agentforce 360 Platform</span></a><span style="font-weight: 400"> — Live demo walkthrough. </span><i><span style="font-weight: 400">Session recording will be available after April 15 — check back here or bookmark the link.</span></i></li>
</ul>
<h2><span style="font-weight: 400">About the Authors</span></h2>
<p><b>Amanda Lane </b><span style="font-weight: 400">leads product marketing for privacy, developer tools, and Agentforce at Salesforce. Before Salesforce, she worked in finance at PwC and the KIPP Foundation. She holds an MBA in consumer analytics from Georgetown and brings a dual background in psychology and economics to product strategy.</span></p>
<p><b>Alice Oh</b><span style="font-weight: 400"> is a Director of Product at Salesforce building foundational products that enable flexible and extensible ways to create, vibe code, and surface apps across the Salesforce ecosystem. In her free time, she bikes around the Bay Area in search of the flakiest croissants. Follow and connect with her on </span><a href="https://www.linkedin.com/in/helloaliceoh/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p><b>Charles Watkins</b><span style="font-weight: 400"> is a self-taught software developer and Lead Developer Advocate at Salesforce. He spends his time blogging, crafting code samples, and finding new places to hike in the Pacific Northwest. You can follow him on </span><a href="https://www.linkedin.com/in/wcharlesw/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework">Build with React, Run on Salesforce: Introducing Salesforce Multi-Framework</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205990</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260409131840/BlogImage_720x404-B.png?w=720" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260409131840/BlogImage_720x404-B.png?w=720" medium="image" />
	</item>
		<item>
		<title>React vs. Salesforce：私が「バイブ・コーディング」したアプリをプラットフォーム上に再構築した方法</title>
		<link>https://developer.salesforce.com/blogs/2026/04/react-vs-salesforce-how-i-rebuilt-my-vibe-coded-app-on-the-platform-jp</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/react-vs-salesforce-how-i-rebuilt-my-vibe-coded-app-on-the-platform-jp#respond</comments>
		<pubDate>Mon, 13 Apr 2026 09:11:09 +0000</pubDate>
		<dc:creator><![CDATA[Hiroyuki Inaba]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Lightning Web Components]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lwc]]></category>
		<category><![CDATA[react]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206023</guid>
		<description><![CDATA[<p>Lightning Web Components (LWC) &#12392; Flow &#12434;&#20351;&#29992;&#12375;&#12390; React &#12450;&#12503;&#12522;&#12434;&#20877;&#27083;&#31689;&#12377;&#12427;&#12371;&#12392;&#12391;&#12289;&#12525;&#12540;&#12459;&#12523;&#12398; Web &#38283;&#30330;&#12392; Salesforce &#12503;&#12521;&#12483;&#12488;&#12501;&#12457;&#12540;&#12512;&#12398;&#38291;&#12395;&#12393;&#12398;&#12424;&#12358;&#12394;&#12450;&#12540;&#12461;&#12486;&#12463;&#12481;&#12515;&#12398;&#36949;&#12356;&#12364;&#12354;&#12427;&#12398;&#12363;&#12434;&#26126;&#12425;&#12363;&#12395;&#12375;&#12414;&#12377;&#12290;</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/react-vs-salesforce-how-i-rebuilt-my-vibe-coded-app-on-the-platform-jp">React vs. Salesforce：私が「バイブ・コーディング」したアプリをプラットフォーム上に再構築した方法</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<blockquote><p>※本記事は2026年3月12日に米国で公開された <a href="//developer.salesforce.com/blogs/2026/03/react-vs-salesforce-how-i-rebuilt-my-vibe-coded-app-on-the-platform">React vs. Salesforce: How I Rebuilt My “Vibe-Coded” App on the Platform</a>の抄訳です。本記事の正式言語は英語であり、その内容および解釈については英語が優先されます。</p></blockquote>
<p><span style="font-weight: 400">私は2026年の初めにデベロッパーアドボケイトとしてSalesforceに入社しました。それまでのキャリアで、さまざまなツールの良さを発信してきましたが、研修時に告白しなければならないことがありました。</span>実は、Salesforceがどのようなものなのか、よくわかっていなかったのです。<i></i><span style="font-weight: 400"></span></p>
<p><span style="font-weight: 400">「SalesforceがCRMであること」と、多種多様な「クラウド製品」であること以外は知らないことだらけで、まるで未知の言語を一から学んでいるような気分でした。そこで、無駄に手を広げすぎないように、基本に立ち返ってシンプルな問いに向き合うことにしました。それは、「</span><b>開発者にとってのコアプラットフォームは何か</b><span style="font-weight: 400">」ということです。</span></p>
<p><span style="font-weight: 400">答えを見つけるために、何か作ってみることにしました。ただ「Hello World」と表示させるだけではなく、状態管理、UIロジック、データ永続化が必要なインタラクティブなものを。そこで作成したのが、</span><b>オフィスでよくつまむ軽食をドラッグ＆ドロップでランク付けするリスト</b><span style="font-weight: 400">です。</span></p>
<p><span style="font-weight: 400">ただし、同じものを2つの方法で作ります。まず私が得意とする</span><strong>React</strong><span style="font-weight: 400">で構築し、次にSalesforceで、</span><b>Lightning Webコンポーネント（LWC）</b><span style="font-weight: 400">を使って一から作り直しました。</span></p>
<p><span style="font-weight: 400">Reactバージョンは、AIを使ってバイブコーディングで一気に作成しましたが、Salesforceバージョンは別のやり方で進めました。公式ドキュメントとTrailheadを参照して、AIにペアプログラミングの相棒になってもらいました。目標は、単に動くコードを書くことではなく、アーキテクチャーをしっかり理解することでした。</span><span style="font-weight: 400"><br />
</span><span style="font-weight: 400"><br />
</span><span style="font-weight: 400">（</span><i><span style="font-weight: 400">注 – 経験豊富なSalesforce開発者の方にとっては、多分この記事に感心することや驚きは何もないと思います。ここに書いたようなエラーにも、何度も遭遇してきたことでしょう。しかし、私のようにSalesforceエコシステムにまだ馴染みがない方たちのために、Salesforceを使い始めるときに感じたことをまとめておこうと思いました</span></i><span style="font-weight: 400">）</span><span style="font-weight: 400"><br />
</span><span style="font-weight: 400"><br />
</span><span style="font-weight: 400">では、マーケティング資料を読むのをやめて、実際にコードを書いてみてわかったことを紹介します。</span></p>
<h2><b>フェーズ1：比較基準（React + Vite）</b></h2>
<p><span style="font-weight: 400">公平な実験のために、比較する基準が必要でした。そこで、20分ほどですばやくReactバージョンを作成しました。Reactのstateは理解していたので、ここで特に何かを学ぶことが目的ではありません。Salesforceエコシステムで作るときの手間や違いを正確に測るための、「対照群」を用意する必要があったのです。</span></p>
<p><span style="font-weight: 400">実を言うと、Reactバージョンは「バイブコーディング」で作りました。LLMにランクリストのスクリーンショットを渡して、「React（Vite）とTailwind CSSを使って、この画像にあるようなオフィスの軽食をドラッグ＆ドロップでS、A、B、C、Dにランク分けして、localStorageでデータを永続化できるアプリを作成してください」と指示したのです。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span></p>
<p><strong><i>
			  <span class="postimagessection_specify alignnone size-large wp-image-205775" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260310112501/A-web-application-displaying-a-drag-and-drop-tier-list-with-office-snacks-categorized-into-S-A-B-C-and-D-tiers-e1773163551227.png?w=1000" class="postimages" width="1000" height="867" alt="オフィス用の軽食をS、A、B、C、Dのランクに分類して表示する、ドラッグアンドドロップ対応のWebアプリケーション。" />
			  </span>
			</i></strong></p>
<p><span style="font-weight: 400">できあがったアプリは、少し手を加えただけで完璧に動作しました。ベーグルをSランクに、キャンディコーン（激甘の砂糖菓子）をDランクにドラッグできました（これはDしかないでしょう。オフィスで食べようとは思えないですからね</span><b></b><span style="font-weight: 400">） </span></p>
<p><span style="font-weight: 400">しかし、生成されたコードを見て、2つのことに気付きました。</span></p>
<ol>
<li style="font-weight: 400"><b>外部への依存</b><span style="font-weight: 400"> – LLMは、ドラッグ＆ドロップを実装するために、すぐにサードパーティライブラリー（</span><span style="font-weight: 400">dnd-kit</span><span style="font-weight: 400">）に頼りました。Salesforce Platformで開発する場合、どうやって実装するのだろうという疑問が浮かびました。</span></li>
<li style="font-weight: 400"><b style="color: #4a4a4a;font-family: 'Salesforce Sans', Arial, sans-serif">手作業でのデータ永続化</b><span style="font-weight: 400"> – このアプリでランクを保存するには、ブラウザーの<code>localStorage</code>を読み書きするためだけに、40行の関数を書かなければなりませんでした。</span><span style="font-weight: 400">Salesforceエコシステムなら、もっと効率的に処理する方法があるだろうと思いました。そして、その考えは当たっていました。</span></li>
</ol>
<p><span style="font-weight: 400">このアプリをちゃんと「使えるもの」にする、つまり同僚と共有し、デバイス間で保存内容を維持できるようにするには、バックエンド（Node、Supabase、またはFirebase）を用意して、APIエンドポイントを書かなければなりません。</span></p>
<p><span style="font-weight: 400">さて、ではSalesforceに移行します。</span></p>
<h2><b>フェーズ2：比較対象 – Salesforce LWC</b></h2>
<p><span style="font-weight: 400">目標はシンプルです。まったく同じアプリをSalesforce Platformのツールだけで再作成します。外部データベースも、Nodeサーバーも使いません。使うのは自分の腕とSalesforce組織だけです。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-large wp-image-205778" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260310112921/An-animated-screen-recording-showing-a-user-dragging-a-snack-item-from-an-unranked-list-and-dropping-it-into-a-designated-tier-row-within-a-Salesforce-interface-1.gif?w=800" class="postimages" width="800" height="855" alt="Salesforceのインターフェース画面で、ランクが未設定の軽食をドラッグし、所定のランクにドロップする操作を録画した動画。" />
			  </span>
			</p>
<h4><b>ライブラリーか、Web標準の機能か</b></h4>
<p><span style="font-weight: 400">独自仕様だらけの悪夢のような、それともわけのわからない古めかしい言語に苦しめられるのかと、戦々恐々としましたが、ふたを開けてみると、使うのは</span><b>JavaScript</b><span style="font-weight: 400">でした。</span></p>
<p><span style="font-weight: 400">Salesforceでは、</span><b>Lightning Webコンポーネント（LWC）</b><span style="font-weight: 400">を使用します。コードは驚くほどReactに似ていると感じましたが、肝心なところがもっとシンプルでした。ドラッグ＆ドロップのロジックに、巨大なnpmパッケージが不要だったのです。私は標準のHTMLイベント（</span><span style="font-weight: 400"><code>ondragstart</code>、<code>ondrop</code></span><span style="font-weight: 400">）を使いました。LWCは重い仮想DOMレイヤーを介さずに、そのままブラウザー上で動作するため、標準のWeb APIを使えたのです。</span></p>
<h2><b>フェーズ3：Reactではバックエンドが必要になるが、Salesforceはバックエンドも担う</b><b><i></i></b><b></b></h2>
<p><span style="font-weight: 400">ここで、目からうろこが落ちました。Reactバージョンのアプリでは、データを「保存」するには、JSON形式をシリアライズしてブラウザーの<code>localStorage</code></span><span style="font-weight: 400">に入れる処理のために、40行のコードを書かなければなりませんでした。さらに、データを永続化したい場合は、SQLを覚え、Postgresデータベースを用意し、Node APIを作成して、CORSにも対応しなければなりません。</span></p>
<p><span style="font-weight: 400">Salesforceでは、このような手間はかかりません。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span><b>カスタムオブジェクトを作成するだけですみます。</b><span style="font-weight: 400"></span></p>
<p><span style="font-weight: 400">私は</span><b>オブジェクトマネージャー</b><span style="font-weight: 400">で<code>Tier_List_Item</code></span><span style="font-weight: 400">を作成しました。すると、すぐにセキュアでスケーラブルなリレーショナルデータベースと、自動生成されたAPIが利用可能になりました。さらに、このプロジェクトでは深く掘り下げませんでしたが、本格的なエンタープライズ向けセキュリティモデルも用意されていることに気付きました。Sランクの軽食はマネージャーのみに編集を許可するなど、細かい権限管理が必要な場合も、1週間かけて認証ミドルウェアを実装することなく、標準のUIだけで設定できます。</span></p>
<p><span style="font-weight: 400">データをコンポーネントに取り込むために、</span><b><code>@wire</code></b><b>サービス</b><span style="font-weight: 400">を使いました。これは、データベースに直接接続し、データをリアクティブに取得する仕組みです。</span></p>
<p><b>Reactでの手作業の状態管理</b><span style="font-weight: 400"></span></p>
<pre language="javascript"> // Reactでは、ストレージから初期状態を読み込む処理を記述しなければならない 
const [boardState, setBoardState] = useState(loadInitialState); 

// アイテムを移動した結果を保存する処理も毎回記述しなければならない
const handleDragOver = (event) =&gt; { 
// ... 計算ロジック ... 
localStorage.setItem(STORAGE_KEY, JSON.stringify(next)); 
}; 
</pre>
<p><b>Salesforceでの宣言型のデータバインド</b><span style="font-weight: 400"></span></p>
<pre language="javascript"> // プラットフォームがデータを取得する
@wire(getAllItems) wiredItems; 
	
// レコードの更新をサーバーに指示するだけでよい 
handleDrop(event) { 
updateItemTier({ itemId: id, tier: newTier }); 
} 
</pre>
<h4><b>わかったこと</b></h4>
<ul>
<li style="font-weight: 400"><b>React – </b><span style="font-weight: 400">ライブラリーとローカルストレージの管理に時間をかけた。</span><i><span style="font-weight: 400"></span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span></i></li>
<li style="font-weight: 400"><b>Salesforce – </b><span style="font-weight: 400">プラットフォームがデータベースを用意し、ブラウザーがインタラクティブな動作を提供してくれるため、ロジックの記述に時間をかけた。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span></li>
</ul>
<p><span style="font-weight: 400">変更の反映には時間がかかりましたが（ホットリロードは使えません）、データの永続化に必要な定型コードの量は大きく減りました。始める前に</span><a href="https://marketplace.visualstudio.com/items?itemName=salesforce.salesforcedx-vscode-ui-preview"><span style="font-weight: 400">Salesforce Live Preview</span></a><span style="font-weight: 400">（英語）を知っていれば、プロセスをもっと速く進められたはずです。</span></p>
<h2><b>フェーズ4：デプロイ時の確認「卵が先か、ニワトリが先か」</b></h2>
<p><span style="font-weight: 400">第2フェーズのフロントエンドを第3フェーズのバックエンドに接続する段階で、厄介なことになりました。データベースとやり取りするためにLWCとApexコントローラーを作成し、デプロイすると、ターミナルに次のように表示されたのです。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-large wp-image-205774" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260310112459/A-terminal-window-showing-a-Salesforce-deployment-failure-with-the-error-message-22No-apex-action-available-for-TierListController.getAllItems22-highlighted.png?w=751" class="postimages" width="751" height="537" alt="Salesforceのデプロイ失敗を示すターミナルウィンドウ。TierListController.getAllItemsに利用可能なApexアクションがない、というエラーメッセージが強調表示されている。" />
			  </span>
			</p>
<p><span style="font-weight: 400">まず頭に浮かんだのは、作業のどこかでタイプミスか、何かつまらないミスをしてしまったのだろう、ということでした。スペル、ファイル名、ファイルパスなど、ありそうな間違いを一とおり調べましたが、コードに問題はありませんでした。</span></p>
<p><span style="font-weight: 400">Reactだったら、いつものように単純にエラーをLLMに貼り付け、出てきた修正をコピーし、そのまま先へ進んでいたでしょう。しかし今回は、AIとドキュメントを使って自分の理解度を確かめることが目的だったので、立ち止まって原因を考えました。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400">そこで、重要な違いに気付いたのです。それは、</span><b>プラットフォームのコンパイルモデル</b><span style="font-weight: 400">。</span></p>
<p><span style="font-weight: 400">Salesforceの正式な用語ではありませんが、これはプラットフォームがコードをどのように検証するかを理解する思考モデルとして役立ちます。Reactでは、ブラウザーだけがコードを検証します。まだ存在しないAPIを呼び出すフロントエンド関数を書いても、実行するまでは、ブラウザーは問題にしません。</span></p>
<p><span style="font-weight: 400">Salesforceでは、</span><b>サーバーがコードの正否を判断します</b><span style="font-weight: 400">。デプロイ時にプラットフォームがコードをコンパイルし、その有効性を確認します。その結果、私のLWCがサーバー側にまだ存在していないバックエンドメソッド（<code>getAllItems</code></span><span style="font-weight: 400">）とやり取りしようとしていることを検出したというわけです。</span></p>
<p><span style="font-weight: 400">先にApexクラス（バックエンド）をデプロイし、その後でLWC（フロントエンド）をデプロイする必要がありました。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400">ミスは、構文エラーではありませんでした。ブラウザーに対してではなく、緊密に統合されたプラットフォームに対してコードを書いているということを思い出させてくれたのです。</span></p>
<h2><b>フェーズ5：ローコード開発の威力（いわゆる「開発」）</b></h2>
<p><span style="font-weight: 400">アーキテクチャーを理解したら、データベースのほかにも、さまざまな機能を利用できることがわかりました。「軽食」が実際のデータレコードになったので、Salesforceの自動化エンジンの力をフルに使えるようになりました。</span></p>
<p><span style="font-weight: 400">ここで、「</span><b>軽食がDランクに落ちたら、Slackでチームに通知する</b><span style="font-weight: 400">」という複雑なビジネスロジックを加えることにしました。</span></p>
<p><span style="font-weight: 400">Reactバージョンのアプリでは、楽しい部分はここまでで、ここからはインフラ周りの作業が始まります。webhookかcronジョブ、場合によってはZapierのサブスクリプションも必要になります。一方、Salesforceでは、1行もコードを書きませんでした。</span><a href="https://help.salesforce.com/s/articleView?id=platform.flow.htm&amp;type=5"><b>Flow</b></a><span style="font-weight: 400">を使っただけです。</span></p>
<p><span style="font-weight: 400"><code>Tier</code></span><span style="font-weight: 400">項目が「</span><span style="font-weight: 400">D</span><span style="font-weight: 400">」に変わったことを検知する「レコードトリガーフロー」を作成しました。軽食がDランクになると、Slackチャンネルにメッセージが送信されます。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-large wp-image-205773" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260310112456/A-split-screen-showing-Salesforce-Flow-Builder-logic-on-the-left-and-a-Slack-channel-on-the-right-where-a-bot-named-The-Snack-Critic-has-posted-a-warning-about-Crackers-e1773163519647.png?w=1000" class="postimages" width="1000" height="370" alt="PCの分割画面の左側にSalesforceのフロービルダーのロジックが表示されている。右側には、Slackチャンネルでボットが人気のない軽食について投稿した内容が表示されている。" />
			  </span>
			</p>
<h4><b>手痛い失敗（500エラー）</b></h4>
<p><span style="font-weight: 400">とはいえ、すべてが順調に進んだわけではありません。自信がついてきた私は、2つ目の機能を追加しようとしました。軽食がSランクに入ったら、社内フィード（</span><b>Chatter</b><span style="font-weight: 400">）に「おめでとう！」というメッセージを投稿する機能です。</span></p>
<p><span style="font-weight: 400">設定して実行してみると、……</span><b>500エラーが出ました。</b></p>
<p><span style="font-weight: 400">ロジックに問題はなかったので、このエラーメッセージは謎でした。フローのデバッグに悪戦苦闘したあげく、AIの助けを借り、プラットフォームのドキュメントを読み返して、ようやくオブジェクトの設定にたどり着きました。</span></p>
<p><span style="font-weight: 400">私のカスタムオブジェクトには「</span><b>Feed Tracking（フィードの追跡）</b><span style="font-weight: 400">」という小さなチェックボックスがあったのですが、それをオンにしていませんでした。システムは、まだ存在していないフィードに投稿しようとしていたのです。</span></p>
<p><span style="font-weight: 400">思わず突っ伏したくなりましたが、自分の考えが当たっていたこともわかりました。</span><b>ローコードでも、開発の知識がいらないわけではない</b><span style="font-weight: 400">ということを再認識させられました。ローコードであっても、開発者のように考え、プラットフォームを機能させるためにどの設定を有効にすればよいかを理解しておく必要があります。</span></p>
<h2><b>まとめ：SalesforceはただのCRMではなく、プラットフォーム</b></h2>
<p><span style="font-weight: 400">さて、最初の3週間で、私は何を学んだのでしょうか。</span></p>
<p><span style="font-weight: 400">「最先端のWeb開発者」と「Salesforce開発者」の違いは、思っていたよりもずっと小さいということがわかりました。JavaScriptを知っていれば、構文の大部分はすでに頭の中に入っています。</span></p>
<p><span style="font-weight: 400">それより重要だったのは、Salesforce Platformが何をするかを理解できたことです。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400">Salesforce Platformは、</span><b>認証、データベース、ホスティング、API</b><span style="font-weight: 400">といった、地味ではあっても欠かせない部分を引き受けてくれるので、開発者は重要なロジックに集中できます。ロジックが「100万ドルの案件を成約させること」であっても、「クラッカーをDランクに設定すること」であっても、使うツールは根本的には同じです。</span></p>
<p><span style="font-weight: 400">…ちなみに、</span><b>ベーグルはSランク以外はあり得ません。</b></p>
<h3><b>一緒に学びませんか？</b></h3>
<p><span style="font-weight: 400">私もまだ初心者ですが、基礎を学ぶためにAIを相棒に「</span><a href="https://trailhead.salesforce.com/content/learn/trails/force_com_dev_beginner?trailmix_creator_id=yshrivastava&amp;trailmix_slug=beginner-to-advanced-developer-roadmap"><b>開発者初級</b></a><span style="font-weight: 400">」のTrailmixを使いました。このような軽食のランキングリスト（またはもっと役に立つもの）を作ってみたいと思った方は、以下のリソースを参考にしてみてください。</span></p>
<ul>
<li style="font-weight: 400"><a href="https://trailhead.salesforce.com/ja/users/yshrivastava/trailmixes/beginner-to-advanced-developer-roadmap"><span style="font-weight: 400">初級から上級までの開発者ロードマップ</span></a><span style="font-weight: 400">（Trailhead）</span></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/lwc/guide/get-started-lwc.html"><span style="font-weight: 400">Lightning Webコンポーネントガイド</span></a><span style="font-weight: 400">（英語）（開発者向けドキュメント）</span></li>
<li style="font-weight: 400"><a href="https://trailhead.salesforce.com/content/learn/modules/data_modeling"><span style="font-weight: 400">データモデリング</span></a><span style="font-weight: 400">（Trailhead）</span></li>
<li style="font-weight: 400"><a href="https://trailhead.salesforce.com/ja/content/learn/modules/flow-basics"><span style="font-weight: 400">Salesforce Flowの基本</span></a><span style="font-weight: 400">（Trailhead）</span></li>
</ul>
<h3><b>執筆者について</b></h3>
<p><b>Sean Keegan</b><span style="font-weight: 400">は、Salesforceのニューヨークオフィスに勤務するリードデベロッパーアドボケイトです。元数学教師で、複雑なテクノロジーを誰にとっても身近なものにすることに情熱を注いでいます。仕事を離れると、ゲームや観葉植物の世話、アルティメットフリスビーを楽しんでいます。ぜひ</span><a href="https://twitter.com/DevRelSean"><span style="font-weight: 400">X（Twitter）</span></a><span style="font-weight: 400">と</span><a href="https://linkedin.com/in/seanryankeegan"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">でフォローしてください。</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/react-vs-salesforce-how-i-rebuilt-my-vibe-coded-app-on-the-platform-jp">React vs. Salesforce：私が「バイブ・コーディング」したアプリをプラットフォーム上に再構築した方法</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/react-vs-salesforce-how-i-rebuilt-my-vibe-coded-app-on-the-platform-jp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206023</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260310102924/ReactvsSalesforce-e1773160182271.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260310102924/ReactvsSalesforce-e1773160182271.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Salesforce 開発者の腕試し！「Lightning MiniHack Live」イベント概要&#038;予選参加ガイド</title>
		<link>https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-jp</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-jp#respond</comments>
		<pubDate>Mon, 13 Apr 2026 06:00:02 +0000</pubDate>
		<dc:creator><![CDATA[Hiroyuki Inaba]]></dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Community]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[mini hack]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206010</guid>
		<description><![CDATA[<p>&#25552;&#31034;&#12373;&#12428;&#12383;&#12300;&#23455;&#35013;&#35201;&#20214;&#12301;&#12395;&#23550;&#12375;&#12390;&#12289;&#12356;&#12363;&#12395;&#32032;&#26089;&#12367;&#12289;&#27491;&#30906;&#12395;&#35373;&#23450;&#12539;&#38283;&#30330;&#12434;&#34892;&#12360;&#12427;&#12363;&#12434;&#31478;&#12358;&#12289;&#12414;&#12427;&#12391; e-sports &#12398;&#12424;&#12358;&#12394;&#12521;&#12452;&#12502;&#12539;&#12495;&#12483;&#12459;&#12477;&#12531;&#12290;&#12452;&#12505;&#12531;&#12488;&#27010;&#35201;&#12392;&#20104;&#36984;&#21442;&#21152;&#26041;&#27861;&#12434;&#35443;&#12375;&#12367;&#35299;&#35500;&#12375;&#12414;&#12377;&#12290;</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-jp">Salesforce 開発者の腕試し！「Lightning MiniHack Live」イベント概要&amp;予選参加ガイド</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Salesforce 開発者、エンジニアの皆さま、お待たせしました！<br />
2026年6月10日に開催される Agentforce World Tour Tokyo / TDX Tokyo のステージで、自らのスキルを証明するチャンスがやってきました。</p>
<p>その名も<strong>「Lightning MiniHack Live」</strong></p>
<p>この記事では、このエキサイティングなイベントの概要と、4月17日からスタートする予選の参加方法について詳しく解説します。</p>
<h2>Lightning MiniHack Live とは？</h2>
<p>提示された「実装要件」に対して、いかに素早く、正確に設定・開発を行えるかを競う、まるで e-sports のようなライブ・ハッカソンとも言えるイベントです。<br />
予選を勝ち抜いた上位 4 名のファイナリストは、6月10日にザ・プリンス パークタワー東京で開催される「Agentforce World Tour Tokyo / TDX Tokyo」のメインステージに登壇。観衆の前でリアルタイムに構築を行い、優勝者を決定します！</p>
<table>
<thead>
<tr>
<th><b>ステップ</b></th>
<th><b>日付</b></th>
<th><b>内容</b></th>
</tr>
</thead>
<tbody>
<tr>
<td><b>実装要件公開</b></td>
<td>4月17日(金) 午前9時</td>
<td>予選の実装要件を公開</td>
</tr>
<tr>
<td><b>予選応募期間</b></td>
<td>4月17日(金) ～ 5月6日(水) 午後5時</td>
<td>Trailhead Playground を使って操作動画を収録し指定のフォームから結果を登録<br />
<b>先着 100 名限定！</b>100名に達し次第終了</td>
</tr>
<tr>
<td><b>審査期間</b></td>
<td>5月7日(木) ～ 5月10日(日)</td>
<td>提出動画に基づきタイムと正確性を審査</td>
</tr>
<tr>
<td><b>結果発表</b></td>
<td>5月11日(月)まで</td>
<td>応募者全員に選出結果をメール通知</td>
</tr>
<tr>
<td><b>本戦</b></td>
<td>6月10日(水) 午後5時から</td>
<td>イベント会場にてライブバトル！</td>
</tr>
</tbody>
</table>
<h2>予選の実装要件</h2>
<ul>
<li><a href="https://developer.salesforce.com/jpblogs/2026/04/lightning-minihack-live-2026-qualifiers-implementation-task-jp">予算超過を打破せよ！緊急承認ロジックの実装</a></li>
</ul>
<h2>予選の参加方法：3つのステップ</h2>
<p>今回の予選は、<strong>「正確な構築」と「スピード」</strong>の両方が重要です。</p>
<h3>ステップ1</h3>
<p>まず、Agentforce World Tour Tokyo への登録を済ませておきましょう。</p>
<ul>
<li>イベント公式登録: Agentforce World Tour Tokyo <a href="https://www.salesforce.com/jp/events/world-tour/tokyo/">登録サイト</a></li>
</ul>
<p>コミュニケーション用の Slack ワークスペース・チャンネルに参加をお願いします。</p>
<ul>
<li>ワークスペース「Japan Trailblazers」に参加
<ul>
<li>初めてのアクセスの場合は次の招待リンクからこのワークスペースのメンバーとして登録</li>
<li><a href="https://join.slack.com/t/trailblazers-jp/shared_invite/zt-3v2a191n9-pxFpj3k6B2EDv6u5ejFrog">招待リンク</a></li>
</ul>
</li>
<li>チャンネル「<a href="https://trailblazers-jp.slack.com/archives/C0ASA9E2MSR">#event-lightning-minihack-live-2026</a>」に参加
<ul>
<li>公開チャンネルですので、ご自身でチャンネルへの参加をお願いします</li>
</ul>
</li>
</ul>
<h3>ステップ2 (4月17日に予選の実装要件が公表された後)</h3>
<p>「実装要件」を確認し、構築を開始します。この際、「開始から完了までのプロセスを画面録画」する必要があります。</p>
<ul>
<li>録画ルール:
<ul>
<li>使用する組織は Trailhead Playground
<ul>
<li>一部モジュールで使用する専用の Developer Edition ではなく Trailhead 共通の Playground を使うこと</li>
<li>必ず新規作成した直後の Trailhead Playground を使うこと</li>
<li>事前の設定変更は、表示言語の設定を日本語にすることのみ可</li>
</ul>
</li>
<li> 「設定のホーム」画面から操作を開始
<ul>
<li>開始画面と完了画面の詳細については4月17日に「実装要件」を公開する時に改めてお伝え</li>
</ul>
</li>
<li>操作開始画面と完了画面の間はノーカット・編集不可。開始画面より前、完了画面より後のカットは可とする</li>
<li>画面全体（OSの時計、タスクバー、ブラウザのURLバーを含むデスクトップ全体）を録画する</li>
<li>その他操作にあたっての制約および公式ルールを遵守</li>
</ul>
</li>
</ul>
<p>動画ファイルは、ファイル共有や動画共有のサービスをお使いいただき、応募フォームにはその動画ファイルへアクセス可能なリンクを登録ください。</p>
<h4>ステップ3</h4>
<p>準備ができたら、速やかに応募フォームから提出してください。</p>
<ul>
<li>応募フォーム
<ul>
<li><a href="https://invite.salesforce.com/lightningminihacklive">https://invite.salesforce.com/lightningminihacklive</a></li>
</ul>
</li>
<li>入力内容
<ul>
<li>応募者ご本人・連絡先の情報</li>
<li>動画に関する情報
<ul>
<li>動画 URL</li>
<li>操作開始時分</li>
<li>操作完了時分</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>【重要】先着 100 名の壁！<br />
応募フォームは先着 100 名に達した時点で自動的にクローズされます。期間内であっても、100名を超えると挑戦権がなくなりますのでご注意ください。<br />
なお、応募は1回のみです。同一参加者から複数回の応募が認められた場合は失格とします。</p>
<h2>操作にあたっての制約</h2>
<h3>禁止事項</h3>
<ul>
<li>画面表示言語の日本語への変更以外の事前設定</li>
<li>ブラウザ機能または外部ツールからの自動設定またはマクロの使用</li>
<li>事前に準備したコードまたはメタデータのコピー＆ペースト</li>
<li>OSやブラウザの「単語登録」、「スニペット機能」、「クリップボード履歴ツール」を使用してのコードまたはメタデータの呼び出し</li>
<li>生成 AI アプリ、AI エージェントに指示を出しての組織の設定・カスタマイズ(ただし Agentforce Vibes を除く)</li>
</ul>
<h3>許可事項</h3>
<ul>
<li>ローカルのパソコンにインストールした Visual Studio Code、Salesforce DX、Agentforce DX、Agentforce Vibes の利用
<ul>
<li>ただし、事前設定は不可。新規プロジェクトの作成および組織との接続から始めること</li>
</ul>
</li>
<li>ベータ版機能の利用
<ul>
<li>ただし、組織で利用できる場合に限る</li>
</ul>
</li>
</ul>
<h2>審査と本戦進出について</h2>
<p>提出・申告された情報と動画をもとに、正確性と構築にかかった時間を厳正に審査します。</p>
<ul>
<li>通知: 予選に応募された方全員に、5月11日までにメールにて結果を連絡</li>
<li>公開範囲: 本戦進出者(上位4名)のお名前のみ</li>
</ul>
<h2>本戦の概要</h2>
<ul>
<li>1対1での準決勝2試合および決勝1試合</li>
<li>イベント運営側が用意する Developer Edition を使用</li>
<li>実装要件は本戦進出者決定後に公開</li>
</ul>
<h2>賞品・賞金</h2>
<p>残念ながら今回はありません！本イベントは、純粋なスキル競技として開催されるものです。優勝者は「Lightning MiniHack Live 初代チャンピオン」として称えられ、Salesforce Developer Blog JP にて紹介される予定です。</p>
<h2>おわりに</h2>
<p>初代チャンピオンは誰か？日本中の Salesforce 開発者が注目するこのステージ。あなたのスキルが、次世代の Salesforce/Agentforce 活用を加速させるヒントになるかもしれません。<br />
まずはコミュニケーション用の Slack ワークスペースに参加し、4月17日この記事を再度チェックして、挑戦を開始してください！</p>
<p>Happy Hacking!</p>
<p>(注: 本記事の内容は 2026年4月13日時点の公式ルールに基づいています。最新情報は必ず本記事および公式ルールをご確認ください)</p>
<ul>
<li><a href="https://org62.my.salesforce.com/sfc/p/#000000000062/a/ed0000022x2r/ioHdEDhVNFwe5u2bbe9aABRbmkiQqT.BbV2DTg.WSUU">公式ルール</a></li>
</ul>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-jp">Salesforce 開発者の腕試し！「Lightning MiniHack Live」イベント概要&amp;予選参加ガイド</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/lightning-minihack-live-2026-jp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206010</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260410204049/blog_lightning_minihack_live_front.png?w=1200" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260410204049/blog_lightning_minihack_live_front.png?w=1200" medium="image" />
	</item>
		<item>
		<title>Introducing Web Console (Beta): Code Where You Build on Salesforce</title>
		<link>https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce#respond</comments>
		<pubDate>Thu, 09 Apr 2026 14:00:12 +0000</pubDate>
		<dc:creator><![CDATA[Raj Sensharma]]></dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Salesforce Events]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[Anonymous Apex]]></category>
		<category><![CDATA[Apex Debugging]]></category>
		<category><![CDATA[browser-based ide]]></category>
		<category><![CDATA[Developer Productivity]]></category>
		<category><![CDATA[developer tooling]]></category>
		<category><![CDATA[Metadata Navigation]]></category>
		<category><![CDATA[Salesforce Beta]]></category>
		<category><![CDATA[Salesforce Web Console]]></category>
		<category><![CDATA[SOQL]]></category>
		<category><![CDATA[TDX 2026]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205976</guid>
		<description><![CDATA[<p>A modern, browser-based IDE embedded in Salesforce workflows, built for faster debugging, quicker fixes, and less context switching.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce">Introducing Web Console (Beta): Code Where You Build on Salesforce</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">Starting </span><b>April 14, 2026</b><span style="font-weight: 400">, we’re opening the beta for </span><b>Web Console</b><span style="font-weight: 400">, a modern, browser-based IDE embedded directly into Salesforce workflows. It is designed to help developers work faster inside the platform they already know, without switching tools just to inspect code, run queries, debug an issue, or make a quick fix. The beta release is focused on helping developers investigate issues, make targeted changes, and validate those changes in one connected experience. </span></p>
<p><span style="font-weight: 400">At its core, Web Console is built around a simple idea: </span><b>developers should not have to leave Salesforce to build Salesforce apps</b><span style="font-weight: 400">. Web Console brings the IDE into the flow of work, so you can launch from Salesforce surfaces, stay in context, and move from investigation to fix with less setup and fewer interruptions. That idea comes down to one phrase: </span><b>code where you build</b><span style="font-weight: 400">. </span></p>
<h2><span style="font-weight: 400">What is Web Console?</span></h2>
<p><span style="font-weight: 400">As a browser-based IDE that lives directly inside Salesforce, Web Console is designed to launch from the places where developers are already working, such as Setup and other context-rich entry points. As a result, you can inspect, debug, edit, and validate without breaking your flow. Rather than opening a separate tool and manually finding the right file or log, you can start from the issue itself and work forward from there. </span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205982" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143530/A-screenshot-of-Web-Console-beta-showing-the-Explorer-on-the-left-and-code-on-the-right-e1775594448683.png?w=1000" class="postimages" width="1000" height="591" alt="A screenshot of Web Console (beta) showing the Explorer on the left and code on the right" />
			  </span>
			</p>
<p><span style="font-weight: 400">This is more than a new editor in a browser tab. It is a different way of working. Web Console brings together modern editing with the features and capabilities developers need in the moment, including debug logs, </span><a href="https://developer.salesforce.com/docs/platform/webconsole/guide/query-builder.html"><span style="font-weight: 400">SOQL execution</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/webconsole/guide/retrieve-query-plans.html"><span style="font-weight: 400">Query Plan Inspector</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/webconsole/guide/exec-anon-apex.html"><span style="font-weight: 400">Anonymous Apex</span></a><span style="font-weight: 400">, quick Apex edits, and org-aware navigation. The result is a more direct path from “</span><i><span style="font-weight: 400">something broke</span></i><span style="font-weight: 400">” to “</span><i><span style="font-weight: 400">I found it, fixed it, and validated it.</span></i><span style="font-weight: 400">”</span></p>
<h2><span style="font-weight: 400">Why Web Console feels different in practice</span></h2>
<p><span style="font-weight: 400">The value of Web Console is not just feature access. It is usability in context.</span></p>
<p><span style="font-weight: 400">When something fails in production or a sandbox, developers are usually not starting with a neat project plan. They are responding to an event, an error, or an unexpected behavior. Legacy diagnostic tools were built for this kind of reactive investigation because they keep runtime information close at hand and minimize setup. By contrast, more project-oriented IDE workflows can be powerful for sustained development, but they often introduce more state, more panes, and more cognitive overhead for short investigative tasks.</span></p>
<p><span style="font-weight: 400">Web Console is designed to bridge that gap. It keeps the investigation close to where the issue surfaced, while giving developers a more modern, browser-based editing and debugging experience. That means less hunting across windows, less context switching between tools, and a faster path to understanding what happened and what to do next. </span></p>
<p><span style="font-weight: 400">That is a big part of why this beta matters. It is not about replacing a legacy tool feature-by-feature. It is about making common developer workflows inside Salesforce faster, clearer, and more connected to the work already happening in the org.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205983" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143532/A-screenshot-showing-Apex-jobs-with-one-Scheduled-Apex-job-queued-e1775594198894.png?w=1000" class="postimages" width="1000" height="353" alt="A screenshot showing Apex jobs with one Scheduled Apex job queued" />
			  </span>
			</p>
<h2><span style="font-weight: 400">What’s in the beta: debug logs, Anonymous Apex, SOQL, and quick edits</span></h2>
<p><span style="font-weight: 400">The beta is intentionally focused on the workflows developers and admins use most when they need to investigate and fix something quickly. These include </span><b>debug log viewing</b><span style="font-weight: 400">, </span><b>SOQL execution</b><span style="font-weight: 400">, </span><b>Query Plan inspection</b><span style="font-weight: 400">, </span><b>Anonymous Apex execution</b><span style="font-weight: 400">, and </span><b>quick, in-context Apex edits</b><span style="font-weight: 400">. Web Console is also designed to support metadata navigation through an org-aware browser experience, so developers can stay grounded in the org while they work. </span></p>
<p><span style="font-weight: 400">For example, in the beta you can:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">inspect runtime behavior with a dedicated logs experience,</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">execute SOQL and understand query performance with Query Plan Inspector,</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">run Anonymous Apex without leaving the browser,</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">open Apex from relevant Salesforce surfaces and make focused edits in context,</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">navigate metadata without switching out to a separate development environment.</span></li>
</ul>
<p><span style="font-weight: 400">This is not a list of random features. It is a cohesive set of capabilities designed for the high-value moments where developers tend to lose time today: understanding a failure, tracing it to source, checking query behavior, making a targeted fix, and validating the outcome. </span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205981" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143526/A-screenshot-of-Web-Console-beta-showing-a-SOQL-query-and-its-results-e1775594486176.png?w=1000" class="postimages" width="1000" height="595" alt="A screenshot of Web Console (beta) showing a SOQL query and its results" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Connected workflow example: Debugging an Apex job failure</span></h2>
<p><span style="font-weight: 400">Apex job failures are a good example of where Web Console can make an immediate difference. A developer can begin in the Apex Jobs page, where a failed or long-running Apex job is already visible. From there, they can open the related Apex class in Web Console, enable logging, re-run the scenario, inspect the execution path, jump from the stack trace to the problematic line of code, make the fix, run tests, and validate that the job now completes successfully. They can do all of that without leaving Salesforce or bouncing between disconnected tools.</span></p>
<p><span style="font-weight: 400">This streamlined flow is more efficient because it mirrors how real troubleshooting actually happens. The work does not begin in a file tree. It begins with a problem. Web Console is designed so the IDE meets the developer at that point of failure, then stays with them through diagnosis, code change, and validation.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205984" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143534/image4-e1775594179302.png?w=1000" class="postimages" width="1000" height="288" alt="An ordered workflow of five steps: Start in Apex Jobs, Open the class in Web Console, Inspect logs and re-run, Fix the issue, and Run tests and validate" />
			  </span>
			</p>
<p><span style="font-weight: 400">This is one of the clearest ways Web Console improves usability. Instead of forcing the developer to reconstruct the situation across separate tools, it keeps runtime evidence, source code, and validation steps close together, shortening the distance between “What just happened?” and “Did my fix resolve the issue?”</span></p>
<h2><span style="font-weight: 400">Production versus non-production: Web Console guardrails</span></h2>
<p><span style="font-weight: 400">Web Console is built with the realities of Salesforce development in mind. In </span><b>production orgs</b><span style="font-weight: 400">, Apex editing is </span><b>read-only</b><span style="font-weight: 400">, letting developers inspect and understand code safely without any risk to live orgs. In </span><b>sandboxes and other non-production environments</b><span style="font-weight: 400">, developers can make inline edits and save changes as part of a faster path-to-fix workflow.</span></p>
<p><span style="font-weight: 400">That balance is important. A modern experience should make developers faster, but not by weakening platform guardrails. Web Console keeps the guardrails intact while still streamlining inspection, debugging, and validation.</span></p>
<h2><span style="font-weight: 400">How to enable Web Console (beta)</span></h2>
<p><span style="font-weight: 400">During the open beta starting April 14, 2026, Web Console will be available across Salesforce orgs and editions through admin opt-in. It will be </span><b>off by default</b><span style="font-weight: 400"> until an admin enables it from the </span><b>Web Console Setup page</b><span style="font-weight: 400">.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205980" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260407143523/A-screenshot-of-the-Web-Console-Beta-Settings-UI-showing-the-feature-as-Active-e1775594503905.png?w=1000" class="postimages" width="1000" height="463" alt="A screenshot of the Web Console (Beta) Settings UI showing the feature as Active" />
			  </span>
			</p>
<p><span style="font-weight: 400">To learn how to enable it in your org and get started, see the </span><a href="https://developer.salesforce.com/docs/platform/webconsole/overview"><span style="font-weight: 400">Web Console (Beta) documentation</span></a><span style="font-weight: 400">.</span></p>
<h2><span style="font-weight: 400">Why this beta is focused</span></h2>
<p><span style="font-weight: 400">The beta is intentionally scoped around a set of workflows developers will recognize immediately. It delivers value now, while laying the foundation for a broader, unified development experience over time. The near-term emphasis is on embedded workflows and the high-frequency tasks that are often a source of friction for developers today: investigating failures, tracing behavior, checking queries, making quick edits, and validating fixes.</span></p>
<h2><span style="font-weight: 400">Join us at TDX</span></h2>
<p><span style="font-weight: 400">Want to see Web Console in action? If you are attending TDX, </span><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770167528654001fowJ"><span style="font-weight: 400">register</span></a><span style="font-weight: 400"> to </span><b>join us in person</b><span style="font-weight: 400"> to see how Web Console helps developers debug, edit, validate, and move faster — right inside Salesforce — in our session:</span></p>
<p><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770167528654001fowJ"><b>Build on the Salesforce Platform with Web Console</b><b><br />
</b></a><span style="font-weight: 400">Build, edit, and validate from your browser with Web Console, the unified Salesforce web environment for Apex, metadata, and in-context editing.</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Master the core capabilities and productivity features of Web Console.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Transition your daily development workflows from the legacy Developer Console to the modern Web Console.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Perform metadata management and Apex development directly within the unified web interface.</span></li>
</ul>
<p><a href="https://reg.salesforce.com/flow/plus/tdx26/sessioncatalog/page/catalog/session/1770167528654001fowJ"><b>Add to your TDX agenda.</b></a></p>
<h2><b>About the author</b></h2>
<p><b>Raj Sensharma</b><span style="font-weight: 400"> is a Director of Product Management at Salesforce with over 20 years of experience delivering transformative SaaS, platform, and AI-powered solutions. He’s passionate about building AI-native products that go beyond automation to enable truly agentic experiences. Raj holds an MBA and a Master’s degree in Computer Science from the University of Central Florida. Follow him on </span><a href="https://www.linkedin.com/in/rajsensharma/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce">Introducing Web Console (Beta): Code Where You Build on Salesforce</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/introducing-web-console-beta-code-where-you-build-on-salesforce/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205976</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260407150805/Generic-C-2-e1775596111931.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260407150805/Generic-C-2-e1775596111931.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Salesforce B2C Default Domains: Instance eCDN &#038; SSL for Devs</title>
		<link>https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs#respond</comments>
		<pubDate>Tue, 07 Apr 2026 14:00:24 +0000</pubDate>
		<dc:creator><![CDATA[Sarah Welker]]></dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[Trust, Security, and Accessibility]]></category>
		<category><![CDATA[B2C Commerce]]></category>
		<category><![CDATA[Business Manager]]></category>
		<category><![CDATA[Composable Storefront]]></category>
		<category><![CDATA[Default Domain]]></category>
		<category><![CDATA[developer experience]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[eCDN]]></category>
		<category><![CDATA[ODS]]></category>
		<category><![CDATA[On-Demand Sandboxes]]></category>
		<category><![CDATA[PWA Kit]]></category>
		<category><![CDATA[Salesforce Commerce Cloud]]></category>
		<category><![CDATA[Site Reliability]]></category>
		<category><![CDATA[SSL Certificates]]></category>
		<category><![CDATA[WAF]]></category>
		<category><![CDATA[Web Security]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205958</guid>
		<description><![CDATA[<p>Discover how to streamline your workflow with out-of-the-box hostnames that enable early eCDN testing and production-like validation without the operational overhead.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs">Salesforce B2C Default Domains: Instance eCDN &amp; SSL for Devs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="video-container"><iframe loading="lazy" title="Default Domain OOTB Deep Shrestha v1" width="500" height="281" src="https://www.youtube.com/embed/2k5ezeX0kQY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p><span style="font-weight: 400">Reference: </span><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_default_domain.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">Default Domain Support for B2C Commerce</span></a></p>
<p>For any developer, the road to launching a new feature for a high-traffic, consumer-facing web storefront can be a rocky one. Before a single line of code can be properly tested in a production-like environment, teams often face the operational burdens of manual DNS setup, custom domain registration, certificate management, and the required IT involvement that slows everything down. Setting up a new development or testing environment has traditionally been a process filled with friction, delaying innovation and extending time-to-market.</p>
<p><span style="font-weight: 400">Salesforce Commerce Cloud is removing these obstacles with a powerful new capability: the Default Domain. This out-of-the-box feature provides an instantly available, eCDN-ready hostname for every instance, eliminating the setup headaches that have long frustrated developers. This post breaks down the five most impactful takeaways of this new capability.</span></p>
<h2><span style="font-weight: 400">Takeaway 1: Default Domain support for B2C Commerce</span></h2>
<p><span style="font-weight: 400">The Default Domain is far more than a simple placeholder URL; it&#8217;s an immediately </span><i><span style="font-weight: 400">eCDN-ready</span></i><span style="font-weight: 400"> environment right out of the box, meaning the CDN layer and HTTPS are already configured. This is a critical distinction that transforms how development and testing can be approached.</span></p>
<p><span style="font-weight: 400">Built-in eCDN integration enables developers to test crucial, real-world functionality in a non-production environment that accurately mimics the final production setup. Development teams can now validate </span><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/perf-guide.html"><span style="font-weight: 400">PWA Kit performance</span></a><span style="font-weight: 400">, fine-tune </span><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_analyze_eCDN_traffic.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">security rules</span></a><span style="font-weight: 400">, test complex </span><a href="https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-content-cache.html?utm_source=chatgpt.com"><span style="font-weight: 400">caching strategies</span></a><span style="font-weight: 400">, and conduct performance tuning early and often.</span></p>
<p><span style="font-weight: 400">The key benefit is the ability to prevent production issues by discovering them and addressing them earlier in the development cycle. By testing in a truly production-like environment from day one, you mitigate the risk that improper domain or certificate setup will lead to outages or insecure (HTTP) traffic when you go live. For more information, see </span><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_default_domain.htm&amp;language=en_US&amp;type=5"><b>Default Domain Support for B2C Commerce</b></a><span style="font-weight: 400">.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205962" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260406124221/Administration-UI-showing-Embedded-CDN-Settings-e1775500995363.png?w=1000" class="postimages" width="1000" height="499" alt="Administration UI showing Embedded CDN Settings" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Takeaway 2: Security is built in, not bolted on</span></h2>
<p><span style="font-weight: 400">With the Default Domain, security is a built-in feature, not an afterthought. HTTPS is automatically enabled because Salesforce manages the entire SSL/TLS certificate lifecycle. This completely eliminates any manual work for developers related to certificate provisioning, uploading, or renewal.</span></p>
<p><span style="font-weight: 400">Production instances using a Default Domain have a &#8220;secure by default&#8221; posture. To prevent accidental public exposure, production instances are preconfigured with a &#8220;Block All&#8221; firewall rule at the eCDN layer. Development teams must explicitly add &#8220;Allow&#8221; rules for specific sites or paths they want to make accessible, ensuring nothing goes public until it’s truly ready. (Remember: rules are executed </span><b>from top to bottom</b><span style="font-weight: 400">, so any custom &#8220;Allow&#8221; rules must be placed above the default block.)</span></p>
<p><span style="font-weight: 400">Development and Staging instances are also protected by default, requiring user credentials for access to safeguard these lower environments from unwanted public traffic.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205963" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260406124224/Administration-UI-showing-SSLTLS-Settings-e1775501011218.png?w=1000" class="postimages" width="1000" height="498" alt="Administration UI showing SSL/TLS Settings" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Takeaway 3: All of the control, none of the paperwork</span></h2>
<p><span style="font-weight: 400">Contrary to the common misconception that managed domains limit control, with the Default Domain developers have full eCDN configuration access through both the CDN API and the familiar Business Manager UI.</span></p>
<p><span style="font-weight: 400">You retain complete control over customizing and testing the eCDN settings for your Default Domain, including:</span></p>
<ul>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_waf_application.htm&amp;type=5"><span style="font-weight: 400">Web Application Firewall (WAF) rules</span></a></li>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_configuring_a_zone.htm&amp;type=5"><span style="font-weight: 400">Speed settings</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/configure-mrt-routing-bm.html"><span style="font-weight: 400">Routing rules</span></a></li>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_create_eCDN_firewall_rule.htm&amp;type=5"><span style="font-weight: 400">Custom rules</span></a><span style="font-weight: 400"> and </span><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_eCDN_create_rate_limiting_rule.htm&amp;type=5"><span style="font-weight: 400">Rate Limits</span></a></li>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_analyze_eCDN_traffic.htm&amp;type=5"><span style="font-weight: 400">Analytics</span></a></li>
<li style="font-weight: 400"><a href="https://help.salesforce.com/s/articleView?id=cc.b2c_configure_eCDN_page_shield_policy.htm&amp;type=5"><span style="font-weight: 400">PCI settings</span></a></li>
</ul>
<p><span style="font-weight: 400">This allows you to fully customize and validate your eCDN setup for a new project or feature without any risk of affecting the configuration of your production custom domains.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205964" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260406124228/Administration-UI-showing-WAF-Settings-e1775501027407.png?w=1000" class="postimages" width="1000" height="496" alt="Administration UI showing WAF Settings" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Takeaway 4: A complement to, not a replacement for, your custom domain</span></h2>
<p><span style="font-weight: 400">It’s crucial to understand that the Default Domain does not replace or alter the functionality of your existing custom domains (also known as vanity domains), like </span><span style="font-weight: 400">www.TheWidgetStorefront.com</span><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">The two types of domains can coexist on the same instance. Your custom domain remains the preferred choice for external-facing, branded storefronts that your shoppers interact with. (While the Default Domain can be made publicly accessible if explicitly configured, it is not intended for that purpose.) The configuration of your custom domain is not affected by any changes made to the Default Domain.</span></p>
<p><span style="font-weight: 400">The Default Domain serves a different, but equally important, purpose. Its primary use case is for internal-facing tasks – such as developer testing, load testing, and pre-production reviews – enabled by eCDN functionality in environments where setting up a custom domain is neither practical nor necessary.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205961" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260406124217/Administration-UI-showing-Embedded-CDN-Settings-with-Default-and-Proxy-Zones-e1775500976943.png?w=1000" class="postimages" width="1000" height="493" alt="Administration UI showing Embedded CDN Settings with Default and Proxy Zones" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Takeaway 5: More than a feature, a foundation for the future</span></h2>
<p><span style="font-weight: 400">While its immediate benefits are clear, the Default Domain is also a strategic platform enhancement that paves the way for future innovation. Specifically, Default Domain support is a critical prerequisite for enabling eCDN for </span><a href="https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/b2c-developer-sandboxes.html"><span style="font-weight: 400">on-demand sandboxes (ODS)</span></a><span style="font-weight: 400">, which are planned for later this year.</span></p>
<p><span style="font-weight: 400">This connection addresses persistent developer pain points identified through voice-of-the-customer feedback. For teams adopting composable storefronts, the lack of easy eCDN testing in sandboxes has created major friction. Limited local development support for hybrid environments has required teams to create many custom proxies, a cumbersome workaround that slows development cycles and that eCDN-enabled on-demand sandboxes would eliminate.</span></p>
<h2><b>Conclusion</b></h2>
<p><span style="font-weight: 400">As a foundational capability, the Default Domain enables faster deployment, enhanced site security, and more streamlined composable development workflows on Commerce Cloud.</span></p>
<p><span style="font-weight: 400">The Default Domain removes friction from the Commerce Cloud development process by eliminating the operational burden of domain and certificate management. The result is more time to focus on what you do best: building innovative features and exceptional customer experiences.</span></p>
<h2><b>Resources</b></h2>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Documentation:</span> <a href="https://help.salesforce.com/s/articleView?id=cc.b2c_default_domain.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">Default Domain Support for B2C Commerce</span></a></li>
<li style="font-weight: 400"><span style="font-weight: 400">Trailhead: </span><a href="https://trailhead.salesforce.com/content/learn/modules/ecdn-b2c-commerce/ecdn-b2c-commerce-explore"><span style="font-weight: 400">Explore eCDN for B2C Commerce</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones.html"><span style="font-weight: 400">CDN Zones</span><span style="font-weight: 400"> &#8211;</span></a><span style="font-weight: 400"> (Applicable to Default Domains)</span>
<ul>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-cipher-suite-types.html"><span style="font-weight: 400">eCDN Supported Cipher Suites</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush.html"><span style="font-weight: 400">eCDN Logpush</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush-log-field.html"><span style="font-weight: 400">eCDN Logpush Log Fields</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html"><span style="font-weight: 400">eCDN PCI 4.0 Compliance Tools</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-wafv2.html"><span style="font-weight: 400">eCDN WAFv2</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-rules.html"><span style="font-weight: 400">eCDN Custom Rules</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-rate-limiting-rules.html"><span style="font-weight: 400">eCDN Rate Limiting Rules</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-cache-rules.html"><span style="font-weight: 400">eCDN Cache Rules</span></a></li>
</ul>
</li>
<li style="font-weight: 400"><span style="font-weight: 400">GitHub: </span><a href="https://github.com/SalesforceCommerceCloud/b2c-developer-tooling"><span style="font-weight: 400">Salesforce Commerce cloud b2c-developer-tooling</span></a></li>
<li style="font-weight: 400"><a href="https://www.salesforce.com/plus/experience/release_readiness_live/series/release_readiness_spring_26/episode/episode-s1e4"><span style="font-weight: 400">Release Readiness Spring &#8217;26 Highlights: Agentforce Commerce</span></a></li>
</ul>
<h2><b>About the author</b></h2>
<p><span style="font-weight: 400"><strong>Raghu Venkatraman</strong> is a Product Management Director at Salesforce, where he drives product strategy and innovation. With extensive experience in enterprise software and a passion for building user-centric solutions, Raghu focuses on delivering products that empower organizations to work more efficiently and effectively. He brings deep expertise in product leadership and cross-functional collaboration to help customers maximize their Salesforce investments. Follow him on </span><a href="https://www.linkedin.com/in/raghu-venkatraman-b6bb02/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400"><strong>Deep Shrestha</strong> is a Principal Member of Technical Staff at Salesforce, specializing in software engineering and technical architecture. With a strong background in building scalable, robust solutions, Deep brings technical depth and innovation to complex engineering challenges. His expertise spans system design, implementation, and delivering high-quality software that meets the evolving needs of enterprise customers. Follow him on </span><a href="https://www.linkedin.com/in/dkshresth/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs">Salesforce B2C Default Domains: Instance eCDN &amp; SSL for Devs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/salesforce-b2c-default-domains-instance-ecdn-ssl-for-devs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205958</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260406123400/Generic-A-1-e1775500470479.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260406123400/Generic-A-1-e1775500470479.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Building AI Automations with Prompt Builder Structured Outputs</title>
		<link>https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs#respond</comments>
		<pubDate>Thu, 02 Apr 2026 14:00:13 +0000</pubDate>
		<dc:creator><![CDATA[Charles Watkins]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Apex]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[Connect API]]></category>
		<category><![CDATA[Einstein]]></category>
		<category><![CDATA[Generative AI]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[Lightning Types]]></category>
		<category><![CDATA[Prompt Builder]]></category>
		<category><![CDATA[Spring '26]]></category>
		<category><![CDATA[Structured Outputs]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205925</guid>
		<description><![CDATA[<p>Learn how the Prompt Builder Structured Outputs feature delivers reliable, parseable JSON for Flow and Apex by eliminating hallucinated fields and the need for custom parsing code.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs">Building AI Automations with Prompt Builder Structured Outputs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="https://help.salesforce.com/s/articleView?id=ai.prompt_builder_get_to_know.htm&amp;type=5"><span style="font-weight: 400">Prompt Builder</span></a><span style="font-weight: 400"> makes it easy to ground a prompt in CRM data and invoke it from Flow or Apex. When your automation needs structured data, however, there can be a problem: the model&#8217;s response always comes back as a plain string. This isn’t a problem if you’re using it to summarize a record or draft an email to a customer. What about more complex workflows like </span><i><span style="font-weight: 400">creating </span></i><span style="font-weight: 400">a case from a customer email or extracting information from a contract? In those scenarios, you’re forced to write prompt instructions that beg the model to respond with JSON (and only JSON) and write an Apex class to parse and deserialize its output. This approach works — until the model wraps the response in Markdown fences, adds a friendly explanation, or hallucinates a field.</span></p>
<p><a href="https://help.salesforce.com/s/articleView?id=ai.prompt_builder_use_structured_outputs_responses.htm&amp;language=en_US&amp;type=5"><span style="font-weight: 400">Structured Outputs</span></a><span style="font-weight: 400"> moves format enforcement from your prompt to the platform. You define the shape of the response, and the platform guarantees the model returns valid, parseable JSON in that shape every time. This post walks through how to set it up and what you can build with it.</span></p>
<h2><span style="font-weight: 400">What Structured Outputs does</span></h2>
<p><span style="font-weight: 400">Structured Outputs applies system-level instructions to a prompt template that force the model to respond in a structured format, such as JSON. This is different from </span><i><span style="font-weight: 400">asking</span></i><span style="font-weight: 400"> for JSON in your prompt. The response format is </span><i><span style="font-weight: 400">enforced</span></i><span style="font-weight: 400"> by the platform, not by the model&#8217;s willingness to follow directions. You no longer need to specify a format in your prompt, provide example outputs, or strip Markdown fences from the response. </span></p>
<p><span style="font-weight: 400">You enable it by switching the prompt template&#8217;s response format from Default to JSON. Now your prompt template will </span><i><span style="font-weight: 400">always </span></i><span style="font-weight: 400">return parseable JSON for use with Flow or Apex.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205928" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260401145549/Salesforce-Prompt-Builder-UI-showing-the-Response-Format-dropdown-being-set-to-JSON-e1775076966542.png?w=1000" class="postimages" width="1000" height="563" alt="Salesforce Prompt Builder UI showing the Response Format dropdown being set to JSON" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Defining the response shape with Lightning types</span></h2>
<p><span style="font-weight: 400">Getting JSON back is only half the battle. If you don’t specify the response’s fields, the model will choose them for you — and there’s a good chance they’ll differ from what your automation expects, leading to an error or worse, a crash. To be useful in an automation, the response needs to include specific fields with specific data types </span><i><span style="font-weight: 400">every</span></i><span style="font-weight: 400"> time. In other words, it needs a type. </span></p>
<p><a href="https://developer.salesforce.com/docs/platform/lightning-types/guide/lightning-types-object.html"><span style="font-weight: 400">Object-based Lightning types</span></a><span style="font-weight: 400"> let you define that type declaratively. Instead of specifying the fields in the prompt and writing an Apex wrapper class to model the response, you create a Lightning type with the fields you need — be they a String, Boolean, Integer, Date, or DateTime — and assign it as the prompt template&#8217;s response structure. The platform then ensures every response conforms to it.</span></p>
<p><span style="font-weight: 400">To set one up:</span></p>
<ol>
<li style="font-weight: 400"><span style="font-weight: 400">Click </span><b>New Lightning Type</b><span style="font-weight: 400"> in the Response Structure search bar.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Name your type and add the fields you need.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Save your template.</span></li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205929" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260401145623/Prompt-Builder-Response-Structure-dropdown-showing-the-New-Lightning-Type-selection-e1775076997442.png?w=1000" class="postimages" width="1000" height="563" alt="Prompt Builder Response Structure dropdown showing the New Lightning Type selection" />
			  </span>
			</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205930" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260401145658/Edit-Lightning-Type-modal-in-Salesforce-configuring-caseType-reason-and-summary-String-fields-e1775077031911.png?w=1000" class="postimages" width="1000" height="628" alt="Edit Lightning Type modal in Salesforce configuring caseType, reason, and summary String fields" />
			  </span>
			</p>
<p><span style="font-weight: 400">From this point on, every invocation returns JSON with exactly those fields regardless of how the prompt or model changes. </span></p>
<h2><span style="font-weight: 400">Using Structured Outputs in Flow</span></h2>
<p><span style="font-weight: 400">With a Lightning type assigned, your prompt template&#8217;s output fields are directly available in Flow. Add the prompt template as an Action element, and its structured response fields show up as variables you can map to record fields, use in Decision elements, or pass to subflows. </span></p>
<p>For example, a prompt template that classifies incoming cases could return <code>caseType</code>, <code>reason</code>, and <code>summary</code> fields. An Update Records element can map those fields directly to the Case record as shown below. The entire automation can be done without writing a line of code.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205931" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260401145726/Salesforce-Flow-Builder-showing-structured-response-variables-mapped-to-Case-fields-in-an-Update-Records-element-e1775077063859.png?w=1000" class="postimages" width="1000" height="628" alt="Salesforce Flow Builder showing structured response variables mapped to Case fields in an Update Records element" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Using Structured Outputs in Apex</span></h2>
<p>In Apex, structured outputs eliminate the <code>JSON.deserialize</code> step entirely. Invoke the template through the <a href="https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_EinsteinLLM_static_methods.htm#apex_ConnectAPI_EinsteinLLM_generateMessagesForPromptTemplate_1"><u>Connect API</u></a>, and the response will include a <code>structuredResponse</code> property that you can cast directly. Each Object-based Lightning type has a system-generated Apex class accessible via the <code>LightningTypes</code> namespace.</p>
<pre language="apex">// Invoke the prompt template
ConnectApi.EinsteinPromptTemplateGenerationsRepresentation result =
    ConnectApi.EinsteinLlm.generateMessagesForPromptTemplate(
        templateApiName, input
    );

// Cast directly to your Lightning Type — no deserialization needed with
// LightningTypes.{Lightning Type API Name}
LightningTypes.ClassifyMessagingSessionResponse output =
    (LightningTypes.ClassifyMessagingSessionResponse)
    result.generations[0].structuredResponse;

// Use fields like any typed object
System.debug(output.issueCategory);
System.debug(output.title);
System.debug(output.summary);
</pre>
<p>The structured outputs approach skips all the boilerplate: no wrapper classes, no <code>JSON.deserialize</code>, and no try-catch for malformed strings and stray newlines. The platform handles the format and code handles the logic.</p>
<h2><span style="font-weight: 400">Limitations</span></h2>
<p><span style="font-weight: 400">Structured outputs solve the format problem but they don&#8217;t solve everything.</span></p>
<p><b>Field types don&#8217;t support nested objects or arrays.</b><span style="font-weight: 400"> Object-based Lightning types support only String, Boolean, Integer, Date, and DateTime properties. If you need to extract a list (for example, line items on a receipt), you&#8217;ll need to return that data as a JSON string field and parse it in Apex yourself. This is the biggest limitation for real-world workflows, so plan your data model around it.</span></p>
<p><b>Picklists aren&#8217;t natively supported.</b><span style="font-weight: 400"> You can list acceptable picklist values in the field description, but the model can still hallucinate values outside your list. Add a Flow Decision element or Apex validation to check the returned value against your expected options and fall back to a default when it doesn&#8217;t match.</span></p>
<p><b>Lightning type changes can silently break downstream automations.</b><span style="font-weight: 400"> Prompt templates are versioned, but the object-based Lightning types are not. If you rename or remove a field on a Lightning type that&#8217;s already wired into a Flow or Apex class, those automations will break. Create a new Lightning type for significant changes and update your automations deliberately. Don&#8217;t edit a live type in place.</span></p>
<p><b>Structured doesn&#8217;t mean accurate.</b><span style="font-weight: 400"> Structured Outputs guarantees that the response will be valid, parseable JSON in the shape you defined. It doesn&#8217;t guarantee the values are correct. Treat Structured Outputs as a mechanism for ensuring reliable formatting, not a substitute for validation logic. Add checks to catch values that don&#8217;t make sense.</span></p>
<h2><span style="font-weight: 400">Conclusion</span></h2>
<p><span style="font-weight: 400">With Structured Outputs, your prompt templates can speak the same language as the rest of Salesforce: typed, structured, and ready for automation. It’s time to delete that parsing code, simplify those flows, and start building AI workflows that just work.</span></p>
<h2><span style="font-weight: 400">Resources</span></h2>
<p><a href="https://help.salesforce.com/s/articleView?id=release-notes.rn_einstein_prompt_builder_lightning_type.htm&amp;release=260&amp;type=5"><span style="font-weight: 400">Spring &#8217;26 Release Notes | Structured Outputs</span></a><span style="font-weight: 400"><br />
</span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_EinsteinLLM_static_methods.htm"><span style="font-weight: 400">EinsteinLLMClass API documentation</span></a><span style="font-weight: 400"><br />
</span><a href="https://help.salesforce.com/s/articleView?id=ai.prompt_builder_use_structured_outputs_responses.htm&amp;type=5"><span style="font-weight: 400">Use Structured Outputs to Format Model Responses</span></a></p>
<h2><span style="font-weight: 400">About the author</span></h2>
<p><span style="font-weight: 400">Charles Watkins is a self-taught Developer Advocate at Salesforce and a software developer. He spends his time blogging, coding, and live streaming. You can follow him on </span><a href="https://www.linkedin.com/in/wcharlesw/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs">Building AI Automations with Prompt Builder Structured Outputs</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/building-ai-automations-with-prompt-builder-structured-outputs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205925</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260401140153/Building-AI-Automations-with-Prompt-Builder-Structured-Outputs-e1775073725104.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260401140153/Building-AI-Automations-with-Prompt-Builder-Structured-Outputs-e1775073725104.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Agentforce を使って自然言語で CRM 検索を体験しよう！</title>
		<link>https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce</link>
		<comments>https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce#respond</comments>
		<pubDate>Thu, 02 Apr 2026 01:58:06 +0000</pubDate>
		<dc:creator><![CDATA[odasho]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Agent Builder]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[CRM]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=205935</guid>
		<description><![CDATA[<p>&#26032;&#12375;&#12356; Agentforce &#12473;&#12479;&#12472;&#12458; &#12392; Agentforce Builder &#12364;&#25552;&#20379;&#38283;&#22987;&#12373;&#12428;&#12414;&#12375;&#12383;&#12290;&#26412;&#35352;&#20107;&#12391;&#12399;&#33258;&#28982;&#35328;&#35486;&#12392;&#12508;&#12479;&#12531;&#12463;&#12522;&#12483;&#12463;&#12395;&#12424;&#12427;&#35373;&#23450;&#25805;&#20316;&#12384;&#12369;&#12391; Salesforce &#12398;&#12487;&#12540;&#12479;&#12395;&#12450;&#12463;&#12475;&#12473;&#12289;&#36969;&#20999;&#12394;&#24773;&#22577;&#12434;&#21462;&#24471;&#12377;&#12427;&#12414;&#12391;&#12398;&#26041;&#27861;&#12395;&#12388;&#12356;&#12390;&#35299;&#35500;&#12375;&#12414;&#12377;&#12290;</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce">Agentforce を使って自然言語で CRM 検索を体験しよう！</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>みなさん、こんにちは！話しかけるだけで Salesforce のデータを取得できたら便利だと思いませんか？この記事では、Agentforce の Employee Agent に標準トピックを追加するだけで、自然言語による CRM 検索を実現する方法をステップバイステップで解説します。</p>
<p>動画での解説はこちらからご覧いただけます。</p>
<div class="video-container"><iframe loading="lazy" title="Agentforce を使って自然言語で CRM 検索を体験しよう！" width="500" height="281" src="https://www.youtube.com/embed/Zb9Qyk_P5J4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<blockquote><p><em>※この記事の内容を試すには、Agentforce が有効化された Salesforce 組織が必要です。まだ環境をお持ちでない方は、無料で取得可能な <a href="https://developer.salesforce.com/signup">Developer Edition</a> をご利用ください。</em></p></blockquote>
<h2>この記事のポイント</h2>
<ul>
<li>Employee Agent に <strong>General CRM</strong> トピックを追加するだけで、CRM の基本検索がエージェントで可能に</li>
<li>Agentforce Builder のキャンバスモードで、自然言語による取引先レコード表示</li>
<li>設定だけで完結し、コードは一切不要</li>
</ul>
<hr />
<h2>1. Agentforce スタジオ と Agentforce Builder の全体像</h2>
<h3>Agentforce スタジオ とは</h3>
<p>Agentforce スタジオ は、エージェントの作成・管理を一元的に行うためのハブです。Salesforce のアプリケーションランチャーから「Agentforce スタジオ」と検索して開くことができます。</p>
<p>Agentforce スタジオ には、用途に応じたエージェントのテンプレートが用意されています。</p>
<table>
<thead>
<tr>
<th><strong>エージェント</strong></th>
<th><strong>用途</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Agentforce Service Agent</td>
<td>顧客対応の自動化</td>
</tr>
<tr>
<td><strong>Agentforce Employee Agent</strong></td>
<td><strong>業務タスクの自動化</strong></td>
</tr>
<tr>
<td><span>フロー自動化エージェント</span></td>
<td><span>Flow Builder によるフロー要約</span></td>
</tr>
<tr>
<td>Slack 従業員ヘルプ</td>
<td>Slack 上での問い合わせ対応</td>
</tr>
</tbody>
</table>
<p>今回は <strong>Agentforce Employee Agent</strong> を使います。Employee Agent は社内ユーザー向けのエージェントで、Salesforce 内部のデータに対して自然言語で問い合わせができるようになります。</p>
<h3>Agentforce Builder とは</h3>
<p>Agentforce スタジオ でエージェントを選択すると、<strong>Agentforce Builder</strong> が開きます。Agentforce Builder は、エージェントの詳細な設定を行うための開発環境です。</p>
<p>Agentforce Builder には 2 つのビューがあります。</p>
<ul>
<li><strong>キャンバス（Canvas）</strong>: ノーコードのビジュアルエディタ。Agent Script をわかりやすいブロック形式で表示し、直感的にエージェントを構成できます</li>
<li><strong>スクリプト（Script）</strong>: Agent Script のコードを直接編集できるプロコード向けビュー</li>
</ul>
<p>今回はキャンバスを中心に操作していきます。</p>
<h3>トピックとは</h3>
<p>トピックは、エージェントが対応できる「業務領域」を定義するものです。1 つのエージェントに複数のトピックを追加でき、トピックごとに対応可能なアクション（検索、表示、更新など）が定義されています。</p>
<p>今回追加する <strong>General CRM</strong> は、Salesforce が標準で用意しているトピックで、以下のアクションがあらかじめ組み込まれています。</p>
<ul>
<li>取引先の検索・表示</li>
<li>取引先責任者の検索</li>
<li>商談の検索</li>
<li>リードの検索</li>
</ul>
<p>つまり、このトピックをエージェントに追加するだけで、CRM の基本的なデータ検索がエージェントでできるようになります。</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205949" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402022111/2026-04-02_17-20-11.png?w=1778" class="postimages" width="1778" height="1000" alt="" />
			  </span>
			</p>
<hr />
<h2>2. 事前準備</h2>
<p>作業を始める前に、以下を確認してください。</p>
<ul>
<li>Salesforce 組織（Developer Edition、Sandbox、または本番環境）</li>
<li>Agentforce エージェントが有効化されていること</li>
<li>取引先にサンプルデータが投入されていること（Developer Edition にはデフォルトで Edge Communications などのサンプルデータが含まれています）</li>
</ul>
<blockquote><p><em>※ 今回のデモでは、Developer Edition に標準で含まれている「Edge Communications」のサンプルデータを使用します。サンプルデータを削除済みの場合は、新しい Developer Edition を取得するか、手動で取引先レコードを作成してください。</em></p></blockquote>
<hr />
<h2>3. Employee Agent に General CRM トピックを追加する</h2>
<h3>ステップ 1：Agentforce スタジオ を開く</h3>
<ol>
<li>Salesforce にログイン</li>
<li>アプリケーションランチャーをクリック</li>
<li>「Agentforce スタジオ」と検索して開く</li>
<li>エージェントページが表示される</li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205940" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402013703/2026-04-02_16-24-56.png?w=1797" class="postimages" width="1797" height="1000" alt="" />
			  </span>
			</p>
<h3>ステップ 2：Employee Agent を作成</h3>
<ol>
<li>エージェントページで <strong>「新しいエージェント」</strong> をクリック</li>
<li>Agentforce Builder が開く</li>
<li><strong>「Agentforce Employee Agent」</strong> を<strong>「選択」</strong></li>
<li>「<strong>エージェント名</strong>」と「<strong>API 参照名</strong>」を入力し、「<strong>始めましょう</strong>」をクリック</li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205941" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402013707/2026-04-02_16-31-24.png?w=1799" class="postimages" width="1799" height="1000" alt="" />
			  </span>
			</p>
<h3>ステップ 3：General CRM トピックを追加する</h3>
<ol>
<li>Agentforce Builder の左パネル（エクスプローラー）で <strong>「トピック」</strong> セクションを確認</li>
<li>トピックの追加オプション（「＋」ボタン）をクリック</li>
<li>「アセットライブラリから追加」をクリック</li>
<li>標準トピックの一覧から <strong>「General CRM」</strong> を選択して追加</li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205943" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402013952/2026-04-02_16-39-07.png?w=1797" class="postimages" width="1797" height="1000" alt="" />
			  </span>
			</p>
<p>追加後、General CRM トピックの中身を確認してみましょう。取引先の検索、取引先責任者の検索、商談の検索、リードの検索など、CRM の基本操作がアクションとしてすでに定義されているのがわかります。</p>
<h3>ステップ 4：保存する</h3>
<ol>
<li>Agentforce Builder の <strong>「保存」</strong> ボタンをクリック</li>
</ol>
<blockquote><p><em>※ 作業中はこまめに保存することをおすすめします。Agentforce Builder では、保存しないまま画面を離れると変更内容が失われる場合があります。</em></p></blockquote>
<hr />
<h2>4. キャンバスモードで自然言語テスト</h2>
<p>設定が完了したら、Agentforce Builder のプレビュー機能を使って、エージェントの動作をテストしてみましょう。</p>
<h3>プレビューの開き方</h3>
<ol>
<li>Agentforce Builder 内で <strong>「Preview」</strong> タブをクリック</li>
<li>チャット形式のテスト画面が表示される</li>
</ol>
<h3>自然言語でのテストシナリオ</h3>
<p>以下の 3 つのプロンプトを順に試してみましょう。特定の取引先の中身を段階的に深掘りしていく流れで、自然言語検索の実力を確認できます。</p>
<p>今回は、Developer Edition にデフォルトで含まれているサンプルデータ「Edge Communications」を使います。</p>
<h4>テスト 1：取引先の概要を聞く</h4>
<pre><code>取引先の Edge Communications について教えて
</code></pre>
<p><strong>期待される結果</strong>: Edge Communications の取引先レコードが返ってきます。会社名、業種、所在地、電話番号、年間売上といった基本情報がまとめて表示されます。SOQL を一切書かずに、会社名を伝えるだけでレコードの中身を引き出せていることがポイントです。</p>
<h4>テスト 2：関連情報を深掘りする</h4>
<pre><code>Edge Communications の取引先責任者を教えて
</code></pre>
<p><strong>期待される結果</strong>: Edge Communications に紐づく取引先責任者（Contact）の一覧が返ってきます。氏名、役職、メールアドレスなどが表示されます。取引先レコード単体だけでなく、関連オブジェクトの情報も自然言語で引き出せることがわかります。</p>
<h4>テスト 3：さらに別の関連情報を聞く</h4>
<pre><code>Edge Communications に関連する商談を見せて
</code></pre>
<p><strong>期待される結果</strong>: Edge Communications に紐づく商談（Opportunity）の一覧が返ってきます。商談名、フェーズ、金額、完了予定日などが表示されます。</p>
<blockquote><p><em>※ Developer Edition のサンプルデータには Edge Communications の取引先責任者や商談があらかじめ含まれています。もし結果が返らない場合は、サンプルデータが削除されていないかご確認ください。</em></p></blockquote>
<p>このように、1 つの取引先を起点に「概要 → 取引先責任者 → 商談」と自然言語で深掘りしていけるのが、General CRM トピックの強みです。</p>
<h3>プレビューの活用ポイント</h3>
<p>プレビューでエージェントの応答を確認する際、右側パネルにはエージェントの推論プロセスが表示されます（インタラクション概要）。どの トピックが選択され、どのアクションが実行されたかを確認できるため、想定どおりの動作をしているかのデバッグに役立ちます。</p>
<hr />
<h2>5. 注意事項</h2>
<h3>作業後はこまめに「保存」</h3>
<p>Agentforce Builder では、保存しないまま画面を離れると変更内容が失われることがあります。トピックの追加やアクションの設定変更を行ったら、都度「保存」をクリックしてください。</p>
<h3>Agentforce Builder はテストやプレビュー用途</h3>
<p>今回使用した Agentforce Builder のプレビュー機能は、開発者がエージェントの動作をテスト・デバッグするための環境です。実際にエンドユーザーにエージェントを使ってもらうには、Salesforce の画面上にエージェントパネルを配置したり、Slack と連携するなど、別途チャネルの設定が必要になります。</p>
<h3>応答精度はデータに依存</h3>
<p>General CRM トピックの検索精度は、組織内のデータの量と品質に左右されます。今回のデモで使用した Edge Communications のように、取引先責任者や商談が紐づいたレコードであれば、関連情報の深掘りまでスムーズに行えます。一方、住所・業種などの項目が空欄のレコードが多い場合、期待どおりの検索結果が返らないことがあります。</p>
<hr />
<h2>6. よくあるトラブルと対処法</h2>
<h3>General CRM トピックが選択肢に表示されない</h3>
<p><strong>原因</strong>: Agentforce エージェントが有効化されていない、または組織のエディションが対応していない</p>
<p><strong>対処</strong>: 設定画面で Agentforce エージェントが有効になっているか確認してください。Developer Edition では標準で無効化されています</p>
<h3>期待した検索結果が返ってこない</h3>
<p><strong>原因</strong>: 組織にサンプルデータが入っていない、またはサンプルデータが削除されている</p>
<p><strong>対処</strong>: Developer Edition を新規取得した直後であれば、Edge Communications などのサンプルデータが含まれています。既存の環境でサンプルデータを削除済みの場合は、取引先レコードを手動で作成するか、新しい Developer Edition を取得してください</p>
<h3>日本語でのプロンプトに対して英語で応答される</h3>
<p><strong>原因</strong>: エージェントの言語設定やユーザーのロケール設定</p>
<p><strong>対処</strong>: ユーザーの言語設定が日本語になっていることを確認してください。また、プロンプトをより具体的に日本語で書くことで、日本語での応答が返りやすくなります</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-205944" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260402015019/2026-04-02_16-49-48.png?w=1797" class="postimages" width="1797" height="1000" alt="" />
			  </span>
			</p>
<hr />
<h2>7. 次のステップ</h2>
<p>今回は標準の General CRM トピックを使いましたが、Agentforce ではさらに高度なカスタマイズが可能です。</p>
<h3>カスタムトピック</h3>
<p>自社固有の業務ルールやオブジェクトに対応したカスタムトピックを作成できます。たとえば「在庫管理トピック」や「承認依頼トピック」など、業務に合わせたエージェントを構築できます。</p>
<h3>Agent Script</h3>
<p>Agent Script を使うと、エージェントの推論にプログラム的な制御（if / else 条件分岐、変数、フォローアップアクションなど）を追加できます。キャンバスビューで視覚的に設定することも、スクリプトビューでコードを記述することもできます。</p>
<h3>チャネル設定</h3>
<p>作成したエージェントを実際のユーザーに公開するには、以下のようなチャネル設定が必要です。</p>
<ul>
<li>Salesforce 画面上へのエージェントパネルの配置</li>
<li>Slack との連携</li>
</ul>
<hr />
<h2>まとめ</h2>
<p>Agentforce の Employee Agent に General CRM トピックを追加するだけで、自然言語による CRM データの検索・表示が実現できます。コードを書く必要はなく、設定だけで完結します。まずは <a href="https://developer.salesforce.com/signup">Developer Edition</a> で試してみてください。</p>
<hr />
<h2>参考リソース</h2>
<ul>
<li>Salesforce Help: <a href="https://help.salesforce.com/s/articleView?id=ai.copilot_intro.htm&amp;type=5">エージェントの設計と実装</a><a href="https://help.salesforce.com/s/articleView?id=ai.copilot_intro.htm&amp;type=5"></a>（日本語）</li>
<li>Salesforce Help: <a href="https://help.salesforce.com/s/articleView?id=ai.agent_builder_studio.htm&amp;type=5">Agentforce Studio および新しい Agentforce Builder へのアクセス</a>（日本語）</li>
<li>Trailhead: <a href="https://trailhead.salesforce.com/content/learn/modules/new-agentforce-builder-quick-look/explore-the-new-agentforce-builder">Explore the New Agentforce Builder</a>（英語）</li>
</ul>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce">Agentforce を使って自然言語で CRM 検索を体験しよう！</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/04/try_searching_your_crm_using_natural_language_with_agentforce/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">205935</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260402021026/2026-04-02_17-09-57.png?w=2000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260402021026/2026-04-02_17-09-57.png?w=2000" medium="image" />
	</item>
	</channel>
</rss>
