What is the tech stack currently?

What third party libraries are being used? That might give people some ideas.

1 Like

It should be easy to inspect the Obsidian app bundle.

I probably can’t name all of them but from the top of my head:

  1. CodeMirror;
  2. D3.js for force simulation;
  3. PIXI.js;
  4. Reveal.js for slides;
  5. markdown-it for parsing;
  6. Moment.js;
  7. MathJax 3;
  8. Pdf.js by Mozilla;
  9. Prism for syntax highlighting.
16 Likes

Out of curiosity, what is PIXI.js used for?

It’s for drawing the nodes and edges in graph view. We used to use d3.js for both force simulation and SVG drawing, but the performance was subpar for thousands of notes. PIXI.js uses WebGL and is way faster.

4 Likes

I’m just curious. Despite being only 1 person, the founder and main developer of the software is pushing releases across all 3 platforms (Windows, Linux and MacOS) consistently. He must be using some sort of desktop framework in order to push this out simultaneously right?

I don’t think he’s using any web-based framework either like Electron that runs on the Chromium engine. Because if that’s the case then there would already be a web-based version of this app. It also helps for me to decide on which framework to build my future application in next because I plan to make a cross-platform stand-alone desktop application like Obsidian is.

3 Likes

There are two developers, two cats and a baby:
see: About - Obsidian

4 Likes

You are wrong, it does use Electron powered by Chromium under the hood. And I think there is some shared codebase between Obsidian, Obsidian publish and Obsidian mobile

I wonder what they use to render the markdown as HTML?

CodeMirror: https://codemirror.net

that’s the editor. Does it also take care of the conversion from markdown to HTML?

Sorry, I guess I’m not sure.

From Licat’s post, i presume the devs is using prism.js for rendering the reading view.

That’s just for syntax highlighting in code blocks.

Hi,

I think I can borrow this topic for my question.

I’d like to know what JavaScript framework (e.g. Vue, React) Obsidian desktop application is using for creating the user interface? I’m a plugin developer and I’m looking for a framework to make it easier to create advanced UIs for settings. The best solution would be if Obsidian is already using some JS framework, so I would not have to bloat my plugin by including a framework in it.

A simple example about what I’m looking for in a UI framework is the ability to change displayed text just by changing the value of a variable. I created a JSFiddle example on Vue: Vue: Change displayed text when variable changes - JSFiddle - Code Playground

I don’t know if this has been asked before. I tried to search from both the forums and Discord, but did not find.

None, it’s all custom.

You can find the list of all third party libraries we are using here: https://help.obsidian.md/Obsidian/Credits#Third+party+acknowledgements

2 Likes