explaingit

facebookarchive/pop

19,576Objective-C++Audience · developerComplexity · 2/5DormantSetup · easy

TLDR

Physics-based animation library for iOS/macOS that adds spring bounces and decay effects beyond Apple's standard animations, making UI feel more natural and responsive.

Mindmap

mindmap
  root((Pop))
    What it does
      Spring animations
      Decay animations
      Basic animations
      Custom animations
    Key features
      Animate any property
      Update mid-flight
      Physics-based
    Platforms
      iOS
      tvOS
      macOS
    Tech stack
      Objective-C++
      CocoaPods
    Use cases
      UI element bouncing
      Card deceleration
      Natural motion

Things people build with this

USE CASE 1

Add spring bounce effects to UI elements when they appear or change state.

USE CASE 2

Create deceleration animations for swiped cards or dragged objects that gradually slow to a stop.

USE CASE 3

Animate custom properties on any object with physics-based motion instead of linear timing.

USE CASE 4

Build interactive interfaces that respond to user input with natural, momentum-based animations.

Tech stack

Objective-C++CocoaPodsiOStvOSmacOS

Getting it running

Difficulty · easy Time to first run · 5min
License could not be detected automatically. Check the repository's LICENSE file before use.

In plain English

Pop is an animation library for iOS, tvOS, and macOS built by Facebook (now archived) that goes beyond the standard built-in animations Apple provides. The problem it solves is that standard animations in Apple's frameworks use fixed timings and curves, an element moves from point A to point B in a set duration. Pop adds physics-based animations: spring animations that give elements a realistic bounce, and decay animations that gradually slow an object to a stop like something losing momentum. These make interfaces feel more natural and responsive, mimicking how physical objects actually behave. Pop offers four animation types. Spring animations let you bounce an element to a new position or size, useful for UI elements that should feel alive when they appear or change. Decay animations slow a moving element to a halt, like a swiped card that decelerates and stops. Basic animations interpolate values over a fixed time period, similar to standard animations. Custom animations give full control, handling the timing loop automatically. Crucially, any property on any object can be animated, position, size, opacity, color, or even custom properties you define yourself with read/write blocks. You can also update a running animation's destination mid-flight, which allows seamless course corrections without starting over. The library is written in Objective-C++ and can be used from both Objective-C and Swift code. It was used to power all animations in Facebook's Paper app. Installation is via CocoaPods. The project is now archived (no longer actively maintained).

Copy-paste prompts

Prompt 1
Show me how to add a spring animation to a button in Pop that bounces it to a new position when tapped.
Prompt 2
How do I create a decay animation in Pop that makes a swiped card slow down and stop naturally?
Prompt 3
Can you help me animate a custom property using Pop and update its destination while the animation is running?
Prompt 4
What's the difference between spring, decay, and basic animations in Pop, and when should I use each one?
Prompt 5
How do I integrate Pop into my iOS project using CocoaPods and animate opacity on a view?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.