Batman Would ❤ This Logging App

Today, the browsing of Swift event logs on a Mac gets even more convenient and powerful with the latest SwiftyBeaver Mac App update.

Continue reading even if you are not a SwiftyBeaver user, yet. There is surely something in for you as Swift developer or UX designer, too.


What is New?

  1. Search by username
  2. Improved analytics view
  3. Improved table view experience
  4. New window UI
  5. New shortcuts & timesavers

1. Search by Username

Double click to search by username

Each log event which is created on a device, be it an iPhone, iPad, Apple Watch or Mac, has a user “behind” it. Connecting your most important asset, your app’s user and his device, with a log event adds important context and makes support, marketing and general insight into how your app is used so much easier.

You can set a username in your SwiftyBeaver Logging Framework on app start. It is automatically stored, encrypted and sent together with the latest device and app analytics data plus the logs to the SwiftyBeaver Platform.

“quickly see who is using your app”

The username is such important information that the SwiftyBeaver Mac App is even displaying it always visible at the top of each log event. You can quickly see who is using your app and what he or she did in detail.

With the new 0.7.0 update you can now click on a username to automatically search for all logs of this user.


2. Improved Analytics View

Bane is using your app since 1 week. Congratulations!

In one of the last updates the analytics view was introduced but still as a rough proof-of-concept to collect user feedback. Today, the view is shipped with a polished look and improved experience based on that feedback.

“a more wholistic view of your user”

But let’s recap. What is the analytics view?

Like the username, additional details about a user’s device and the app itself before and at the moment of a log event provide a important additional context and a more wholistic view of your user while using your app.

The analytics view provides the following details:

  • since how many days and starts your user is using your app
  • what operating system version and device version it is running on
  • the initially installed app version and currently installed app version

Good to know: the SwiftyBeaver Logging Framework which is packaged with your app is gathering even more analytics data which is exposed soon.

New in today’s update is that the Analytics View is hidden on default, opened with new actions and is less visually distraction due to a new font color. The analytics view is displayed under a log event with an expansion animation of the row and requires one of the following actions to become visible:

  • double click on log event
  • pressed SPACE key while log is selected
  • pressed ENTER key while log is selected

The same actions hide / collapse the view.


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
  • custom shortcuts 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.


4. New Window UI

Goodbye window chrome.

Since Mac OS 10.10 the UI trends goes towards chromeless windows which means a window without the gray bar called Chrome (not affiliated with Google’s browser) at the top.

“designers at Wayne Enterprises would be surely pleased”

Today’s update is getting rid of the window chrome to provide more height to the actual display of log events. The top of the window can still be used for dragging and the removal of the gray bar at the top gives even more rest to the eyes due to a generally more consistent dark look. That dark-blue look internally gave the version the code name Dark Knight and the UI designers at Wayne Enterprises would be surely pleased.


5. New Shortcuts and Timesavers

Here is the quick reference list, some were already mentioned above:

  • CMD + F to focus on search field
  • TAB on search field to leave focus
  • SPACE or RETURN to show/hide analytics view
  • ESCAPE to unselect a log event
  • S to add / remove a star
  • Double click on filter to unselect all other filters
  • Double click on log event to show/hide analytics view
  • Hover an unselected log event to add / remove a star
  • Search field is cleared when sidebar buttons are clicked

All existing private beta users can simply download the update via “Check for Updates” or automatic update if selected. All other ones who want to try out the world’s first logging platform for Swift can add their email on our private beta waiting list and are getting access very soon. For all who want to learn more about the product check the release blog post.


Please continue to provide feedback via Slack, Twitter and email and thanks again to everyone for turning SwiftyBeaver into the logger we all dreamed of but never dared to ask. ❤

Show your support

Clapping shows how much you appreciated Sebastian Kreutzberger’s story.