Skip to main content

Context and Problem

Figma's current Instance Swap Override is a useful feature for swapping singular instances within a component. However, it becomes cumbersome and time-consuming when applied to more complex design patterns, such as:

  • Managing dynamic content for cards, sidebars, and templates.
  • Creating unique combinations of content within reusable components.

Currently, designers must create a new component for each unique content combination, which leads to bloated libraries, repetitive work, and a loss of efficiency. This approach also lacks flexibility for managing dynamic layouts, which are more naturally represented in code through structures like parent-child relationships in HTML or Children props in React.

Proposed Feature: Component "Child" or "Slot" Override

Introduce a new override type, referred to as "Child" or "Slot," allowing component creators to define designated areas within a component where users can **drag and drop any content**. This feature would streamline the workflow and provide greater flexibility for component composition.

How It Would Work

  1. Component Creation:
    • Designers define a "Child" or "Slot" area in a component.
    • This area acts as a placeholder for dynamic content, similar to slots in web frameworks like React or Vue.
  2. Using the Component:
    • Users can drag and drop other Figma elements (e.g., text, images, components) into the "Child" or "Slot" area of the instance.
    • Content placed in the slot automatically inherits constraints, responsiveness, and autolayout as defined by the component.  

Benefits

  1. Enhanced Efficiency: Avoid creating redundant components for every unique content variation, simplifying design files.
  2. Improved Flexibility: Enable dynamic layouts, allowing users to easily customize container component / template content without breaking the component.
  3. Closer Alignment to Code: Mimic parent-child relationships in HTML or Children props in React, bridging the gap between design and development workflows.

Comparison with Instance Swaps

Unlike instance swaps, which require pre-defined component options, the "Child" or "Slot" override provides true content flexibility by allowing users to drop in any content without creating additional components.

Use Cases

  • Dynamic Card Content: Designers can create a single card component with a "Slot" for the content area, letting users drag in text, icons, or buttons dynamically.
  • Customizable Layouts: Sidebars, headers, and templates can easily support diverse configurations without requiring multiple versions of the same base component.
  • Responsive Prototypes: Users can test and iterate on different content arrangements quickly within a single instance.

This feature would streamline workflows and make Figma an even more powerful tool for collaborative, efficient, and scalable design work. 

So sad that this wasn’t a part of new features at Config 2025.  Without slot components, it is very hard to create large designs with many pages.  For instance, I have a modal and I want it to be essentially the same layout but I want the interior contents to be different.  I don’t have a lot of options today to make a common layout but put content into that layout.  I can use swap components now, but that still means I need to maintain a bunch of components separate from my modal component and then swap them in when needed in a particular screen.  Why can’t it be like code where I can make my screen but put my content inside of a slot, inside of the parent?  In this way, I can create my modal with my content but inherit the frame and structure from the main component.  Maintaining a hundred components to swap in and out of another component is a nighmare.


Very needed! My team hates swapping slots in components (Modal, Menu, Table etc.) each time they need to customize its content, so instead they just detach everything, which renders higher component abstaractions in design systems pretty useless 🥲

It could work similar to how it’s already done in ​@Mr.Biscuit’s InstanceUtils plugin (edit in place), but natively! 


Reply