Iconify is the most versatile icon framework.

Last update: May 14, 2022

What is Iconify?

Iconify is the most versatile icon framework.

  • Unified icon framework that can be used with any icon library.
  • Out of the box includes 100+ icon sets with more than 100,000 icons.
  • Embed icons in HTML with SVG framework or components for front-end frameworks.
  • Embed icons in designs with plug-ins for Figma, Sketch and Adobe XD.
  • Add icon search to your applications with Iconify Icon Finder.

For more information visit https://iconify.design/.

Iconify version 1

If you are looking for Iconify version 1, check out https://github.com/iconify/iconify/tree/iconify1

This repository contains the new version, completely rewritten using modern development process.

Iconify monorepo

This repository is a big monorepo that contains several icon components for various frameworks and several packages that are reused by all those components.

Iconify icon components

Iconify icon components are not just yet another set of icon components. Unlike other icon components, Iconify icon components do not include icon data. They load icon data on demand from Iconify API.

Iconify API provides data for over 100,000 icons! API is hosted on publicly available servers, spread out geographically to make sure visitors from all over the world have the fastest possible connection with redundancies in place to make sure it is always online.

Why is API needed?

When you use an icon font, each visitor loads an entire font, even if your page only uses a few icons. This is a major downside of using icon fonts. That limits developers to one or two fonts or icon sets.

If you are using typical icon set that is not a font, you still need to bundle all icons used in your application, even ones that visitor does not need.

Unlike icon fonts and components for various icon sets, Iconify icon components dynamically load icon data from Iconify API whenever it is needed.

This makes it possible to have an unlimited choice of icons!

Available packages

There are several Iconify components included in this repository:

Implementation Usage
SVG Framework HTML
React component React, Next.js
Vue 3 component Vue 3
Vue 2 component Vue 2
Svelte component Svelte, SvelteKit, Sapper
Ember component Ember

Other packages:

  • Iconify types - TypeScript types.
  • Iconify utils - common files used by various Iconify projects (including tools, API, etc...).
  • Iconify core - common files used by various components.
  • API redundancy - library for managing redundancies for loading data from API: handling timeouts, rotating hosts.
  • Library builder - build scripts for packages that do not require bundling, similar to tsup, but without bundler. Used by Utils, Core and API Redundancy packages. Builds ES and CommonJS modules, type definition files and updates exports in package.json.
  • React demo - demo for React component. Run npm start to start demo.
  • Next.js demo - demo for React component with Next.js. Run npm run build to build it and npm start to start demo.
  • Vue 3 demo - demo for Vue component. Run npm run dev to start demo.
  • Vue 2 demo - demo for Vue component. Run npm run dev to start demo.
  • Svelte demo - demo for Svelte component. Run npm run dev to start demo.
  • Svelte demo with Vite - demo for Svelte component using Vite. Run npm run dev to start demo.
  • Sapper demo - demo for Sapper, using Svelte component on the server and in the browser. Run npm run dev to start the demo (deprecated, use SvelteKit instead of Sapper).
  • SvelteKit demo - demo for SvelteKit, using Svelte component on the server and in the browser. Run npm run dev to start the demo.
  • Ember demo - demo for Ember component. Run npm run start to start demo.
  • Browser tests - unit tests for SVG framework. Run npm run build to build it. Open test.html in browser (requires HTTP server).

Installation

This monorepo uses Lerna to manage packages.

First you need to install Lerna:

npm run install

To install dependencies in all packages, run

npm run bootstrap

This will install all dependencies and create symbolic links to packages.

If links stop working for some reason, run npm run link to fix links.

If you want to re-install dependencies, run npm run clean to clear all repositories (press "Y" to continue), then npm run bootstrap to install everything again.

Documentation

Documentation for all packages is available on Iconify documentation website:

Licence

Iconify is dual-licensed under Apache 2.0 and GPL 2.0 licence. You may select, at your option, one of the above-listed licences.

SPDX-License-Identifier: Apache-2.0 OR GPL-2.0

This licence does not apply to icons. Icons are released under different licences, see each icon set for details. Icons available by default are all licensed under some kind of open-source or free licence.

© 2020, 2021 Iconify OÜ

GitHub

https://github.com/iconify/iconify
Comments
  • 1. Using Iconify Vue3 Icon Component in inline element causes inline elements content to render twice

    When i use any iconify icon via its vue component within an <a> tag it causes the rest of the <a> tags content to render twice:

    Usage:

     <a :href="'mailto:' + footer?.email">
              <Icon icon="ic:outline-email" :inline="true"></Icon>
              <span>{{ footer?.email }}</span>
    </a>
    

    Result: Bildschirmfoto 2022-02-24 um 21 03 15

    Reviewed by awacode21 at 2022-02-24 20:03
  • 2. feat: split modern loader for node and browser support

    This PR includes:

    • new module for loading icons packages/utils/src/loader/loader.ts: will export a loadIcon that will resolve the icon from custom collections or if on node environment will try to load (and install) from locally installed.
    • some test for previous module: load-icon-test-ts
    • split fs loader to load from file system only on node environment: added some utilities to check it, just see loader.ts module
    • add some more customization, like adding xlink xml namespace when xlink: is used inside svg: I need to add some test for this
    • added install-pkg.ts module to install @iconify-json/<collection> collections in a separate module

    Maybe we can rename some modules to explicity specify the environment, for example adding node- prefix.

    @cyberalien can we add some @iconify-json/<collection> to test the new loader?

    Reviewed by userquin at 2022-02-26 14:20
  • 3. Hey, I would love to contribute!

    Thanks for making this and I have used it for a while. Being an icon lover, this is definitely a lifesaver!

    I would love to help with improving the functionality/design of the website. However, I did not find the repo of it, did I missed it, or do you have any plain in open sourcing it?

    Thanks!

    Reviewed by antfu at 2020-07-11 09:06
  • 4. Icons render an empty in React when using offline icons and the icon is used in another package

    I made a UI framework at https://github.com/skylixgh/nexts that uses @iconify/react and @iconify/icons-fluent. When testing nexts in developer mode it works, but when I publish to NPM and install on my other apps, the iconify offline icons are just an empty span, i checked my builds and iconify's components and icons were imported correctly. image image

    Reviewed by XFaonAE at 2022-03-19 21:56
  • 5. Pro icon packs

    Hey there!

    Is it or will it be possible to use pro packs (specifically Font Awesome)? I've got a pro license so I would like to use all available icons.

    Thanks!

    Reviewed by arjendejong12 at 2019-05-02 14:21
  • 6. feat: add universal svg loader

    @cyberalien I added packages/core/src/modern/index.ts and a few modules to packages/utils/src/loader and added some dependencies to both packages, I need to build the repo and add some tests.

    /cc @antfu

    For both packages also added "@types/debug": "^4.1.7" as dev dependency.

    packages/core/package.json:

    	"dependencies": {
    		"@antfu/utils": "^0.3.0",
    		"@iconify/api-redundancy": "^1.0.2",
    		"@iconify/types": "^1.0.10",
    		"@iconify/utils": "^1.0.16",
    		"cross-fetch": "^3.1.4",
    		"debug": "^4.3.3",
                    "local-pkg": "^0.4.0"
    	},
    

    and packages/utils/package.json:

    	"dependencies": {
                    "@antfu/utils": "^0.3.0",
    		"@iconify/types": "^1.0.12",
                    "debug": "^4.3.3"
            },
    

    closes #96

    Reviewed by userquin at 2021-12-09 21:16
  • 7. Icon not showing in simple JavaScript

    I am trying to use iconify but I cannot. Is this correct? Nothing shows for me. What should I do with Iconify after import? The documentation is very vauge.

    import Iconify from '@iconify/iconify';
    export function createIcon(iconName) {
      const icon = document.createElement("div");
      icon.innerHTML = `
        <span class="iconify" data-icon="${iconName}"></span>
      `
      return icon
    }
    

    image

    Reviewed by aminya at 2020-07-26 10:10
  • 8. ability to add iconify collection by name

    The readme for collections-json shows how to load an icon set by name, quite conveniently - just something like

    const collection = new Collection()
    collection.loadIconifyCollection('icon-set-name')
    

    However, this example uses json-tools, which is deprecated and should be replaced by iconify/utils according to the documentation. However, I don't see any examples of how to do this via the utils library. There doesn't seem to be a collections class, nor any method similar to loadIconifyCollection. I see you can import a single collection like this

    import { icons } from '@iconify-json/mdi-light';
    

    but which icon set I load is determined by configuration (since I want an end user to be able to select an icon set via my site's back-end) and to achieve what I want using this syntax would have to be a dynamic import, not to mention including all the sets as individual dependencies in package.json. I really liked the old syntax (loadIconifyCollection('icon-set-name')), which is working for me using json-tools, but I like to update away from deprecated libraries when possible. Is what I'm looking for possible with iconify/utils? If not, consider this a feature request. I understand that if I want all the icons available that this is a 130M package, but that's really not a big deal for a server-side rendered app.

    Reviewed by acalvino4 at 2021-11-02 23:47
  • 9. @iconify/react addCollections being called, but still loading from API?

    After the move to webpack v5, I'm seeing my @iconify/react <InlineIcon> components are attempting to load my 'custom' fonts from the Iconify API provider, despite having called addCollection() at the initialization of my app.

    JSON collection:

    { prefix: "custom", icons: { "leaf": {"body": "<path d=\"  ...  } } }
    

    App initialization, this is called prior to the first render of any component:

    import customFont from './path-to-file/custom.json';
    import { addCollection } from '@iconify/react';
    
    function initialize()
    {
        addCollection(customFont)
    }
    

    Usage:

    import { InlineIcon } from '@iconify/react';
    
    ...
    
    render()
    {
        return ( <InlineIcon icon="custom:leaf" /> );
    }
    

    Is anyone else experiencing a similar issue? The rest of our application bundling appears to work as expected.

    Reviewed by bwhite94 at 2021-12-29 18:12
  • 10. Error while installing iconify/icons-mdi version "1.0.149",

    Context

    While updating my package using npm this error shows up.

    Already tried:

    • [x] Deleting node_modules and reinstalling
    • [x] Deleting package-lock.json and reinstalling
    • [x] npm rebuild
    • [x] npm cache clean --force

    Current behavior

    image

    Expected

    Installs/updates without an error

    Reviewed by Carniatto at 2020-11-04 13:43
  • 11. How to deal with framework attribute bindings, updates to custom icon component?

    Currently I'm wrapping using span tags in an Ember component

    <span class="iconify" data-icon={{name}} ...attributes></span>
    

    which is working great for initial loading & replacement.

    Unfortunately, if I need to replace classNames or attributes on the icon element, those changes aren't reflected on the now-replaced SVG (the attribute bindings provided by the framework are lost once Iconify takes over and replaces the SPAN).

    My use case is similar to:

    <IconComponent @name="fa-solid:chevron-down" class={{if item.open 'rotate-180' 'rotate-0'}} />
    

    What's the best way to approach this? Potentially, if there was a way to leave the initial SPAN/I tag, I could keep the binding and observe that element for className changes, and manually add it to the SVG.

    I could handle rendering each and every icon myself with the SVG functions and leverage the above strategy, but it seemed a bit more straightforward to let the SVG framework do it's thing and replace all in a batch update, rather than on a per-component basis, seeing as there could be several dozen icons on one page.

    Reviewed by chasegiunta at 2021-07-12 22:52
  • 12. Defining behavior in vue2 application

    Hi,

    I like this library, this seems to be the most complete collection of mdi icons. Thanks for the great project. I downloaded it and installed for offline use.

    1. I'm unable to find a way to define onMouseHover behavior, wherein a menu can be displayed. How should I achieve this?
    2. Do we have to always wrap the icon in a component to use, like it is in the vue 2 checkbox demo? How can I use it with v-menu for onHover or onClick?

    Thanks for the help. Kashyap

    Reviewed by gitgkk at 2022-05-09 13:37
  • 13. @iconify/tools config for `@iconify-json/ic`, `@iconify-icons/ic`

    Hi 👋 @cyberalien

    Thanks for icon-sets and iconify tools I have a questions:


    wondering what is your @iconify/tools config for generating Google Material IconSet icon package and JSON packages
    here Google Material Icon Source folder structure

    file structure:

      📦svg
       ┣ 📂10k
       ┃ ┣ 📜baseline.svg
       ┃ ┣ 📜outline.svg
       ┃ ┣ 📜round.svg
       ┃ ┣ 📜sharp.svg
       ┃ ┗ 📜twotone.svg
    

    generated JSON icon-set (test generating material icon with folder structure above):

    {
      "prefix": "msvg",
      "icons": {
        "baseline": {
          "body": "<path fill=\"currentColor\" d=\"m17 15 1.55 1.55c-.96 1.69-3.33 3.04-5.55 3.37V11h3V9h-3V7.82C14.16 7.4 15 6.3 15 5c0-1.65-1.35-3-3-3S9 3.35 9 5c0 1.3.84 2.4 2 2.82V9H8v2h3v8.92c-2.22-.33-4.59-1.68-5.55-3.37L7 15l-4-3v3c0 3.88 4.92 7 9 7s9-3.12 9-7v-3l-4 3zM12 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1z\"/>"
        },
        "outline": {
          "body": "<path fill=\"currentColor\" d=\"m17 15 1.55 1.55c-.96 1.69-3.33 3.04-5.55 3.37V11h3V9h-3V7.82C14.16 7.4 15 6.3 15 5c0-1.65-1.35-3-3-3S9 3.35 9 5c0 1.3.84 2.4 2 2.82V9H8v2h3v8.92c-2.22-.33-4.59-1.68-5.55-3.37L7 15l-4-3v3c0 3.88 4.92 7 9 7s9-3.12 9-7v-3l-4 3zM12 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1z\"/>"
        },
        "round": {
          "body": "<path fill=\"currentColor\" d=\"M13 9V7.82C14.16 7.4 15 6.3 15 5c0-1.65-1.35-3-3-3S9 3.35 9 5c0 1.3.84 2.4 2 2.82V9H9c-.55 0-1 .45-1 1s.45 1 1 1h2v8.92c-2.22-.33-4.59-1.68-5.55-3.37l1.14-1.14c.22-.22.19-.57-.05-.75L3.8 12.6a.5.5 0 00-.8.4v2c0 3.88 4.92 7 9 7s9-3.12 9-7v-2a.5.5 0 00-.8-.4l-2.74 2.05c-.24.18-.27.54-.05.75l1.14 1.14c-.96 1.69-3.33 3.04-5.55 3.37V11h2c.55 0 1-.45 1-1s-.45-1-1-1h-2zm-1-5c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1z\"/>"
        },
        "sharp": {
          "body": "<path fill=\"currentColor\" d=\"m17 15 1.55 1.55c-.96 1.69-3.33 3.04-5.55 3.37V11h3V9h-3V7.82C14.16 7.4 15 6.3 15 5c0-1.65-1.35-3-3-3S9 3.35 9 5c0 1.3.84 2.4 2 2.82V9H8v2h3v8.92c-2.22-.33-4.59-1.68-5.55-3.37L7 15l-4-3v3c0 3.88 4.92 7 9 7s9-3.12 9-7v-3l-4 3zM12 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1z\"/>"
        },
        "twotone": {
          "body": "<path fill=\"currentColor\" d=\"m17 15 1.55 1.55c-.96 1.69-3.33 3.04-5.55 3.37V11h3V9h-3V7.82C14.16 7.4 15 6.3 15 5c0-1.65-1.35-3-3-3S9 3.35 9 5c0 1.3.84 2.4 2 2.82V9H8v2h3v8.92c-2.22-.33-4.59-1.68-5.55-3.37L7 15l-4-3v3c0 3.88 4.92 7 9 7s9-3.12 9-7v-3l-4 3zM12 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1z\"/>"
        }
      },
      "width": 24,
      "height": 24
    }
    

    you refactor google material icon source folder, so iconify can generate icons and weights ? something like this

      📦svg
     ┣ 📂10k
     ┃ ┣ 📜baseline-10k.svg
     ┃ ┣ 📜outline-10k.svg
     ┃ ┣ 📜round-10k.svg
     ┃ ┣ 📜sharp-10k.svg
     ┃ ┗ 📜twotone-10k.svg
    

    Please add this config in @iconify-demo

    Reviewed by sadeghbarati at 2022-04-27 07:15
  • 14. Feature Request: SVG Sprites Mode

    This goes for all code implementations of icons with Iconify:

    See the following scenario: image

    Where the icon (svg code) is repeated multiple times and makes the code bloated.

    It would be interesting to make use of Svg Sprites to optimize this.

    Reviewed by AdsonCicilioti at 2022-03-10 08:05
  • 15. Offline package usage breaks for production build - cannot find module @iconify/vue/dist/offline (vite + vue 3)

    As there is the already mentioned (SSR issue) with the 'online' usage i tried to workaround it with the offline usage. It works perfectly fine for dev server in localhost. But when building or generating the app for production, it says it is not able to find the offline module of iconify. But when i check the node_modules folder it is there.

    Usage:

    import { Icon } from '@iconify/vue/dist/offline';
    import EmailIcon from '@iconify-icons/mdi/email';
    import PhoneIcon from '@iconify-icons/mdi/phone';
    import CellphoneIcon from '@iconify-icons/mdi/cellphone';
    

    Error message:

    [email protected] bivignano % npm run generate
    
    > [email protected] generate
    > vite build --ssrManifest --outDir dist && npm run build:server && node prerender
    
    vite v2.8.4 building for production...
    ✓ 108 modules transformed.
    dist/assets/OptimusPrinceps.fc66926b.woff   24.65 KiB
    dist/assets/OptimusPrinceps.9b8022e9.eot    40.64 KiB
    dist/assets/OptimusPrinceps.06728ee9.ttf    40.45 KiB
    dist/index.html                             0.99 KiB
    dist/ssr-manifest.json                      13.31 KiB
    dist/assets/index.79b58e15.js               10.65 KiB / gzip: 4.41 KiB
    dist/assets/headline.3936d964.js            0.25 KiB / gzip: 0.20 KiB
    dist/assets/index.07a5fe3d.css              2.46 KiB / gzip: 0.96 KiB
    dist/assets/vendor.ab91a02e.js              113.06 KiB / gzip: 44.30 KiB
    
    > [email protected] build:server
    > vite build --ssr src/entry-server.js --outDir dist/server
    
    vite v2.8.4 building SSR bundle for production...
    ✓ 21 modules transformed.
    dist/server/entry-server.js   29.84 KiB
    node:internal/modules/cjs/loader:488
          throw e;
          ^
    
    Error: Cannot find module '/Users/awacode/code/customers/bivignano/vue3/bivignano/node_modules/@iconify/vue/dist/offline'
        at createEsmNotFoundErr (node:internal/modules/cjs/loader:960:15)
        at finalizeEsmResolution (node:internal/modules/cjs/loader:953:15)
        at resolveExports (node:internal/modules/cjs/loader:482:14)
        at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
        at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
        at Function.Module._load (node:internal/modules/cjs/loader:778:27)
        at Module.require (node:internal/modules/cjs/loader:1005:19)
        at require (node:internal/modules/cjs/helpers:102:18)
        at Module.<anonymous> (/Users/awacode/code/customers/bivignano/vue3/bivignano/dist/server/entry-server.js:28:15)
        at Module._compile (node:internal/modules/cjs/loader:1101:14) {
      code: 'MODULE_NOT_FOUND',
      path: '/Users/awacode/code/customers/bivignano/vue3/bivignano/node_modules/@iconify/vue/package.json'
    }
    
    Reviewed by awacode21 at 2022-02-25 20:10
  • 16. error loading `@iconify/svelte/dist/offline` in sveltekit

    The following works fine in my sveltekit app:

    import Icon from '@iconify/svelte';
    

    However, when I change it to:

    import Icon from '@iconify/svelte/dist/offline';
    

    ...then I get this error:

    Error: <Icon> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules
    
    Reviewed by tomyan at 2022-01-03 16:28
Transform SVG to React Chakra UI
Transform SVG to React Chakra UI <Icon /> ✨

Transform SVG to React Chakra UI ✨ from SVG file to CODE Features Transform <SVG/> to Chakra-UI Icon Component or Functional createIcon(...). <Icon />

May 9, 2022
Accessible SVG icon component for React

react-svg-icon Accessible SVG icon component for React. Check out the online demo! Usage npm install --save react-svg-icon import Icon from 'react-svg

Jan 9, 2020
React icon component for Geomicons Open

react-geomicons React icon component for Geomicons Open View Demo Getting Started npm install --save react-geomicons var React = require('react'); var

Jan 27, 2022
React FontIconPicker Component to pick icon or SVG from a selection.
React FontIconPicker Component to pick icon or SVG from a selection.

React FontIconPicker Component A react version of fontIconPicker. This is rewritten and is not a wrapper around jQuery version. With FontIconPicker co

May 10, 2022
An svg icon from clipboard.js site assets, packaged as a React stateless component
An svg icon from clipboard.js site assets, packaged as a React stateless component

react-clipboard-icon is an svg icon from clipboard.js site assets, packaged as a React stateless component Installation | Usage | Development | Licens

Mar 26, 2019
A desktop icon manager application
A desktop icon manager application

Gerenciador de ícones ⬇ Downloaded Images Pode baixar o executável aqui ⚔ Features Diversas bibliotecas de ícones Pesquisar por ícones Mudar a cor dos

Apr 5, 2022
⚡️The Fullstack React Framework — built on Next.js
⚡️The Fullstack React Framework — built on Next.js

⚡️The Fullstack React Framework — built on Next.js

May 15, 2022
⚡️The Fullstack React Framework — built on Next.js — Inspired by Ruby on Rails
⚡️The Fullstack React Framework — built on Next.js — Inspired by Ruby on Rails

⚡️The Fullstack React Framework — built on Next.js — Inspired by Ruby on Rails

Oct 12, 2021
icons for react-native android using android-iconify

react-native-android-iconify icons for react native android using android-iconify Installation and How to use Step 1 - NPM Install npm install --save

May 26, 2020
:scroll: A versatile infinite scroll React component.

ReactList A versatile infinite scroll React component. Install bower install react-list # or npm install react-list ReactList depends on React. Exam

May 6, 2022
A material design card component, customizable and versatile
A material design card component, customizable and versatile

react-native-material-cards A material design card component, customizable and versatile. See Google Material Design for more info on Cards. Installat

May 12, 2022
React minimal pie chart🍰 Lightweight but versatile SVG pie/donut charts for React. < 2kB gzipped.
 React minimal pie chart🍰 Lightweight but versatile SVG pie/donut charts for React. < 2kB gzipped.

React minimal pie chart Lightweight React SVG pie charts, with versatile options and CSS animation included. < 2kB gzipped. ?? Demo ?? . Why? Because

May 6, 2022
A most advanced ssr framework support React/Vue2/Vue3 on Earth that implemented serverless-side render specification.
A most advanced ssr framework support React/Vue2/Vue3 on Earth that implemented serverless-side render specification.

A most advanced ssr framework support React/Vue2/Vue3 on Earth that implemented serverless-side render specification.

May 17, 2022
svg react icons of popular icon packs

React Icons Include popular icons in your React projects easily with react-icons, which utilizes ES6 imports that allows you to include only the icons

May 17, 2022
svg react icons of popular icon packs

React Icons Include popular icons in your React projects easily with react-icons, which utilizes ES6 imports that allows you to include only the icons

May 7, 2022
Text inputs with custom label and icon animations for iOS and android. Built with react native and inspired by Codrops.
Text inputs with custom label and icon animations for iOS and android. Built with react native and inspired by Codrops.

React Native Textinput Effects I've come across with those beautiful text inputs created and blogged by Codrops and wanted to port them to react-nativ

May 6, 2022
A simple rating library for react native supporting: decimal points, direction aware icons, custom icon set from Ionicons, custom images and record rating given by users.
A simple rating library for react native supporting: decimal points, direction aware icons, custom icon set from Ionicons, custom images and record rating given by users.

React Native Rating Element A simple rating library for react native supporting: a11y ready ⚛️ decimal points like 3.7, 4.2 etc, direction aware icons

Feb 24, 2022
🌈 Icon Set Creator for React Native
🌈 Icon Set Creator for React Native

Icon Set Creator ?? Easy to install — does not require additional programs ⚡️ Fast — image manipulation powered by sharp ?? Configurable — using cli o

May 2, 2022