
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.
Radar check
What we found when we opened it. Every bar is one fact, with its date.
Last code pushed 24 Oct 2026, 3 days before this check.
Latest release @unpic/svelte@1.0.1 on 8 Dec 2025.
Public since February 2023, a little over 3 years.
2,093 stars and 66 forks.
0 commits and 0 new issues in the last 90 days.
34 contributors. No pull requests merged in 90 days; changes go in directly.
No security policy file says how to report a problem. No published security advisories.
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.
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.
- 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.
- 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.
npm i @unpic/astro or @unpic/react , point it at the imgproxy URL you already have, and replace <img> tags.
npm i @unpic/astro # Astro npm i @unpic/react # React npm i @unpic/vue # Vue

