How To Start Hacking Roam Research

As with everything I get invested in I like to go in deep and see what it can really do. One of the easiest ways to start to mould Roam Research to your will and make it unique for your use case is to add in CSS or JS. These are two official supported ways that are easy to implement and can also be removes at your will.


You can easily change the look and feel of Roam by tweaking the CSS of the pages. This can go from a little light modding, to in-depth changes on how the layout looks.

To start create a page called roam/css and simply add in a code block that specifies css. There are a huge range of options available already created and shared on the help pages. I am currently using ‘Better Roam Research’ to add in dark mode.

Don’t forget to change the code block to specify css, it defaults to Clojure.


If you want to go further into Roam and really start building things that customise it to your usage then roam/js is the place to be. There are a huge number of scripts available that do everything from add more buttons, to change the way Roam works in the browser.

To add in this capability create a page call roam/js or just a block with this as its only contents. Nested under this write the following. {{[[roam/js]]}}, this will give you the following warning.

It is worth paying attention to this, and only run scripts you are familiar with as there are security and safety issues to bear in mind with javascript. If you are completely sure, click “Yes, I know what I am doing” once you have nested the script you wish to use underneath. You can stop the js from running at any point by clicking “stop this”.

Your page will then look something like this:

This particular script I am running allows me to clear out empty Daily Notes pages and can be found here.

My Writing Workflow

The only thing that changes more than my task manager is my writing app. Not because I feature crave or move my blog all over the place, but because I really struggle with the environment. I love one place to store everything from short ideas, to articles to link and of course type out long essays. I don’t move often, but I certainly look at other options quite often.

So, a ‘writing app’ for me needs to be multifaceted and easy to use. It has to support markdown (that’s just how my brain works) and if possible make it easy to connect to. My current set up is none of those things but here’s why it’s the best thing I have ever found (that sounds like clickbait to me).

Apple Notes

My trusty notes app for collecting simple ideas and quick notes has barely changed. I have tried using the default iOS app for writing full posts too and although it does OK, it just doesn’t cut it for publishing or copying posts into other apps. I use this mostly using Siri or Shortcuts to grab quick bits of information to refer to later.

Roam Research

There are many, many things that I blame Matt Birchler for, and the vastest one of these is introducing me to this ‘app’. His excellent overview of Roam immediately hit home because of its powerful linking and note taking options. It isn’t a writing app at all, but has allowed me to write more than I ever have done simply by working the same way my brain does.

All of my posts start with a spark of an idea, it might be someone else’s blog post, a news article or something I have consumed during the day. Ideas jump out at me at all sorts of times and I quite often tap out the basis of a post in short bullet points of things to cover. Traditional note taking apps allow you to move between notes in a very restricted way, whereas with Roam I can use bidirectional links to string things together and notice connections I wouldn’t usually find.

I also use Roam for gathering meeting notes, collecting together information for my day job and also writing my morning pages, so to have something that can do everything for me is something truly rare for me.

The downside of Roam is that it is expensive, and isn’t really an app per se. It’s simply a progressive web app, and so some shortcoming on mobile exist — this isn’t an issue for me, but will be for some that prefer a more native app experience.


There is still nothing quite like Ulysses for fleshing out and finishing a post and hitting publish. It’s minimalistic but powerful workspace suits my needs perfectly. If Roam was my outliner and research bucket, Ulysses is where I polish the post until I am happy with it. For most posts my bullets and outlines are copied into Ulysses for me to finish off, tidy up and hit publish once ready.

That is not to say I couldn’t copy straight from Roam in markdown and publish to my blog, but I like to take the long way around. For continuity’s sake I then copy the finished article back into Roam with a blog post link incase I need to refer to it later. This keeps everything really neat and tidy. I may in future look at publishing with another app, and cut down my subscriptions costs, but currently these things fit really well together.