🅭

Sync issues finally drove me away from the Joplin note-taking app

My note-taking app of choice for the last three years has been Joplin, an open-source note-taker for Android, Linux, MacOS, and Windows. As I discussed in my app review, the desktop app is good, but the Android app has some issues. In the last year, updates to the app have brought along more issues. I can no longer rely on it, and the time has come for me to migrate away from the Joplin app.

Joplin used to get cross-platform synchronization and conflict handling right. It was fast, reliable, and I would never lose a note to synchronization issues. For the last year, however, it’s been a different story.

The issues began with the release of Joplin version 2.6.3 for Android, released . It updated to a newer version of the Android software development kit (SDK). The SDK imposed new restrictions on the Application Programming Interface (API) used to access the file system. Joplin released the update with the new SDK without making the necessary changes to support the new file system API. See Joplin project issue #5779.

Until then, I’d synchronized my Joplin notes to a folder on my phone. The Syncthing app would then keep the notes folder in sync on all my devices. It worked great with my thousands of notes, and the synchronization delay was only a couple of seconds at most.

Without access to the file system, I had to quickly make other plans for synchronizing my notes. The notes Joplin store remotely are end-to-end encrypted (E2EE), so I can use any of the cloud-based storage solutions it supports.

I initially set up a WebDAV server to handle the syncing but gave up after a few days due to various interoperability problems. I then switched to using my Microsoft OneDrive account. However, the synchronization with OneDrive was infuriatingly slow; it took over three minutes to sync a single new note. I switched again over to Dropbox.com. It brought the time required to sync down to roughly 45 seconds.

OneDrive and Dropbox.com worked fine on desktop, but the synchronization on Android was fraught with problems. Syncing would frequently fail, and I had to restart the synchronization to get it working manually.

After the most recent update to Joplin version 2.8.3, released in , things took a turn for the worse. Joplin now gets indefinitely stuck when synchronizing to any remote storage service. I can’t abort the synchronization once it starts; instead, I get stuck in an infinite cancellation state.

I can make the problem disappear by removing thousands of notes from my notebook. Joplin struggles with synchronization targets other than the local file system once you exceed approximately 600 notes.

The workaround I found requires me to force-quit the Android app, restart it, and quickly start synchronization from a desktop app. The Android app then detects that some other client is synchronizing and stops. Once in this state, I have to wait for the desktop client to complete the process and manually start the synchronization from the Android app again.

What frustrates me the most is that I really appreciate the user experience and workflow in Joplin’s desktop application. I don’t want to switch! I wish I could continue using the app and have it work on all my devices!

However, the Android app has never been as good as its desktop counterpart. It has serious performance issues when editing long notes and is slow to open. The app has overall been more functional than the competition, however. I don’t consider apps that sync to a cloud service without E2EE as a competitor to Joplin. Those apps are just voluntarily installed spyware apps.

I hoped the project would quickly fix the Android file system API issue. However, it has been over a year, and it’s still not fixed. The project has received code contributions to fix the issue, but has yet to release a new version with those fixes. At the time of writing, Joplin version 2.8.3 (released in ) is still the most recent version for Android.

In an annoying coincidence, Joplin released its new Joplin Cloud-storage subscription service a couple of months before the native file system syncing broke. I support this move, as it’s likely to bring in funding to help maintain the open-source project and keep it going. Other cloud-storage vendors are also still available in the app. However, losing my favorite cool self-hosted peer-to-peer (P2P) note-taking application still feels terrible.

Anyhow, I haven’t found a solution to the cloud-syncing issue, and local file system syncing support doesn’t seem to be coming back anytime soon. Losing quick and reliable note synchronization has significantly hampered my productivity over the last year. You can even see it in the reduction of new articles on the blog!

So, earlier today — I exported all my notes from Joplin and deleted the app from all my devices. Bye, bye, Joplin! Thanks for all the notes! I’m currently reviewing a few different options for a possible replacement. For the time being, I’ll be using individual plain-text files in a directory hierarchy that I sync with Syncthing.

Disclaimer: I recently took a position with one of Joplin’s competitors. (I’ll share more details on that soon.) I decided to stop using Joplin three weeks before I began any talks with my new employer. The two events are unrelated and didn’t influence each other.