MASSIF Responsive Images

Statamic 6 addon for automatic responsive <picture> generation, based on next/image with AVIF → WebP → fallback. Intrinsic dimensions to prevent CLS including inline LQIP. With optional support for Placeholder Images by Daun.

1.1.0

July 8th, 2026

Ports the applicable improvements from our REDAXO sibling addon plus GitHub #1 (automatic image-format support detection), and stamps the fixes accumulated since v1.0.0.

Highlights

  • Automatic image-format support detection (#1). AVIF/WebP <source> elements are only emitted when the active imaging driver can actually encode the format (probed via Statamic's ImageValidator), preventing broken images on drivers that lack a format — <picture> doesn't fall back from a broken source. Gating fails safe and is configurable via formats.detect_support.
  • Sub-16px AVIF fix. AVIF variants below libavif's 16px floor (reachable at tall aspect ratios) are dropped — they otherwise produced 0-byte broken images.
  • Dominant-color placeholder. The image's average color is painted under the LQIP, filling the box before bytes load (placeholder.color.enabled).
  • sizes="auto" on lazy images (WHATWG auto-sizes, markup.auto_sizes).
  • Opt-in EXIF/ICC metadata strip (strip_metadata, default off, Imagick-only).
  • Min-width format threshold (formats.min_width, opt-in).
  • Art-direction src inheritance — omit src to reuse the parent image with a different crop/focal per breakpoint.
  • Debug "src not found" marker — surfaces unresolvable src in debug mode.

Also includes fixes accumulated since v1.0.0: multi-asset field source resolution, public-relative URL metadata reads, metadata-cache hardening (bounded TTL, failure sentinel), and tag_alias=null correctly disabling the {{ pic }} tag.

⚠️ Breaking changes since v1.0.0

  • Default sizes flipped from '100vw' to a layout-aware default ('(min-width: 1280px) 640px, (min-width: 768px) 50vw, 90vw'). Republish the config and set 'default_sizes' => '100vw' to restore.
  • cache.ttl removed → replaced by cache.metadata_ttl (90 days) and cache.sentinel_ttl (60s).
  • Internal Pic class relocated to Massif\ResponsiveImages\Aliases\Pic.

New config keys (all backward-compatible via ?? default): formats.detect_support, formats.min_width, placeholder.color, markup.auto_sizes, strip_metadata.

Full details in CHANGELOG.md.

1.0.0

April 24th, 2026

  • N/A Changelog not available.