Thanks
I want to thank everyone who spends their time building and maintaining the open source software I rely on for my work, and the makers of the tools and services I use every day. Maintaining an open source package is oftentimes a thankless sacrifice of one's lifetime.
Below are some of the tools I love, plus an automated treemap of the open source packages used in my projects.
THANK YOU to every maintainer, every contributor, and everyone who takes the time to file an issue.
communication
data sources
design
framework
workflow
Dependency treemap
all libraries used in 2 or more of my projects (413)
- react/57
- @types/*/47
- typescript/42
- eslint/42
- vite/40
- axios/44
- tailwindcss/31
- svelte/35
- @sveltejs/kit/34
- lucide-react/25
- next/27
- dotenv/27
- clsx/22
- postcss/23
- tailwind-merge/21
- autoprefixer/21
- zod/18
- @sveltejs/vite-plugin-svelte/18
- prettier/18
- eslint-config-prettier/15
- typescript-eslint/14
- @radix-ui/react-dialog/14
- class-variance-authority/14
- express/19
- framer-motion/13
- svelte-check/12
- firebase-admin/14
- date-fns/13
- globals/11
- embla-carousel-react/12
- @sendgrid/mail/12
- sharp/10
- react-router-dom/15
- react-hook-form/11
- googleapis/11
- convex/9
- eslint-plugin-react-hooks/10
- tailwindcss-animate/10
- @eslint/eslintrc/10
- prettier-plugin-svelte/8
- @playwright/test/8
- deepmerge/11
- @vitejs/plugin-react/8
- @google-cloud/storage/11
- moment/11
- tsx/8
- concurrently/8
- ai/7
- knex/9
- @hookform/resolvers/8
- react-scripts/17
- @prismicio/client/7
- @prismicio/react/7
- firebase/9
- mysql/9
- jszip/7
- react-image-crop/8
- @tailwindcss/typography/7
- @react-pdf/renderer/8
- turbo/7
- jspdf/7
- gh-pages/11
- @fontsource/fira-mono/7
- prettier-plugin-tailwindcss/6
- styled-components/9
- @tiptap/starter-kit/6
- vaul/7
- eslint-plugin-svelte/6
- markdown-it/7
- nodemon/8
- @inquirer/prompts/7
- @tailwindcss/forms/6
- slugify/7
- sass/6
- classnames/8
- vitest/5
- web-push/5
- bits-ui/5
- convex-svelte/5
- puppeteer/6
- react-use/7
- recharts/6
- workbox-precaching/6
- node-fetch/7
- @upstash/ratelimit/6
- @upstash/redis/6
- browser-image-compression/6
- culori/6
- encoding/6
- geist/6
- html-to-image/6
- react-pdf/6
- react-pdf-tailwind/6
- react-textarea-autosize/6
- react-to-print/6
- usehooks-ts/6
- zod-to-json-schema/6
- chalk/6
- @internationalized/date/5
- mysql2/6
- react-color/6
- glob/5
- zustand/5
- eslint-plugin-react/6
- js-cookie/6
- deep-diff/6
- hashids/6
- markdown-it-anchor/6
- markdown-it-video/6
- slice-machine-ui/5
- better-sqlite3/5
- eslint-plugin-react-refresh/5
- png-to-ico/4
- @prismicio/next/5
- objection/5
- bcryptjs/4
- @capacitor/app/4
- @capacitor/cli/4
- html2canvas/5
- react-colorful/5
- react-contenteditable/5
- react-hotkeys-hook/5
- react-icons/5
- react-konva/5
- react-moveable/5
- react-selecto/5
- uuid/5
- openai/6
- jose/4
- @hashgraph/sdk/8
- @anthropic-ai/sdk/4
- @mollie/api-client/6
- eslint-plugin-import/6
- @sparticuz/chromium/4
- web-vitals/9
- jsonwebtoken/5
- haversine-distance/4
- xlsx/4
- sonner/4
- lodash/5
- bcrypt/5
- sitemap/5
- yesvelte/4
- @testing-library/jest-dom/10
- @testing-library/react/10
- @testing-library/user-event/10
- react-markdown/4
- moment-timezone/4
- @headlessui/react/4
- @heroicons/react/4
- geolib/4
- request/4
- remark/4
- svelte-dnd-action/3
- @vite-pwa/sveltekit/3
- @convex-dev/agent/3
- @convex-dev/workflow/3
- tw-animate-css/3
- svelte-splitpanes/4
- leaflet/3
- @react-google-maps/api/4
- tailwind-variants/3
- cors/5
- vercel/3
- vite-plugin-pwa/3
- @convex-dev/better-auth/3
- @mmailaender/convex-better-auth-svelte/3
- better-auth/3
- xml2js/4
- @tanstack/react-table/3
- libphonenumber-js/3
- react-resizable-panels/3
- nodemailer/3
- speakeasy/3
- @fullcalendar/list/3
- chart.js/3
- @tabler/icons-react/3
- node-cron/3
- csv-parser/4
- papaparse/3
- @deepgram/sdk/3
- next-themes/3
- env-app-yaml/4
- @sentry/nextjs/3
- friendsofphp/php-cs-fixer/3
- react-cookie/4
- rimraf/4
- svelte-preprocess/3
- @neoconfetti/svelte/4
- @floating-ui/react/3
- @prisma/client/3
- @tiptap-pro/extension-ai-agent/3
- @tiptap-pro/extension-ai-changes/3
- @tiptap-pro/extension-ai-suggestion/3
- ai-sdk-tools/3
- diff-match-patch/3
- ollama-ai-provider-v2/3
- prisma/3
- firebase-functions/5
- prop-types/3
- @eslint/config-array/3
- canvas/3
- konva/3
- lru-cache/3
- use-image/3
- react-type-animation/3
- react-helmet/4
- react-sortable-hoc/4
- husky/3
- lint-staged/3
- remark-html/3
- jsonrepair/3
- decimal.js/3
- @strapi/strapi/3
- bookshelf/3
- express-promise-router/3
- js-levenshtein/3
- metaphone/3
- morgan/3
- remove-markdown/3
- stopword/3
- turndown/3
- csv-parse/3
- @rollup/plugin-node-resolve/4
- next-seo/3
- next-sitemap/3
- react-gtm-module/3
- eslint-plugin-prettier/3
- css-loader/4
- style-loader/4
- webpack/4
- webpack-cli/4
- @sanity/client/2
- @sanity/image-url/2
- groq/2
- multer/3
- @auth/core/2
- dotenv-cli/2
- @vercel/analytics/2
- node-html-parser/2
- messagebird/3
- pg/2
- qrcode/2
- @capacitor/assets/2
- react-redux/8
- redux/8
- @fastify/cookie/2
- @fastify/rate-limit/2
- fastify/2
- fast-diff/3
- google-map-react/3
- react-admin/3
- react-admin-import-csv/3
- react-clear-cache/3
- react-dnd/3
- react-markdown-editor-lite/3
- react-scroll-into-view-if-needed/3
- react-sortable-tree/3
- recompose/3
- @supabase/supabase-js/2
- pino-pretty/2
- vaul-svelte/2
- maplibre-gl/2
- @faker-js/faker/2
- @xyflow/react/2
- dagre/2
- knip/2
- mammoth/2
- pdf-lib/2
- pdfjs-dist/2
- rollup-plugin-visualizer/2
- shadcn/2
- pdfkit/2
- react-confetti/2
- canvas-confetti/2
- resend/2
- @prismicio/helpers/3
- @prismicio/slice-simulator-react/3
- eslint-plugin-svelte3/2
- @convex-dev/resend/2
- convex-helpers/2
- html-webpack-plugin/3
- webpack-dev-server/3
- unified/2
- unist-util-visit/2
- shadcn-svelte/2
- eslint-plugin-unused-imports/2
- @fullcalendar/resource-timeline/2
- dayjs/2
- dexie/2
- litepicker/2
- luxon/2
- patternomaly/2
- tippy.js/2
- redux-persist/7
- redux-saga/7
- @dnd-kit/core/2
- date-fns-tz/2
- mixpanel-browser/2
- handlebars/2
- twig/2
- google/auth/2
- guzzlehttp/guzzle/2
- runes/2
- fast-xml-parser/3
- eslint-plugin-only-warn/3
- he/3
- @svgr/webpack/3
- cmdk/2
- input-otp/2
- langfuse/2
- react-day-picker/2
- file-saver/2
- @babel/core/5
- node-sass/4
- @hotjar/browser/2
- country-list/2
- highcharts/2
- owasp-password-strength-test/2
- @emotion/react/3
- @mui/material/3
- rollup/3
- @cloudflare/kv-asset-handler/2
- remark-gfm/2
- http/4
- @ai-sdk-tools/memory/2
- drizzle-orm/2
- @lottiefiles/svelte-lottie-player/2
- @strapi/icons/2
- vite-bundle-visualizer/2
- doctrine/annotations/2
- @altano/satori-fit-text/2
- postcss-preset-env/4
- history/6
- sveaflet/2
- svelte-resize-observer-action/2
- npm/2
- use-debounce/2
- jsdom/2
- solc/2
- @codemirror/lang-css/2
- @codemirror/lang-html/2
- @codemirror/lang-javascript/2
- codemirror/2
- firebase-functions-test/3
- twig/twig/3
- @sveltestack/svelte-query/2
- broadcast-channel/2
- svelte-forms-lib/2
- javascript-time-ago/2
- scroll-into-view-if-needed/2
- crypto/3
- compression/2
- ts-node/3
- eslint-plugin-jest-dom/2
- eslint-plugin-testing-library/2
- rollup-plugin-svelte/2
- babel-loader/3
- nanoid/2
- mime-types/2
- cookie/2
- psr/simple-cache/2
- symfony/finder/2
- google/cloud-storage/2
- deepl-node/2
- html-minifier/2
- sanitize-filename/2
- stream/2
- transliteration/2
- turndown-plugin-gfm/2
- xml-escape/2
- html-to-text/2
- @fullhuman/postcss-purgecss/2
- @tailwindcss/aspect-ratio/2
- build/2
- interweave/2
- next-slicezone/2
- postcss-import/2
- prismic-reactjs/2
- react-device-detect/2
- @vercel/style-guide/2
- jest/2
- react-intersection-observer/2
- connected-react-router/4
- clean-webpack-plugin/2
- caniuse-lite/2
- image-size/2
- postcss-flexbugs-fixes/2
- simple-oauth2/2
- https/2
- @material-ui/core/3
- async/2
- aws-sdk/2
- codeclimate/php-test-reporter/2
- johnkary/phpunit-speedtrap/2
- lambda-audio/2
- socket.io/2
- matthiasmullie/minify/2
- eslint-config-airbnb/2
- react-dropzone/2
- tslint/2
- babel-eslint/2
- file-loader/2
- image-webpack-loader/2
- mini-css-extract-plugin/2
- postcss-loader/2
- sass-loader/2
- stylelint/2
- stylelint-config-standard/2
- stylelint-order/2
- terser-webpack-plugin/2
- squizlabs/php_codesniffer/2
- opn/2