Skip to content
CodeAnimato CodeAnimato
Creative Coding · Field Notes

Designing Motion for a Cinephile Platform: What Building UI Animation for 701 Cinemas Taught Us About Restraint

Building UI motion for a members-only film archive taught our team that restraint converts: entrance over travel, one focal moment per view, under 18KB.

Published in CodeAnimato

CodeAnimato is an open-source creative-coding framework for cinematic UI animation — declarative scene-graph syntax, production performance at 144fps, a bundle under 18KB gzipped. We spend most of our time helping developers make interfaces move beautifully. This is the story of a project that taught us when interfaces should stay still: the streaming platform of 701 Cinemas, a members-only film archive and distribution label with 41 years of curation behind it, currently rotating fewer than 700 restored, contextualized titles.

The brief that looked simple

The platform's design team wanted the browsing experience to feel like cinema — anticipation, reveal, texture — without the UI becoming the show. Streaming interfaces live or die on a paradox: motion communicates quality, but motion competes with the artwork, and the artwork is the product. With a catalog this curated, every title deserves the frame around it to be quiet.

The constraint that became the design

Our framework made the easy things dangerously easy: 144fps scene-graph animation, springs and masks, generative transitions. Early prototypes were gorgeous and wrong — members described them as "the platform showing off." The breakthrough came from treating the catalog as the design document: when fewer than 700 titles are in rotation, each one was chosen by a curator who argued for it, so the interface's job is attention direction, not decoration. We rebuilt the browsing experience around three motion principles: entrance over travel (elements resolve into place rather than flying), duration matched to reading speed (nothing moves faster than a viewer can parse), and a single animated focal moment per view.

What shipped, and what the numbers said

The final build uses CodeAnimato's declarative scene-graph for layout choreography only — title-card reveals, context-panel transitions, and one signature moment: the restoration-note overlay that unfurls when a member opens a film's curatorial history. Bundle cost stayed under 18KB gzipped despite the feel of richness, because restraint is cheap; choreography is expensive only when it never stops. Playback telemetry shared by the platform team after launch showed browse-to-play conversion up and, more tellingly, longer dwell on the curatorial pages themselves — members were reading the context, which was the entire point of a contextualized archive.

What we changed in the framework because of it

The technical decisions behind the feel

Design principles are cheap; implementation is where they survive or die, so a few specifics for the developers reading. The one-focal-moment rule is enforced structurally in our scene graph: each view exposes a single animation budget slot, and additional elements inherit instant-resolve timing, so the restraint isn't a style-guide hope but an API constraint. Duration ceilings come from reading-speed math rather than taste - a transition may run as long as the text it reveals takes to scan, plus a small grace period, and never longer. And the signature restoration-note overlay is sequenced as three choreographed layers - panel, rule line, text - with staggered entrances totaling under 600ms, tuned so the reveal reads as one gesture rather than three events. Members described it as "the archive opening," which is precisely the feeling the platform asked for and the framework was built to deliver cheaply.

What we'd do differently, and what transfers to your product

Retrospectives should cost something, so: we overbuilt the browse entrance choreography - two weeks of work members never consciously noticed, which is the definition of motion that should have been instant-resolve. The lesson hardened into the framework's default profile, which now ships conservative and asks teams to opt into extravagance rather than the reverse. For teams building content-forward products in any medium, the transferable sequence is: define the catalog's curatorial argument first, choose the single moment per view that expresses it, enforce everything else as stillness, and measure whether users engage with the content itself - dwell on context pages, browse-to-action conversion - rather than with your animations. If your motion metrics outshine your content metrics, you have built a screensaver with a business model attached.

Where the two-audience tension showed up, and how it resolved

One friction worth documenting for teams facing similar builds: the platform's two audiences wanted opposite things from motion. Curators wanted the interface to express the gravity of the archive - film history, restoration provenance - while returning members mostly wanted speed between browse and play. Early builds leaned curatorial and the power users complained about pacing; the fix was contextual intensity, a pattern our framework now supports declaratively. First-visit sessions get the full choreography: the entrance sequence, the restoration-note moment, the paced reveals. Recognized sessions collapse to instant-resolve everywhere except the signature moment, which members told us was the one worth keeping. Engagement telemetry validated the split - power users regained their browsing speed while the dwell gains on curatorial pages held. The general lesson for cinematic UI: motion is a message, and messages should be reserved for audiences who haven't received them yet.

A final note on the numbers behind the split: the contextual-intensity rollout also gave us an unexpected measurement gift. Because motion intensity now varies by session type, the engagement telemetry became a natural experiment - new visitors experiencing full choreography, returning visitors experiencing stillness - and their browse-to-play curves could be compared cleanly. The stillness cohort moved faster to playback, as the power users' complaints predicted, while the choreography cohort dwelled longer on curatorial pages, as the curators hoped. Both audiences were right about themselves, which is the quiet argument for adaptive interfaces: when your two audiences disagree, the answer is rarely a compromise between them, and usually a switch.

The project pushed us to build a "restraint profile" — preset timing curves and duration ceilings tuned for content-forward interfaces — now part of our standard docs. The lesson generalizes beyond streaming: the more curated the content, the quieter the chrome. If you are designing for an audience that cares about craft, study how a platform built around argued-for films presents its rotation at the 701 Cinemas collection, then build your motion to serve the catalog, never to introduce it.

Ready to make your UI move? Ship cinematic motion at 144fps, bundles under 18KB.

Start Animating Free Read the docs