Building the product · Edition No. 12 · 6 Sep 2026

ascorbic/unpic-img

One image component for Astro, React and eight other frameworks that already knows imgproxy's URL format.

← Building the productRead the whole edition →
08

ascorbic/unpic-img

💎 hidden gem
unpic-img: the right image size. Writes the markup that asks for each size.

2.1k stars · MIT · @unpic/react 1.0.2 and siblings (2025-12-08, year confirmed via releasealert.dev) · Track this in Rising ↗

One image component for Astro, React and eight other frameworks that already knows imgproxy's URL format.

Verified25 Oct 2026

Radar check

What we found when we opened it. Every bar is one fact, with its date.

Alive100

Last code pushed 24 Oct 2026, 3 days before this check.

Releases50

Latest release @unpic/svelte@1.0.1 on 8 Dec 2025.

Maturity70

Public since February 2023, a little over 3 years.

Adoption66

2,093 stars and 66 forks.

Activity0

0 commits and 0 new issues in the last 90 days.

Community80

34 contributors. No pull requests merged in 90 days; changes go in directly.

Security40

No security policy file says how to report a problem. No published security advisories.

Licence MIT: permissive: use it for anything, keep the noticeSetup effort 2 of 5Payoff 3 of 5
How the bars are scored
  • Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
  • Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
  • Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
  • Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
  • Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
  • Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
  • Security. A published security policy 80, none 40; published advisories are listed, not scored.

Checked by Repo Radar on 25 Oct 2026 from the repository on GitHub. Covered in Edition 12.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You use one component in place of an image tag and it generates the srcset and sizes attributes a browser needs to pick the right file, plus the layout CSS that holds the space open while the image loads. A srcset is a list of the same picture at several widths; sizes tells the browser how wide the picture will be on the page. It knows the URL formats of around thirty image services and self-hosted image servers, so it can ask any of them for a specific size without an adapter being written. The same component exists for Astro, React, Vue, Svelte, Solid, Qwik and others. The newest tag is @unpic/svelte@1.0.1, dated 8 December 2025, the React package is 1.0.2 on npm, and code landed in the repository on 15 October 2026. It does not resize anything itself: the actual resizing is done by whichever image service or server the URLs point at.

Why it matters

Who it suits. Projects already running an image server or using a hosted image service, where the resizing exists but the markup asking for the right size was never written. Also any site measured on layout stability, because reserving space before the picture arrives is a large part of that score. Skip it if the images are plain static files with no resizing service in front of them, because then there are no alternative sizes to ask for.

Verdict. Worth the few minutes, with one note that has changed since this edition first appeared. The original entry warned the project had been quiet since December 2025 and should be checked before anyone depended on it. Code landed on 15 October 2026, so the project is being worked on and the warning is withdrawn. The 1.0 version numbers mean the interface is settled rather than stalled. If the project is a Nuxt site, nuxt/image is the native option; imgproxy/imgproxy is the server that does the resizing this component asks for.

Stars2.1k
LicenceMIT
Latest@unpic/react 1.0.2 and siblings (2025-12-08, year confirmed via releasealert.dev)checked 7 Sep 2026
Written inTypeScript
Summary (Key Points)from the README
Key features
  • Single img tag: Output is just an img element, with no wrapper divs, spacer elements or runtime JavaScript, so it is easy to style.
  • Automatic srcset and sizes: Generates correct srcset and sizes attributes for responsive images.
  • CDN-side resizing: Resizes images through the CDN's URL API, preserving aspect ratio and avoiding layout shift using pure CSS.
  • Native loading controls: Uses native lazy loading and async decoding for offscreen images, and eager loading with high-priority fetching for important ones.
  • Image layouts: Supports fixed, constrained and full-width layouts.
  • Modern formats: Delivers WebP and AVIF where the browser supports them.
  • No build step or SSR: Works with your existing image CDN or CMS without extra configuration.
  • Blurred placeholders: Can generate a low-res background image for a blur effect, or work with @unpic/placeholder for more options.
Important
  • Supported CDNs only: Images must come from a CDN or CMS that unpic supports; the README says "most" CDNs are covered, and lists Adobe Dynamic Media, Builder.io, Bunny.net, Cloudflare, Contentful, Cloudinary, Directus, Imgix (including Unsplash, DatoCMS, Sanity and Prismic), Kontent.ai, Netlify, Shopify, Storyblok, Vercel/Next.js and WordPress.com/Jetpack.
  • Framework support: The README names React, Vue, SolidJS, Svelte, Astro, Preact, Qwik, WebC, Angular and Lit as frameworks it works with, but it also states the library works with any frontend framework or none.
  • No install steps in README: The README gives no installation command or setup instructions; it refers to separate documentation for usage.
  • License: Published under the MIT licence, copyright Matt Kane 2023.

Written by an AI model from the project’s README; not part of the review, and it can be wrong.

Setup effort
2 / 5
Payoff
3 / 5
Good
  • Already speaks the URL format of about thirty image services, so there is no adapter to write.
  • Prevents the page from jumping by default, rather than as an option to remember.
  • The same component in a static site generator and in an application, so both behave alike.
Watch for
  • It does no resizing: without an image service or server in front, it adds little.
  • The tagged releases are from December 2025, so the version numbers look older than the activity.
  • It is another dependency for markup a careful developer writes once by hand.
Replaces

npm i @unpic/astro or @unpic/react , point it at the imgproxy URL you already have, and replace <img> tags.

Install
npm i @unpic/astro      # Astro
npm i @unpic/react      # React
npm i @unpic/vue        # Vue
Screenshots
ascorbic/unpic-img: GitHub preview cardascorbic/unpic-img: Screenshot 1

On Stack Radar: Build & Ship › Frameworks & Libraries › UI Components.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.