iA Writer Design Review
I discovered iA Writer on accident. I was looking at blogging platforms and saw a video demonstrating Blot, in which the author uses iA Writer to write his posts. I gave it a try and loved it enough to buy it a few days later.
In this piece, I explore what makes iA Writer stand out, describe how I would improve the iA Writing Experience, and explore iA Writer's potential as a knowledge store.
Despite the number of note-taking apps on the market, new ones emerge from time to time. People use OneNote, Evernote, and Joplin for traditional note-taking. They use The Archive, Zettlr, and Roam Research with the Zettelkasten method. If you take notes and need to reference them later, chances are you can find an app to help you.
While these knowledge stores offer different features, they all optimize for reading, not writing. That makes sense; if you build a library, you expect more people to check out books than write books. Plenty of software is built to prioritize reading over writing — caching systems are one example. Yet when we set this priority, we tend to ignore the writing experience. How long will you use a knowledge store if you don't enjoy contributing to it?
Why iA Writer?
IA Writer while writing this post
In contrast, iA Writer optimizes for writing since its a writing app. It nailed the writing experience. When I started using it, I found myself writing for hours at a time.
It has a simple but effective set of features to help you write. Focus Mode hides all text outside your current sentence, paragraph, or line (in Typewriter mode). The Style Checker helps you eliminate filler words. The keyboard shortcuts keep your hands on the keyboard to spend more time writing.
In addition to these features, iA Writer includes its own font: an optimized IBM Plex Mono. Using a monospaced font over a sans-serif implies your work is in progress rather than finished — you're writing, not reading. The font is variable, which allows iA Writer to create a pleasant writing experience on all devices.
iA pairs useful features and good design with a solid business model. Their focus on limited features shows they prioritize measures besides growth. Their Tokyo office shows they consider non-Latin writing systems. Their decision to create separate, paid native apps shows they value high-quality products.
iA Writer is a humane product built with care and built to last. It's fantastic at what it does and delivers on its promises. I have nothing to complain about.
Where iA Writer Could Improve
I'd like to suggest a few minor changes that would sell me — and many others — on iA Writer as a knowledge store. The goal with these changes is to increase writing flow while maintaining consistent styling.
iA Writer's tags have a couple issues. First, the smaller size and different font makes them stand out too much. Second, the smaller text creates a visual bug when the tag contains a misspelled word.
MISSPELLING creates a small visual bug
To fix this bug and improve the editor's consistency, I made the tag's text the same size and color as the body text. Now, background color distinguishes tags, code blocks, and regular text.
Other apps with "tagging" create links on each tag to filter notes by that tag. I decided not to implement this, as it would take users out of the writing flow.
OLD VS NEW iA Writer tag styling
The Zettelkasten method I follow relies on internal links to connect ideas in different notes together. Using these creates a "web of knowledge" which helps people find insight from unrelated concepts. This should be possible in iA Writer, which contains all the functionality to implement internal links. They're all I need to transition my notes from my patchwork Zettelkasten into iA Writer; thus, I'll attempt to implement them here without forcing writers to look away from the editor.
Other apps implement internal links with
[[file name]], to ensure they differ from regular links. Typing
[] — or entering a keyboard shortcut — plus a few characters in the brackets could bring up a simple auto-complete input, allowing users to pick the file to which they want to link. Once the user closes the brackets, he or she can continue writing as normal. In essence, internal links move the Library's filter functionality into the editor.
How would users see autocomplete options? I considered two approaches.
The dropdown approach lists all options underneath the text you're typing. This would look similar to the existing Quick Search functionality (
Cmd + Shift + o).
QUICK SEARCH functionality
The fish approach, named after the fish shell autosuggestions, shows the closest metching text as a shadow in front of your cursor.
FISH SHELL autosuggestions
In both cases, the autocomplete choices would appear after typing the Internal Link indicator
[] and a few characters.
I decided to implement the fish approach. This feels more natural for me on desktop, since I'm used to a command line interface. It might not suit mobile users, though, and the iA team should consider implementing both approaches. Users could switch between the two options in the iA Writer preferences.
THREE states for internal links: in progress, valid, and invalid
Internal links should look and function similar to external links. That is, they should have an underline, the same low-contrast gray, and
Cmd + Click (on macOS) should bring that note into focus.
Other note-taking apps with internal links give you a preview of the linked note while typing its name. iA Writer should not adopt this feature, since it distracts from writing.
One potential issue is how links to a note change when the note's name changes, or that note is deleted.
Going through all references to a note and changing them to match the new name creates a poor user experience. If the user sorts their Library by "Date Modified", they will suddenly see all the referencing notes jump to the top. To avoid this, you could hide these background edits. But that might lead users to check the links manually since they don't see the background changes. This solution doesn't account for deleted links either.
Leaving stale links for the user to fix is a decent option. Invalid links on old notes could feature a crossed-out name, as iA Writer does with style-checked filler. Even though different font colors are available, using color alone to indicate an error could confuse colorblind users. The app could combine color and crossing-out to draw more attention to the invalid links. This accounts for deleted links and other error states, e.g. when a user types a note name the system can't find.
That option isn't ideal either, as it places the burden of note cleanup on the user. Another option that could work is permalinks, i.e. using a different attribute besides name for linking between notes. This means name changes will not affect old links. Yet this could make reading internal links more confusing, since the chosen attribute may not indicate the note's content.
Each solution I've mentioned has trade-offs. The iA Writer team should discuss and test each one to see which works best. The screenshot above uses the second solution.
Last Note/Next Note Shortcuts
With internal notes, I would like to quickly navigate between the notes I've opened. I currently open the Quick Search menu (
Cmd + Shift + o) and type in the name of my last note, but this isn't ideal. Having hotkeys for note navigation fulfills my need and could replicate the Preview functionality in other apps. Plus, Writer has shortcuts to navigate between note directories (Go → Back / Forward), why not add shortcuts to navigate between notes?
Similar writing tools use
Cmd + [ for back and
Cmd + ] for forward. But I'll leave this decision up to the iA team.
iA Writer is a fantastic app with a top-notch writing experience. Its feature set is lean but polished. In that spirit, I suggest minor tweaks, a few keyboard shortcuts, and a re-packaging of existing features. These adjustments could position iA Writer as the premier note-taking app for researchers, knowledge workers, and Zettelkasten maintainers everywhere.
Is there anything I missed or got wrong in this review? Let me know!