Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Contact Us
  • Home
  • Figma Design – Figma Learn
  • Create prototypes
  • Create prototypes

Preserve scroll position in prototypes

Written by Figma Man

Updated at June 19th, 2025

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Administration – Figma Learn
    Manage files and projects Manage a team Manage your account Manage a Figma organization Manage Enterprise plan settings and permissions Billing Manage Figma in a school
  • Figma Design – Figma Learn
    Create prototypes Import and export Create designs Tour the interface Dev Mode Work together in files Build design systems Figma Draw
  • Get started – Figma Learn
    Set up your account Layers 101
  • FigJam – Figma Learn
    Import and export Run meetings Work on boards Tour the interface
  • Community – Figma Learn
    Explore the Community Creator tools and resources
  • Help – Figma Learn
    Troubleshoot Common questions Work with support
  • Work across Figma – Figma Learn
    Figma AI Work across Figma
  • Courses, tutorials, projects – Figma Learn
    Courses Projects
  • Figma Slides – Figma Learn
    Create and edit slides Present slide decks Tour the interface Import and export
  • Figma Buzz – Figma Learn
    Templates in Figma Buzz Create and edit assets in Figma Buzz Overview
  • Figma Make – Figma Learn
    Tour the interface Work with Figma Make
  • Figma Sites – Figma Learn
    Design a site Create webpages and breakpoints Make your site interactive Preview and publish a site Tour the interface
+ More

Table of Contents

Preserved by default Prepare layers for preserving scroll position Match nested objects Match top-level frames Rename layers in bulk Reset scroll position Update old state management: Preserve scroll position

Before you start

Who can use this feature

Available on any team or plan.

Anyone with can edit access to a file can create prototypes.

In prototypes, you can navigate through frames to demonstrate a user journey across multiple pages or screens.

Preserving scroll position lets you maintain the same scroll position when you transition between frames. This applies to both vertical and horizontal scroll locations. In older versions of Figma, preserving scroll position was something that needed to be enabled as a part of prototype interactions. Now, scroll position is preserved by default after your layers are prepared for preserving scroll position.

In terms of state management, the concept of "preserve scroll position" is a combination of state memorization and state sharing. State memorization preserves the scroll position of content in a given layer of a prototype. State sharing lets the scroll position of content be shared by different layers that meet certain criteria, thus preserving the scroll position throughout the prototype.

A prototype navigates between two frames. The map object on each frame stays scrolled to the same location.

Note: State management allows us to maintain object properties and states when navigating in and across frames when playing prototypes—and can apply to scroll position, interactive components, and videos.

Preserved by default

In your prototypes, the scroll position of top-level frames and scrollable layers is memorized by default.

For example, you have a prototype of a map app. In order to simulate the experience of scrolling the map, one of the frames contains an image of the map that overflows the frame. By default, when you navigate away from that frame in the prototype, the current scroll position of the map is memorized. When you return to the frame, the map is at the same position as when you left the frame earlier.

The scroll position of layers is shared by default if the layers match. Top-level frames can have identical names or identical prefixes, in order to help differentiate between frames in the prototype.

If you want an interaction to reset the scroll position of layers in a top-level frame (the old state management behavior), you can override the state memorization and state sharing behavior with Reset scroll position.

Learn more about prototype state management →

Prepare layers for preserving scroll position

For interactions in your protoypes, scroll position is preserved between matching objects or frames.

Match nested objects

Nested objects are objects placed within another layer or frame. To match nested objects across frames, both of the following criteria must be met:

  • Objects have identical names
  • Objects have the same set of parents across top-level frames

Match top-level frames

Top-level frames are frames placed directly on the canvas. To match top-level frames, only one of the following criteria needs to be met:

  • Frames have identical names
  • Frame names have a common prefix, followed by a forward slash. For example, frames Checkout / Empty and Checkout / Complete match.

Rename layers in bulk

If you have unique names for each layer, but would like match them so scroll position is automatically shared, you can rename multiple layers at the same time to match, or (for top-level frames) add a prefix to the existing name (for example, Prefix / Name).

  1. Select the layers you want to rename by doing one of the following:
    • Select an initial object on either the canvas or layers panel, then hold down Shift while clicking additional objects.
    • Drag your cursor across any objects you want to select. This creates a blue box around the selected objects.
  2. Open up the rename layers panel:
    • Mac: Command R
    • Windows: Control  R
  3. In the Rename to field, enter a name name, or a prefix that you want to add to the layer name. For a prefix, include a forward slash after the prefix name.
  4. If you're adding a prefix, click the Current Name button to add the current layer name after the forward slash.
  5. Click Rename to apply the changes.

A user renames layers from the Rename Layers modal.

Learn more about renaming layers →

Reset scroll position

To override the default behavior of state memorization and state sharing between layers, you can enable Reset scroll position when you're configuring an interaction.

To reset the scroll position:

  1. Click on a prototype connection to open the Interaction panel.
  2. In the State section of the panel, click the Reset scroll position checkbox.
    ui3-reset-scroll-position.png

Update old state management: Preserve scroll position

On May 24, 2023, Figma updated its prototype state management controls. This update changed how preserve scroll position is applied on interactions.

To preserve scrolling between top-level frames, the top-level frame names have to be identical or have a matching prefix.

An abstract graphic. The old state management option shows a Preserve scroll position toggle, while the new state management option shows the frame names have matching prefixes.

  Turn off preserve scroll position Turn on preserve scroll position
New state management Use non-matching layer names or check reset scroll position 

Use matching layer names

(Top-level frame names can be identical or have a matching prefix)

Old state management Toggle off the preserve scroll position setting Toggle on the preserve scroll position setting

Any new interaction automatically follows new state management rules. To update an old interaction to the new state management controls, click the Update button on the Interaction details modal.

ui3-update-state-management.png

 

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • Create overlays in your prototypes
  • Use sections in prototyping
  • Prototype scroll and overflow behavior
  • Create and manage prototype flows
  • Connect your prototype
  • Blog
  • Best practices
  • QR code generator
  • Color wheel
  • Colors
  • Color picker
  • Color palettes
  • Color palette generator
  • Color contrast checker
  • Font Library
  • Templates
  • Developers
  • Integrations
  • Affiliate program
  • Resource library
  • Reports and insights
  • Support
  • Status
  • Legal and privacy
  • Modern slavery statement
  • Climate disclosure statement
  • COMPARE
  • Sketch
  • Adobe XD
  • Framer
  • Miro
  • COMPANY
  • Events
  • Customers
  • Careers
  • Newsroom
Expand