Skip to content

Repository Data

Manifest

The community plugin list and the plugin manifest share some common fields, such as the name, author, and description. This can lead to mismatched data, when only one of the two sources is updated. The following chart shows the percentage of plugins that have mismatched data in their manifest.

Some fields in the manifest are optional, such as authorUrl and fundingUrl. Additionally, some plugin authors add extra, non-standard fields to the manifest, such as helpUrl. The following chart shows the percentage of plugins that have these fields set.

Plugins can specify that they only work on the desktop version of Obsidian, which is useful for plugins that use features not available on mobile.

Programming Languages

The below chart shows the lines of code per programming language, summed over all plugins. Only languages with more than 10,000 lines of code are shown.

The next chart shows the number of plugins that use a specific programming language, sorted by the number of plugins that use it.

Dependencies

Package Manager Usage

Plugins may bundle additional dependencies into when building a release. There are several package managers that can be used to manage these dependencies, such as npm, yarn, and pnpm. These package managers create a lockfile in the repository, which can be used to determine which package manager was used.

The below chart shows the distribution of package managers used in plugins.

17.8% of plugins have no lockfile.

Code Bundler Usage

The vast majority of plugins consist of more than just a single JavaScript file. Since Obsidian can only load a single JavaScript file, plugins need to bundle their code into a single file. This is done using a code bundler, such as Esbuild. Usually, the bundler is listed as a dependency in the plugin's package.json file.

3.9% of plugins use no code bundler.

Developer Tooling Usage

Plugin developers like to use tooling to make their jobs easier. The chart below shows the usage percentage of common developer tooling.

Testing Framework Usage

When building a plugin, it is important to test it to ensure that it works as expected. There are several testing frameworks that can automatically test small parts of plugins, so called unit tests. The chart below shows the usage percentage of common testing frameworks. The data is extracted from the package.json file of the plugin.

76.3% of plugins use no testing framework.

Frontend Framework Usage

For complex user interfaces, plugins may use a frontend framework to make development easier. The chart below shows the usage percentage of common frontend frameworks. The data is extracted from the package.json file of the plugin.

Most Used Dependencies

This table shows direct dependencies of all plugins, sorted by how many plugins use them. Dependencies with less than one percent usage are not shown.

Name Usage Percentage
obsidian 90.1%
typescript 88.7%
@types/node 86.7%
tslib 86.1%
esbuild 77.3%
builtin-modules 76.5%
@typescript-eslint/eslint-plugin 73.4%
@typescript-eslint/parser 73.2%
eslint 17.0%
prettier 14.0%
jest 11.5%
ts-jest 10.5%
@types/jest 10.5%
rollup 10.3%
@rollup/plugin-node-resolve 10.3%
@rollup/plugin-commonjs 10.2%
@rollup/plugin-typescript 10.1%
@types/react-dom 7.8%
react 7.8%
react-dom 7.8%
@types/react 7.5%
@codemirror/view 7.4%
@codemirror/language 6.5%
@codemirror/state 6.3%
svelte 5.1%
eslint-config-prettier 4.8%
svelte-preprocess 4.8%
@popperjs/core 4.7%
@tsconfig/svelte 4.4%
dotenv 4.4%
monkey-around 4.3%
@eslint/js 3.8%
esbuild-svelte 3.8%
ts-node 3.7%
typescript-eslint 3.7%
husky 3.7%
eslint-plugin-import 3.3%
lodash 3.1%
vitest 3.1%
moment 3.0%
@types/lodash 3.0%
uuid 2.9%
eslint-plugin-prettier 2.7%
sass 2.7%
obsidian-dataview 2.6%
openai 2.6%
jest-environment-jsdom 2.6%
obsidian-daily-notes-interface 2.6%
@biomejs/biome 2.6%
obsidian-typings 2.5%
svelte-check 2.4%
esbuild-sass-plugin 2.3%
axios 2.2%
globals 2.2%
@types/uuid 2.1%
lint-staged 2.0%
vite 2.0%
standard-version 1.9%
rollup-plugin-copy 1.9%
electron 1.8%
codemirror 1.7%
@babel/preset-env 1.7%
postcss 1.6%
@types/luxon 1.6%
yaml 1.6%
lucide-react 1.6%
luxon 1.6%
@rollup/plugin-json 1.5%
esbuild-plugin-copy 1.5%
js-yaml 1.5%
@codemirror/commands 1.4%
@babel/core 1.4%
@babel/preset-typescript 1.4%
jsdom 1.4%
eslint-plugin-react 1.4%
@types/js-yaml 1.4%
cross-env 1.4%
babel-jest 1.3%
tailwindcss 1.3%
zod 1.3%
nanoid 1.3%
i18next 1.3%
@codemirror/search 1.2%
prettier-plugin-svelte 1.2%
crypto-js 1.1%
eslint-plugin-react-hooks 1.1%
@lezer/common 1.1%
fs-extra 1.1%
semver 1.1%
eslint-plugin-svelte 1.1%
tsx 1.0%
date-fns 1.0%
jszip 1.0%
autoprefixer 1.0%
ts-loader 1.0%