đ§ Slots is currently in open beta: Experiencing changes, bugs, or performance issues are expected during this period. Learn more about how we're rolling slots out to you.
Before you Start
Who can use this feature
Anyone with can edit access to a design file can add slots to components.
New to creating slots? Learn how slots brings flexibility to components.
This guide is for design system teams and maintainers who have previously set up placeholder slots in their components.
Your team may have been using workarounds like:
- Creating placeholder frames labeled
Content,Swap or replace meorInsert here - Exposing nested instances through instance swap properties
These patterns worked as temporary solutions but are difficult to scale and maintain.
Slots in Figma replaces all of these patterns with a simpler, native way to define where content can go. In this article, weâll cover:
- How to migrate placeholder slots to using Figmaâs native slots feature.
- Different migration paths, and the pros and cons of each approach
Step 1: Audit your library for placeholder slots
Begin your migration by reviewing your library to find components that use placeholder slots.
Look for components that:
- Are main components labeled âSlotâ that have been reused across multiple components
- Contain layers or instances named âSlotâ or something similar
- Include frames used as placeholders for content, especially if it has an instance swap property applied
Tip: Use â Command F (Mac) or â Control F (Windows) to search for the word âSlotâ in your file. This is a quick way to surface all components, frames, or instances that might be acting as placeholder slots.
Step 2: Choose a migration path
There are a few ways to migrate to using Figmaâs slots feature, but the right path will depend on how your components are structured. Each option will have different trade-offs in level of effort it requires and the impact on existing components.
The following workflows are two of the most common migration paths. Keep in mind you may find a process that works best for your team beyond what has been listed on this page.
Migration path 1: If using a âslot placeholderâ component across multiple components
Does your set up look something like this? Youâve created a dedicated main component called âSlotâ or something similar that contains a placeholder inside. You then nest instances of this âSlotâ component inside other main components, along with instructions for designers to swap it with a local component using the instance swapper.
In practice, it looks something like this:
- The âslotâ is built as its own main component and acts as a reusable placeholder
- Other components include the âslotâ it as a nested instance to indicate the area where content can go
- Designers replace the placeholder by manually swapping the nested instance
- If there is no instance swap property configured, swapping happens by using local components
Recommendation
If youâre using a âslot placeholderâ component across multiple parent components, we recommend replacing those placeholder instances with native slots inside each parent component. Rather than maintaining a central slot placeholder, each parent component should now have its own frame with a slot property assigned.
Pros
- Aligns with how native slots are designed to work (each component owns its own slot)
- Frees you from dependency on a shared placeholder component
- Easier to manage visual styles and behaviors per component
Cons
- Requires editing multiple main components
- If designers have customized instances of the âslot placeholderâ, the overrides on the parent component wonât carry over
- Requires communicating with your team that the shared âslot placeholder' component is deprecated and will no longer update
How to migrate
- Open each parent component that includes a nested instance of the âslot placeholder.â
- Select the âslot placeholderâ instance, then either detach the instance if you wish to keep its properties and contents, or delete it.
- If you deleted the âslot placeholderâ instance, insert a new frame in its place and adjust it to match the original slot placeholderâs layout and size.
- Right-click the frame and select Convert to Slot.
- Edit the slotâs name, description, and optionally define the preferred values.
- Repeat this process for other components that previously nested the shared âslot placeholderâ.
- Test with different component insertions to ensure layout, constraints, and resizing work as expected.
- Once all main components have their own slots, deprecate the old shared âslot placeholder' by placing it in a different page or section, and hiding it from publishing.
- Publish the updates to your team library.
Migration path 2: If using a variant-based slot placeholder
Does your set up look something like this? You have a component set called âBuilding Block/Content,â or something similar, and it contains at least two variantsâone variant with existing content and one âslotâ variant. The slot variant may contain a visual placeholder along with instructional text.
This component set also contains an instance swap property called something like âSlot swapâ where the value is set to the âslotâ variant. This lets authors âswap inâ that slot variant wherever they need a freeform container.
In other main componentsâsuch as in cards, modals, and listsâan instance of the âBuilding Block/Contentâ component is added. This exposes the âSlot swapâ instance swap property, which allows designers to swap the âslotâ variant with other instances.
Structurally:
- The component set acts as a âslot containerâ
- The slot variant acts as a placeholder visual for guidance.
- The instance swap property controls which variant is shown.
Recommendation
If youâre using variants and the instance swap property, this pattern cannot be converted directly because the instance swap property and variant logic will disappear once you convert the area into a a slot. We recommend that you rebuild the asset using Figmaâs native slots feature.
Pros
- Uses native slots: no hacks or property bindings needed
- Designers can insert any content, not just predefined components
- Preferred values give you the same âguidedâ swapping experience but cleaner
- No more variants needed
Cons
- This is effectively a rebuild
- Variant driven placeholder logic is lost
- Existing Slot swap bindings will break, so instances wonât auto update
- Needs careful documentation for downstream teams during transition
How to migrate
- Open each parent component that uses an instance from the âbuilderâ component set.
- Remove the nested instance of the builder from the parent component.
- Insert a new frame in its place and adjust it to match the original slot placeholderâs layout and size.
- Right-click the frame and select Convert to Slot.
- Edit the slotâs name, description, and optionally define the preferred values.
- Test with different component insertions to ensure layout, constraints, and resizing hold up.
- Deprecate the old builder component set by placing it in a different page or section, and hiding it from publishing, and update documentation.
- Publish a new version of the component.