Skip to content

Bump is-animated@3.0.19 - #101173

Merged
eps1lon merged 2 commits into
vercel:canaryfrom
styfle:codex/bump-is-animated
Nov 7, 2026
Merged

eps1lon merged 2 commits into
vercel:canaryfrom
styfle:codex/bump-is-animated

Conversation

@styfle

@styfle styfle commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Summary

Bumps is-animated from 2.0.2 to 3.0.19 and refreshes the vendored bundle and preserves CJS export now that upstream ships ESM.

Performance

A local detection-only benchmark across 9 existing image fixtures measured 33–34% less detection time for an equally weighted mix: approximately 1.09 β†’ 0.73 Β΅s per call. This reproduced in two runs with 24 alternating A/B pairs per fixture on an Apple M3 Pro using Node.js 26.12.1, with buffers loaded before timing.

Results vary by format: animated GIF detection took about 38% less time, and the two animated PNG fixtures took 11–82% less time. Animated WebP took about 0.16 Β΅s longer per call; static PNG, JPEG, and AVIF detection also took longer.

End-to-end image optimization was not benchmarked since these are Β΅s improvements.

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Tests Passed

Commit: eb6868e
View workflow run

@styfle
styfle marked this pull request as ready for review November 6, 2026 18:36
@styfle
styfle requested review from bgw, eps1lon and jamiboym November 6, 2026 18:36
@eps1lon
eps1lon merged commit f4294f6 into vercel:canary Nov 7, 2026
229 of 231 checks passed
Timer added a commit that referenced this pull request Nov 8, 2026
Picks up the Rust toolchain upgrade (#101279) and a dependency bump
(#101173). No conflicts.

<!-- NEXT_JS_LLM -->
MrIago added a commit to MrIago/vinext that referenced this pull request Nov 9, 2026
Next.js now vendors is-animated 3 (vercel/next.js#101173). For WebP it
reads the animation bit of the leading VP8X chunk, where version 2 took
any `ANIM` bytes anywhere in the file. vinext ported version 2, so a
still WebP whose data happened to contain `ANIM` was served as-is
instead of being optimized, and an animated one flagged in VP8X without
those bytes was flattened. Detection now reads 30 bytes instead of
scanning the whole source.

The new AVIF detection (`avis` brand) has no effect on the optimizer:
Next.js only calls is-animated for GIF, PNG and WebP sources, so it
still optimizes an animated AVIF, and vinext keeps doing the same.

Refs cloudflare#4603

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@styfle
styfle deleted the codex/bump-is-animated branch November 9, 2026 13:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants