SilverBullet

An open-source, fast, WYSIWYG, and free Progressive Web App (PWA) that supports Markdown, templates, queries, and cross-device synchronization. Incredible!

SilverBullet

Errata 2023-11-27

  • Dark mode is supported via the command menu, I had said it was not available in the original post
  • Frontmatter keys are now shown in a dark red font similar to VS Code

Welcome to Episode #107 in my slowed-down but not-ended adventure to find the best Android note-taking app. Before telling you about the app, a quick welcome to new subscribers.

💡
A warm welcome to Patrick from Burlington, Ontario and fellow Canadians Mike, Alain, and Derryck. All the way from Brazil, welcome Luísa as well as Armaan from the U.K., Raphael from Ireland, Neha from India, Martin from South Africa, Andre from Germany, and back closer to home Jaji from New Jersey. Thank you all for following along!

A big thanks to Nicholas D. for telling me about SilverBullet back in September and for being patient as I got through a couple of other reviews. Here's what Nicholas wrote:

It ticks all points on your must have list... It is selfhosted, stores notes locally, uses a webapp for access on any devise and syncs across devices, uses markdown and is WYSIWYG, has tags, page embeds into other pages and queries. I switched to it from Logseq after a year of use.

He's right. I love this product and I haven't been this excited about an app for a while!

SilverBullet is open-source and free but not really an Android app so I'm vying slightly off course. Instead, it's what's called a Progressive Web App (PWA) which means it's completely Web-based.

Before you read on: if you're not technical and don't have someone technical to help you get set up, then you may not be as excited as me.

You can get this running easily on your laptop following the instructions but you'd need to keep your laptop on. Really what you'd want to do is self-host the server somewhere, I will likely put it on one of my Raspberry Pis lying around or maybe run the Docker image on my Unraid server.

For techies, a bit of under-the-hood info. SilverBullet is written in TypeScript and leverages the CodeMirror editor engine which is common to a lot of major products and services so it's a stable platform.

Even though it's Web-based, SilverBullet supports offline editing which is pretty incredible. You just need to make sure to click a button to change modes before you go offline. That button synchronizes the notes.

The app implements a number of Markdown extensions including a really important one: you can link pages using [[wiki-style]] links and embed the pages within other pages. This makes it a huge contender in the Personal Knowledge Management (PKM) world.

You can create inline checklist items using - [ ] Markdown notation which is clickable when in preview mode. All of the text formatting is there and you can ==highlight== text which is one of my favorite things to do both in digital and physical books.

SilverBullet also supports metadata in notes using YAML within Frontmatter just like Obsidian and a few other apps. Since I use this heavily it was so great to see it in SilverBullet!

The app is writing-focused so you can do everything from the keyboard. At first, I was worried there were no toolbars, but you can perform a ton of actions using the  / key which keeps both your hands on the keyboard. So much so that you can type /h2 and voila, the text becomes heading level two pre-pending ## in front. I didn't realize Obsidian has the same feature and I've been using it for 2 years, doh!

What's impressive is that you can also create your own custom / shortcuts to inject snippets of code or run other commands. Speaking of customization, the app can be extended using "Plugs" (short for plug-ins) and there are 15 already, many by Zef but also some by other Developers.

On the downside, it took about 6 minutes to index my 14,612 notes from my HALmd Obsidian vault (aka folder) and 10+ minutes to go offline. At one point, it took up to 15 seconds to render the main page so I thought it wasn't working. I suspect it was Grammarly getting in the way. As a reference point, Obsidian loads the same set in about 5 seconds on the same laptop. I expect most of you don't have the insane quantity of notes that I have and this won't be an issue for you. Once loaded, the app was very fast!

The most powerful feature of SilverBullet is its ability to query all of your notes and generate clean-looking output in a table or inline text using templates. In other apps, this either doesn't exist or requires one or more plugins.

Read on for the ugly, the bad, the great, and the awesome aspects of SilverBullet.

Meta

Ugly

  • Local first-ish (can access local files but needs a server)

Bad

  • Can't click the folder names in the filename to navigate to another folder
  • No local images using ![[img]] so my Obsidian images didn't render
  • Clicking on a #tag does not show all notes with that tag
  • No #tag list on a sidebar but you can create a tag list with queries
  • No file navigation on the side, you need to use the open file menu
  • Can't collapse frontmatter, would like it to be collapsed by default
  • I found the ">_" in front of menu items to be cluttered (very minor)
  • Search results don't provide any context beyond the filename and Score (1) which is not explained

Good

  • Text formatting: bolditalics, underline, strike-through
  • Code and code blocks
  • Quotes and quote blocks
  • Inline checkboxes
  • Bullet lists
  • Numbered lists
  • Hyperlinks
  • 4 heading levels
  • Horizontal line
  • Dark mode
  • Preview pane
  • Search across notes
  • During indexing, it seems to attempt to open URLs it finds, which is cool to ID broken links but slows down the indexing process

Great

  • Markdown support via CommonMark
  • Recognizes file changes made in other apps and re-indexes
  • Can see a log of activity in the command line of the server, cool to find errors in Markdown
  • Can see errors in Markdown as it indexes, cool
  • highlight text
  • Tables
  • Tags
  • Checklist items
  • Insert date: today, tomorrow, last week, next week
  • Customizable via CSS

Awesome

  • Open-source (MIT license)
  • Free
  • Fast (once loaded)
  • Live preview (aka WSYISYG editing)
  • Automatically generate tables of files showing metadata as columns
  • Link pages with wiki links: [[link to page]] and aliases
  • Frontmatter and Attributes
  • Templates
  • Fenced code blocks
  • Anchors in pages via $anchor
  • Queries
  • Tables
  • Task lists
  • Highlight
  • Paste a URL onto text and it generates the Markdown [label](link)
  • Plugin support.: Github, Graph View, KaTeX, Mattermost, Mermaid, Serendipity, Twitter

The end-ish

SilverBullet is quite incredible especially for primarily one-person writing the app. If you are even a little technical, I'd suggest trying it out. With more canned environments or some hosting, Zef could bring this to a lot more people but with that comes headaches of running infrastructure.

I will most definitely continue playing with SilverBullet once I get through some things at work and the Design Strategy course.

In the meantime, have some great note-taking weeks ahead and thanks for taking the time to read my post!