A small update on the roadmap for Shrugs.app. How are releases done, when do features and fixes get published.

First of all: There is no fixed schedule. Shrugs.app is not my sole project, but I’m going to continue to work on it and invest into it. It is considered a core ZeeZide product.

All ZeeZide applications are built on top of common frameworks. When working on one of my other applications (like HMScriptEditor or SwiftPM Catalog), that almost always benefits Shrugs.app as well.

Stable Releases (Shrugs.app)

The goal is to release one stable upgrade every three months. That would mean Shrugs.app 1.1 getting released around end of August / beginning of September.

Criticial fixes will be released as implemented. Shrugs.app 1.0.1 already shipped, 1.0.2 is work in progress.

Beta Releases (Marzipan.app)

In the past there was fluctuation in the publication of beta releases (called Marzipan.app). Sometimes there is one per week when I primarily work on smaller things, bigger features sometimes take a month.

Remember that beta releases are built off the main branch, with only limited testing. I try not to break anything as I live on them as well, but regressions can happen.

Even if you didn't purchase the support version, you can still download and test the betas! (with the same restrictions that apply to stable test versions).


The goal is to implement roughly one bigger feature per month. That could be search, support for status updates and typing indicators, or a channel management feature.

There is also a set of smaller features to be implemented, like double-clicking to open a file (Issue 7), or an action to open the Slack team in the browser for management purposes (Issue 6).

I’m primarily going to select the features to be implemented first based on the feedback of my valuable customers. Please tell me what you miss the most in the Shrugs issue tracker!

Current “Bigger Feature”: Memory Consumption

While it was obvious that people are going to look at Shrugs.app’ “low” memory consumption, I never actually planned it to be particularily low. I always wanted to make great use of the memory, not to win the price in the lowest overall consumption.

For the technically inclined: Shrugs.app has a highly optimized in memory representation of the timeline (e.g. it packs both message and conversation IDs in a single 64bit integer, stored within a segmented sparse array). The original goal was to allow the loading of huge (100k+ message) channels while keeping a lot of meta data in memory.

Turns out, that people really do want to see very low memory usage 😬 Shrugs.app 1.0 uses about the same as the Electron app (which got huge improvements in that area about a year ago). In smaller workspaces Shrugs.app often uses significantly less, in larger workspaces it can use quite a bit more. Primarily due to Shrugs.app aggressively preloading timelines.

Prior releasing Shrugs 1.0.0 I had to disable optimizations that dramatically improved memory usage. They introduced reliability bugs (primarily in proper reporting of unread counts, sometimes in messages not being shown).

So that is the current “bigger feature”: I’m currently refactoring the code to get those bugs under control and release a new beta which should dramatically improve memory usage. Stay tuned!

Helge Heß

Helge likes to build nice solutions.