Advanced
How to build advanced prototypes on Figma
Quick Answer
Build advanced Figma prototypes by setting up component variants for different states, creating complex interactions with overlays and smart animate, and implementing conditional logic with variables. Use advanced features like device frames, scrolling behaviors, and micro-interactions to create realistic user experiences.
Prerequisites
- Basic Figma interface knowledge
- Understanding of components and variants
- Familiarity with auto-layout
- Experience with basic prototyping
1
Set up component variants and states
Create a master component for interactive elements like buttons or cards. In the Design panel, click the + next to your component to add variants. Set up properties like
Use Instance swap properties to allow dynamic content changes within your components.
State (default, hover, pressed), Type (primary, secondary), and Size (small, medium, large). Name your variants systematically using the format Property=Value for better organization.Use Instance swap properties to allow dynamic content changes within your components.
Tip
Keep variant names consistent across all components to maintain design system coherence
2
Configure advanced interaction triggers
Switch to Prototype mode and select your interactive element. In the Interaction details panel, choose from advanced triggers like
Use
Mouse enter, Mouse leave, While hovering, or Key/Gamepad. Set up While hovering interactions for micro-animations that play continuously during hover states.Use
After delay triggers to create timed sequences and automatic transitions between states.Tip
Combine multiple triggers on the same element to create complex interaction patterns
3
Implement smart animate and overlays
For smooth transitions, use Smart animate as your animation type. Ensure layers have matching names between frames for automatic morphing. Set Easing to
Create modal dialogs and tooltips using Overlay animations. Configure
Ease out or custom bezier curves for natural motion.Create modal dialogs and tooltips using Overlay animations. Configure
Position (center, top, manual), Close when clicking outside, and Background properties. Use Move in and Move out directions for slide animations.Tip
Keep animation durations between 200-500ms for optimal user experience
4
Set up variables for conditional logic
Navigate to Design > Local variables to create boolean, string, or number variables. Create variables like
Apply Conditional logic to show/hide components or change properties based on variable states. Use the
isLoggedIn, currentStep, or selectedTab. In prototype mode, use Set variable actions on interactions to change variable values.Apply Conditional logic to show/hide components or change properties based on variable states. Use the
if/else logic in component properties to create dynamic prototypes.Tip
Document your variables and their purposes in the description field for team collaboration
5
Configure advanced scrolling and overflow
Select frames that need scrolling and set Overflow behavior to
Use Fix position when scrolling on navigation bars or floating action buttons. Create Sticky headers by positioning elements outside the scrolling container and using absolute positioning.
Vertical scrolling, Horizontal scrolling, or Both. Enable Scrolling physics for realistic momentum scrolling.Use Fix position when scrolling on navigation bars or floating action buttons. Create Sticky headers by positioning elements outside the scrolling container and using absolute positioning.
Tip
Test scrolling behavior on different device sizes to ensure consistent experience
6
Add device frames and presentation settings
In the prototype panel, select appropriate Device frames from the dropdown (iPhone, Android, Desktop, etc.). Choose Background colors that complement your design.
Configure Starting frame and enable Hotspot hints for user testing. Set up Flow starting points for multiple user journeys within the same file. Use Presentation view settings to customize how stakeholders view your prototype.
Configure Starting frame and enable Hotspot hints for user testing. Set up Flow starting points for multiple user journeys within the same file. Use Presentation view settings to customize how stakeholders view your prototype.
Tip
Create separate flows for different user personas or feature sets using multiple starting points
7
Test and optimize prototype performance
Use Present mode to test all interactions, transitions, and user flows. Check for broken links, missing interactions, and performance issues. Verify that Back navigation works correctly throughout your prototype.
Optimize large files by reducing image sizes, simplifying complex animations, and removing unused components. Use Component instances instead of duplicated elements to improve performance.
Optimize large files by reducing image sizes, simplifying complex animations, and removing unused components. Use Component instances instead of duplicated elements to improve performance.
Tip
Test your prototype on actual devices using the Figma mobile app for the most accurate user experience
Troubleshooting
Smart animate not working between frames
Ensure layer names are identical between frames and check that elements have the same layer hierarchy. Avoid nesting animations too deeply within auto-layout containers.
Variables not updating component states
Verify that variable names are spelled correctly and match exactly in both the Set variable action and Conditional logic. Check that the variable scope is set to the correct level.
Overlay positioning incorrectly on different screen sizes
Use Manual positioning for overlays and set constraints properly. Consider using Center positioning for modals or create responsive overlay components with auto-layout.
Prototype running slowly or freezing
Reduce the number of simultaneous animations, optimize image file sizes, and simplify complex auto-layout structures. Break large prototypes into smaller, focused flows.
Ready to get started with Figma?
Put this tutorial into practice. Visit Figma and follow the steps above.
Visit Figma →