Repeat, Runs On & Conditional Playback in Webflow

Advanced 43:03 webflowgsapinteractionsaccessibilityperformance

Master GSAP interaction settings in Webflow — interaction vs action repeat, runs on, and conditional playback — for loops that perform well and respect reduced motion.

Key takeaways

  • Interaction-level repeat loops the whole timeline as a group; action-level repeat loops each action on its own — the two are not interchangeable once a timeline has more than one action.
  • For a single-action animation like a marquee, the two repeats are equivalent; the difference only bites when several actions must stay in sync.
  • "Back and forth" plays an action forward then in reverse; pair it with a repeat count for precise patterns — repeat 3 gives out-in-out-in, ending settled in place.
  • "Runs on" scopes an interaction to the pages that actually need it — a genuine performance win that avoids loading and evaluating unused JavaScript across a large site.
  • Conditional playback is your accessibility lever: honor prefers-reduced-motion (disable or skip to the end) and limit heavy animations to the breakpoints where they belong.

Video chapters

  1. 00:00 Intro
  2. 01:08 Example #1: Infinite marquee (interaction-level repeat)
  3. 13:24 Example #2: Looping split-text (interaction vs action repeat)
  4. 21:08 Example #3: Button loop on scroll (action-level repeat)
  5. 33:19 Example #4: Horizontal split-text loop (interaction-level repeat)
  6. 35:25 Responsiveness & accessibility: Runs On and Conditional Playback
  7. 41:19 Outro

Webflow’s GSAP interaction settings — repeat, runs on, and conditional playback — are the difference between an animation that merely works and one that loops cleanly, performs well at scale, and treats every visitor with respect. This lesson works through four looping patterns (a marquee, cascading text, a scroll-triggered button, a hover stagger) and then the two settings that quietly matter most for real sites.

The star of the show is a distinction that trips up almost everyone: repeat exists in two places — on the interaction and on each action — and they don’t mean the same thing.

How it works

Interaction repeat vs action repeat. Interaction-level repeat loops the entire timeline — every action together — as one group. Action-level repeat loops a single action independently. For a marquee that’s one action moving a strip from 0% to -100% on X, the two are equivalent: repeat the action forever or repeat the interaction forever, you get the same endless scroll. But the moment a timeline has several actions, they diverge sharply. A cascading text loop with four actions (text-out, text-in, arrow-out, arrow-in) must loop as a group — that’s interaction repeat. Apply infinite to each action instead and they desync into chaos: the text resets while the arrow is mid-flight.

Action repeat + back and forth is where you get surgical. “Back and forth” plays an action forward, then in reverse, on each cycle. Combined with a repeat count, you can compose exact patterns. In the scroll example, the button’s letters should exit and re-enter twice then settle, while the circle behind them pulses forever. The letters’ action uses repeat 3 with back-and-forth (out-in-out-in-out-in → ends settled), and the circle’s action uses infinite + back-and-forth (expand-contract forever). Only action-level repeat can loop one part while another stops — interaction repeat would loop everything.

Runs on decides which pages load an interaction. By default it’s the page where you built it, and that’s deliberate: set it to “all pages” and Webflow ships that JavaScript to every page — parsing it, evaluating it, checking for a target that may not exist — even where it’s irrelevant. On a 30- or 50-page site that adds up. Scoping “runs on” to the pages that need the interaction is a real, free performance optimization.

Conditional playback is the accessibility and responsiveness lever, and it does two things. First, it reads the browser’s prefers-reduced-motion feature — the OS-level “reduce motion” setting people with vestibular disorders or motion sensitivity turn on — and lets you disable the interaction or skip it to the end for those users. Parallax, fast movement, scaling, and looping can genuinely cause discomfort, so honoring this isn’t a nice-to-have. Second, it lets you choose which breakpoints an interaction runs on, so a heavy desktop effect can simply not run on mobile, where it might be overwhelming or tax a low-powered device.

How to use it

  1. Marquee (interaction repeat). Put two identical content groups side by side in a flex wrapper with overflow: hidden; set the flex children to don’t shrink or grow. Animate the group’s X from 0% to -100%, linear easing, then set repeat: infinite on the interaction (or the single action — equivalent here).

  2. Cascading text (interaction repeat). Build the sequence as separate actions (text-out, text-in, arrow-out, arrow-in), using from to on the “in” actions with a flipped-sign “from” so elements fall in from above rather than reversing. Set repeat: infinite on the interaction so all four loop together, in sync.

  3. Scroll button (action repeat). Trigger on scroll with trigger actions (not scrub-on-scroll) when the button hits mid-viewport. Give the letters’ action repeat: 3 + back and forth; give the circle’s action infinite + back and forth. Only the circle loops forever.

  4. Tune runs on and conditional playback. Set runs on to just the pages that use the interaction. Open conditional playback and choose a prefers-reduced-motion behavior (disable or skip to end) and the breakpoints the animation should run on.

Resources

Frequently asked questions

What's the difference between repeat on the interaction and repeat on an action in Webflow GSAP?
Interaction-level repeat loops the entire timeline — all actions together — as one group. Action-level repeat loops a single action independently of the others. Use interaction repeat when the whole sequence should cycle; use action repeat when only one part should loop while the rest plays once.
How do I make only part of a GSAP animation loop forever?
Apply repeat to that specific action rather than the interaction. In the scroll example, only the circle's scaling action has repeat set to infinite with back-and-forth, so it pulses continuously while the text runs its sequence twice and then stops.
What does back and forth do, and why set repeat to 3?
Back and forth plays an action forward, then in reverse, on each repeat. With repeat 3 you get forward-reverse-forward-reverse-forward-reverse — an out-in-out-in-out-in pattern that leaves the element back at its resting position after two full exits.
How do I respect prefers-reduced-motion in Webflow?
Use the interaction's conditional playback setting. It reads the browser's prefers-reduced-motion feature and lets you disable the interaction or skip it to the end for users who've asked for less motion — important for anyone with motion sensitivity or vestibular disorders.
Can I run a Webflow interaction only on desktop, or only on certain pages?
Yes. Conditional playback lets you pick which breakpoints an interaction runs on, so you can skip heavy motion on mobile. "Runs on" limits which pages load the interaction at all, keeping unused JavaScript off pages that don't need it.

← Back to the course