Inline S-Control
An Inline S-Control is a retired Salesforce mechanism for embedding custom HTML, JavaScript, or CSS directly into a Salesforce record page''s body, alongside the standard page layout sections.
Definition
An Inline S-Control is a retired Salesforce mechanism for embedding custom HTML, JavaScript, or CSS directly into a Salesforce record page''s body, alongside the standard page layout sections. Inline S-Controls were a specific variant of the broader HTML S-Control feature; they rendered inside a section of the page layout (not behind a button or link) and were the predecessor to Visualforce inline pages and Lightning Components placed inside Lightning Record Pages.
Like the rest of the S-Control family, Inline S-Controls have been deprecated since 2010 and no longer render in Lightning Experience. Salesforce Classic still renders them for backwards compatibility, but the create-edit interface was removed from Setup years ago. The replacement path is the same as for other S-Controls: rewrite the embedded content as a Visualforce page added to the layout as an inline Visualforce section, or as a Lightning Web Component placed into a Lightning Record Page. Any inherited org with active Inline S-Controls needs migration before it can fully adopt Lightning.
Why Inline S-Controls existed and how they were used
The Inline S-Control variant
Salesforce supported four S-Control types: HTML, URL, Snippet, and the Inline variant of HTML. Inline S-Controls placed the HTML directly inside an iframe on the record page layout, which gave admins a way to surface custom UI without users clicking a button. The pattern was used for custom mini-dashboards, related-record summaries, and embedded third-party widgets.
Page layout integration
Admins added an Inline S-Control to a section of the page layout in Setup, Object Manager, Page Layouts. The section rendered the S-Control as an iframe at the configured height. Multiple Inline S-Controls could coexist on the same layout, each in its own section. The platform handled the iframe sizing and message passing between the S-Control and the parent Salesforce frame.
The Visualforce inline page replacement
Visualforce introduced inline pages in 2008. An admin builds a Visualforce page (apex:page) and adds it to the layout as a Visualforce section. The Visualforce page replaces the Inline S-Control with a supported, modern framework backed by Apex controllers. Most Inline S-Control migrations target this pattern as the simplest like-for-like replacement.
Lightning Web Component as the modern path
For Lightning Experience, the replacement is a Lightning Web Component placed in a region of a Lightning Record Page. The LWC reads the record context via @api recordId, renders custom UI, and respects Lightning Locker security. Lightning Record Pages are the dynamic, role-aware successor to the static page-layout-plus-Inline-S-Control pattern.
Lightning Experience incompatibility
Inline S-Controls do not render in Lightning Experience. An org with Inline S-Controls on standard page layouts can switch to Lightning, but the layout regions where the S-Control would render show as empty. This is the visible signal that an org has S-Control tech debt blocking full Lightning adoption.
AppExchange package implications
Several older AppExchange packages were built around Inline S-Controls. These packages no longer install on new orgs and may not function correctly in Lightning. Customers running these packages need a migration plan: contact the package vendor for a Lightning-ready version, or replace the package functionality with a modern alternative.
Documentation drift
Older Salesforce training material and AppExchange documentation reference Inline S-Controls as a valid pattern. The references are historical only; current platform design replaces them with Visualforce inline pages or Lightning Components. Treating older docs as authoritative leads to broken implementations.
Migrate an Inline S-Control to a Lightning-friendly equivalent
The migration steps are the same as for any S-Control: inventory, pick a target framework, rewrite, swap references, retire the old asset.
- Inventory Inline S-Controls
Setup, Custom S-Controls. Filter by Type = HTML and look for Inline-rendered ones referenced in page layouts.
- Pick the target framework
Visualforce inline page for a like-for-like replacement; Lightning Web Component for modern Lightning Experience integration.
- Rewrite the HTML and JavaScript
Translate the S-Control content into the target framework. Replace AJAX Toolkit calls with @AuraEnabled Apex methods. Use the framework''s component library for UI elements.
- Add to the page layout or Lightning Record Page
For Visualforce: add the inline page section to the layout. For LWC: drop the component onto the Lightning Record Page.
- Remove the Inline S-Control reference
Edit the page layout, remove the S-Control section. Save the layout.
- Test and delete
Test the new implementation. Once confirmed working, delete the original Inline S-Control to clean up metadata.
- Inline S-Controls do not render in Lightning. The empty layout region is the visible signal of unfinished migration.
- The S-Control editor is removed; existing Inline S-Controls cannot be modified, only replaced.
- AppExchange packages built on Inline S-Controls may be unsupported in current Salesforce releases. Plan vendor outreach as part of the migration.
- Lightning Web Components have stricter security than Inline S-Controls (Lightning Locker). Some JavaScript patterns that worked in S-Controls do not work in LWC.
Trust & references
Cross-checked against the following references.
- S-Controls RetirementSalesforce Help
- Visualforce Developer GuideSalesforce Developers
Straight from the source - Salesforce's reference material on Inline S-Control.
- Lightning Web Components Developer GuideSalesforce Developers
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. What were Inline S-Controls?
Q2. What's the modern replacement?
Q3. Should you use Inline S-Controls today?
Discussion
Loading discussion…