SVG

Open-source projects categorized as SVG

Top 23 SVG Open-Source Projects

  • d3

    Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:

    Project mention: A visual guide to Vision Transformer – A scroll story | news.ycombinator.com | 2024-04-16

    Yes this was done with a combination of GSAP Scrolltrigger https://gsap.com/docs/v3/Plugins/ScrollTrigger/ and https://d3js.org/

  • three.js

    JavaScript 3D Library.

    Project mention: Implementing Bloom Effect with Mapbox and Three.js | dev.to | 2024-04-08

    Regarding the optimization of the effect, I found an issue on the three.js GitHub repository: https://github.com/mrdoob/three.js/issues/14104 The alpha channel issue seems to be a difficult problem, which has been present since 2018. At the end of the discussion, a solution proposed by a contributor is not to modify the UnrealBloomPass but to blend the source texture and target texture in the shader.

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

  • echarts

    Apache ECharts is a powerful, interactive charting and data visualization library for browser

    Project mention: A web crawler program for crawling Echarts official website examples implemented by Puppeter | dev.to | 2024-04-12

    import puppeteer from "puppeteer"; import fs from "node:fs"; import { storiesTpl, storiesArgs, generOptions, generOptionsWithFn, } from "./template.mjs"; const ECHARTS_BASE_URL = "https://echarts.apache.org/examples/en/index.html"; function capitalizeFirstLetter(str) { if (!str || str.length === 0) { return ""; } str = str.toLowerCase(); return str.charAt(0).toUpperCase() + str.slice(1); } (async function () { const browser = await puppeteer.launch(); const page = await browser.newPage(); // Navigate the page to a URL await page.goto(ECHARTS_BASE_URL); // Set screen size await page.setViewport({ width: 1080, height: 1024 }); // Type into search box // const examples = await page.type([".example-list-panel"]); const searchResultSelector = ".example-list-panel > div"; const results = await page.$$(searchResultSelector); for (const element of results) { // gener namespace const ele = await element.$(".chart-type-head"); const title = await ele.evaluate((el) => el.textContent); let namespace = title.split(" ").filter(Boolean); namespace = namespace.slice(0, namespace.length - 1); namespace = namespace .map((item) => item.replace("\n", "").replace("/", "")) .filter(Boolean) .join(""); console.log(`${namespace} start`); const instances = await element.$$(".row .example-list-item"); const components = []; for (const instance of instances) { // title const titleElement = await instance.$(".example-title"); const subTitle = await titleElement.evaluate((el) => el.textContent); const titles = subTitle .split(" ") .filter(Boolean) .map((item) => item .replace(/\+/g, "") .replace(/\(/g, "") .replace(/\)/g, "") .replace(/-/g, "") ); const title = titles.map((item) => capitalizeFirstLetter(item)).join(""); const link = await instance.$(".example-link"); const newPagePromise = new Promise((resolve) => { browser.on("targetcreated", async (target) => { if (target.type() === "page") { const targetPage = await target.page(); const url = await targetPage.url(); if (url.includes("editor")) { resolve(targetPage); } } }); }); await link.click(); const newPage = await newPagePromise; await newPage.setViewport({ width: 40000, height: 20000 }); await newPage.waitForSelector(".ace_text-layer"); await new Promise((resolve) => { setTimeout(() => { resolve(); }, 3000); }); let content = await newPage.evaluate( () => document.querySelector(".ace_text-layer").innerText ); content = content .replace(/\[\]/g, "[] as any") .replace(//g, "") .replace(/var/g, "let"); let options; if (content.includes("myChart")) { options = generOptionsWithFn({ options: content }); } else { options = generOptions({ options: content }); } components.push({ options, title }); await newPage.close(); } const args = components .filter(({ options }) => { if (options.includes("$")) return false; return true; }) .map(({ options, title }) => storiesArgs({ options: options, name: title }) ) .join("\r\n"); const scripts = storiesTpl({ namespace: `Charts/${namespace}`, components: args, }); fs.writeFileSync(`./bots/assests/${namespace}.stories.ts`, scripts); console.log(`${namespace} end`); } })();

  • anime.js

    JavaScript animation engine

    Project mention: Incredible JavaScript Animation Libraries | dev.to | 2024-03-24

    Anime.js is celebrated for its simplicity, speed, and versatility. This compact library simplifies the animation process, enabling developers to craft visually striking animations with minimal effort. Anime.js supports a wide array of effects like scaling, morphing, and rotating, offering developers the tools to create complex timelines and animations with ease.

  • tldraw

    Infinite canvas.

    Project mention: Tldraw License Change | news.ycombinator.com | 2024-02-05
  • sharp

    High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, AVIF and TIFF images. Uses the libvips library.

    Project mention: Sharp – fast image conversion in Node.js | news.ycombinator.com | 2024-03-26
  • feather

    Simply beautiful open-source icons

    Project mention: 100+ FREE Resources Every Web Developer Must Try | dev.to | 2024-02-26

    Feather Icons

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • shields

    Concise, consistent, and legible badges in SVG and raster format

    Project mention: Personalizando o README do seu projeto | dev.to | 2024-03-24

    Veja no site shields.io. Segue as que eu mais uso:

  • svgo

    ⚙️ Node.js tool for optimizing SVG files

    Project mention: Random Code Inspiration Volume 2 | dev.to | 2023-10-01

    image-shrinker is a simple, easy to use open source tool for shrinking images. Under the hood it uses pngquant, mozjpg, SVGO, and gifsicle. You can also install these tools individually if you need to compress some images. I often use pngquantafter exporting PNGs for web projects from Figma or similar tools. I literally run it like this:

  • rough

    Create graphics with a hand-drawn, sketchy, appearance

    Project mention: Rough.js: Create graphics with a hand-drawn, sketchy, appearance | news.ycombinator.com | 2023-12-22
  • visx

    🐯 visx | visualization components

    Project mention: React Component Libraries | dev.to | 2024-03-13

    Official Website: https://airbnb.io/visx/

  • Mo.js

    The motion graphics toolbelt for the web

    Project mention: Incredible JavaScript Animation Libraries | dev.to | 2024-03-24

    Mo.js is a potent and adaptable JavaScript animation library with a straightforward API and browser support. It's distinguished by its high-performance animations and density-independent effects, ensuring outstanding visual quality on any device. Mo.js provides extensive tools for animation creation, including Player for animation control, Curve Editor, and Timeline Editor for custom easing and editing.

  • simple-icons

    SVG icons for popular brands

    Project mention: oImprove your README.md profile with these amazing badges 🚀 | dev.to | 2024-02-06

    It's only possible because of Shields Project, Simple Icons & beloved all Contributors. We do respect & love our all contributors.

  • tabler-icons

    A set of over 5200 free MIT-licensed high-quality SVG icons for you to use in your web projects.

    Project mention: Release Radar • March 2024 Edition | dev.to | 2024-04-07

    Use Tabler Icons for over 5200 pixel perfect icons designed for the web. This latest set expands the library further with 244 new icons. There's also more support backward compatibility, and more design options for webs, mobile, and desktop applications. All icons now also come in both outlined and filled versions to suit even more preferences and requirements. Check out all the icons on the website.

  • Frappe Charts

    Simple, responsive, modern SVG Charts with zero dependencies (by frappe)

    Project mention: Learn SVG with 25 examples – How to code images in HTML | news.ycombinator.com | 2023-12-07

    As a frontend dev who also works in UX and graphics from time to time, I find it helpful to be able to do both, looking at SVGs as both a vector graphics format and a human-readable XML. IME the workflow depends more on whether any SVG is meant to be illustrative (like art) or quantitative (like charts) or interactive and animated/mutable (like a game).

    For something like this bell example (https://svg-tutorial.com/svg/bell), you can certainly hand-code it if you're really math-inclined and can estimate the formulas of curves just by looking at them, but for us mere mortals, it's easier to just draw out the curves in a graphics app then export as an SVG. And for things like the ringer (is that what you call it? the orange ball thing at the bottom of the bell that strikes the bell to make the sound), being able to visually draw it on a canvas, change its size, drag it around and play with its colors and dimensions, etc. is really helpful. Figma is fine for simpler graphics, but it's really more of a UX tool than a graphic design tool, and Illustrator is a lot more powerful. Inkscape is a FOSS option.

    In other circumstances, though, manipulating the SVG XML directly is also very helpful. Let's say you want to programatically generate a bar chart. If you have a big dataset, it's going to take a designer forever to manually plot them and change them every time the data changes. But it's easy for a dev to use Javascript (or any language) to draw each rectangle, programmatically adjust their heights and colors based on the data, add tooltips, etc. And that way you can dynamically update them in real-time whenever the data changes (like if the user selects a different date range, or new events come in). A lot of this is made easier by libs like https://frappe.io/charts or https://apexcharts.com. But before you take that approach, you should know that for complex charts, sometimes Canvas rendering (or just generating graphics in the backend) can be more performant than SVG.

    SVGs can also be animated and interactive, not just with CSS transitions but by directly manipulating the XML geometries, like http://snapsvg.io/demos/ or https://www.svgator.com/ or https://codepen.io/collection/XpwMLO/. This is fine for product pages and such, but for really graphics-intensive apps (full games) it's probably slower than other rendering pipelines. (Not my specialty, won't speculate too much.)

    TLDR Drawing them in a graphics app is usually easier for the designers, but the XML can be programmatically manipulated afterward to great effect.

  • SuperTinyIcons

    Under 1KB each! Super Tiny Icons are miniscule SVG versions of your favourite website and app logos

    Project mention: Super Tiny Icons (< 1kb Each) | news.ycombinator.com | 2023-10-30
  • Snap.svg

    The JavaScript library for modern SVG graphics.

  • apexcharts.js

    📊 Interactive JavaScript Charts built on SVG

    Project mention: Show HN: A JavaScript library for data visualization in both SVG and Canvas | news.ycombinator.com | 2024-04-11
  • react-content-loader

    ⚪ SVG-Powered component to easily create skeleton loadings.

  • chartist

    Simple responsive charts

  • DOMPurify

    DOMPurify - a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. DOMPurify works with a secure default, but offers a lot of configurability and hooks. Demo:

    Project mention: JavaScript Libraries for Implementing Trendy Technologies in Web Apps in 2024 | dev.to | 2024-04-09

    DOMPurify

  • nivo

    nivo provides a rich set of dataviz components, built on top of the awesome d3 and React libraries

    Project mention: Level Up Your Web App with Stunning React Charts: Introducing the Top 10 React Charts Libraries | dev.to | 2023-07-31

    Nivo is a data visualization library built on top of D3.js and React. It offers a range of well-designed, customizable charts with great animations, making it suitable for creating visually impressive data visualizations.

  • G2

    📊 The concise and progressive visualization grammar.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2024-04-16.

SVG related posts

Index

What are some of the best open-source SVG projects? This list will help you:

Project Stars
1 d3 107,600
2 three.js 98,752
3 echarts 58,883
4 anime.js 48,643
5 tldraw 32,298
6 sharp 27,892
7 feather 24,447
8 shields 22,432
9 svgo 20,333
10 rough 19,405
11 visx 18,685
12 Mo.js 18,252
13 simple-icons 17,998
14 tabler-icons 17,195
15 Frappe Charts 14,890
16 SuperTinyIcons 14,399
17 Snap.svg 13,840
18 apexcharts.js 13,812
19 react-content-loader 13,343
20 chartist 13,314
21 DOMPurify 12,731
22 nivo 12,610
23 G2 11,956
Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com