Activity history

Shake diligently tracks user's interaction with your app, their network traffic, notifications, logs and system events, and automatically attaches all of those to every bug report.

Introduction

You can inspect all events that lead to the bug being reported out-of-the-box. You'll see a link to Activity history in the top right corner:

Activity screen

Setting up

User actions

SDK automatically observes taps made on your app's UI elements.

note

This feature is disabled for iOS applications built with SwiftUI.

Screen changes

SDK automatically tracks application screen changes, more precisely, ViewController lifecycle.

For iOS applications built with UIKit, there is no need for additional configuration.

Applications built with SwiftUI should use the Shake provided View extension on their top level views which represent screens in their application.

shakeIntercept View extension allows Shake to hook into the View lifecycle and notify Shake of the screen changes. The extension does not alter the View in any way and allows it to passthrough unchanged.

MySwiftUIContentView.swift
struct UserDetailsView: View {
var user: UserModel
var body: some View {
VStack {
user.avatar
Text("Name: \(user.name)")
/// Additional layout
}.shakeIntercept(viewName: "UserDetails")
}
}

Network requests

Shake will capture the user's network traffic and log the events on the web dashboard.

Go through this setup article to get started.

System events

System events are tracked automatically and require no additional setup. These are application lifecycle events.

Notifications

Notifications are tracked automatically and require no additional setup.

If you want Shake to manually handle notification tracking, you can use this method instead:

AppDelegate.swift
Shake.handleNotification(withNotificationTitle: notificationTitle, notificationDescription: notificationDescription)

Custom logs

You can add your own custom logs to Activity history, which will then be shown as part of every bug report. Here’s an example of how this would look like in code:

AppDelegate.swift
Shake.log(LogLevel.info, "Log message goes here!")

Here are all possible log levels you can use:

AppDelegate.swift
LogLevel.verbose
LogLevel.debug
LogLevel.info
LogLevel.warn
LogLevel.error

Console logs

Console logs are recorded automatically and require no additional setup. If you want to disable this feature use the method below:

AppDelegate.swift
Shake.configuration.isConsoleLogsEnabled = false
note

Make sure that activity history is enabled if you want to send console logs with your report.

Limitations

In a Free workspace you can see up to 20 events that lead to every bug. If you need to dive really deep to find causes of the weirdest bugs, in a Premium workspace you can browse the entire activity history.

Network request limit for both request body and response body is 100 kB respectively. If request body or response body contains binary data, it will be presented as a Binary data string.

Enabling and disabling

Activity history is enabled by default, however, you can use the method below to disable it:

AppDelegate.swift
Shake.configuration.isActivityHistoryEnabled = false