3. Improved Table View Experience

It’s full of stars … and so much more.

Since SwiftyBeaver is a tool from Swift developers for Swift developers please allow me to give some insights about what is going on under the hood.

Until now, the Mac App was using a standard NSTableView with Cocoa Bindings to display and update the log events. That had the advantage of shipping the app faster to you because Cocoa Bindings save a lot of lines of implementation source code of the table view logic.

But they also come with some expected downsides. For example Bindings are just meant for static data in a table view and every data update (every new log event) automatically reloaded the whole table view. Due to the massive performance of today’s Mac computers surely none of your ever realized that but you could still see it in short CPU peaks if done frequently.

Even worse was the complete lack of animations on incoming log events which made it hard to quickly identify what is new and when to pay attention to the app.

Long story short, Cocoa Bindings are awesome but not well suited for a table view displaying dynamic content and today’s demands on user experience.

With today’s update a completely rewritten table view logic is released without Cocoa Bindings but with many customizations to meet modern expectations on how a table view should behave.

Here are some visible things that are new:

animated insertion / removal of log events

/ removal of log events custom shortcuts to interact with log events

to interact with log events detection of mouse hovering over a log event

strongly reduced CPU load

more stable and fast rendering logic due to caching & granularity

all rendering issues which happened on fast scrolling were fixed

So from the outside it may not appear like something revolutionary new but internally more than 30% of the source code was rewritten, tuned and heavily stress-tested all with the goal for an even smoother user experience.