Skip to content

One project. Every surface your app has.

Seven things that normally live in seven products, reporting into one schema, on one dashboard, under one bill.

Overview

Last 30 days

Visitors

24,812

+12.4%

Downloads

3,104

+8.1%

Active installs

2,689

last 7 days

Crash-free

99.6%

of sessions

Active installs

daily
web1.2M events
app840k events
errors312 open
logs4.1M lines
feedback27 new

Web analytics

All plans

Where they came from, and what they did next.

Page views, referrers, campaigns, countries and paths for the marketing site, with the download link tracked as the conversion it is.

Sources

by download rate
Referrer Visitors Downloads
news.ycombinator.com 8,412 1,104
google 6,238 702
github.com 3,901 688
reddit.com/r/macapps 2,874 401
direct 2,210 178
t.co 1,177 31

The tag is vanilla TypeScript, under 3KB gzipped , loads nothing else, and writes nothing at all before consent. Both numbers are held by tests rather than by intention.

Downloads

All plans

Which build people actually take away.

Downloads by platform, architecture and version, and how the mix moves across a release. It is the one surface that sits between the website and the app, which is exactly why most stacks drop it.

Downloads

by platform · last 30 days

macOS · arm64

52.9%

1,642

most on 2.7.0

Windows · x64

29.1%

902

most on 2.7.0

macOS · x64

12.5%

388

most on 2.6.4

Linux · AppImage

5.5%

172

most on 2.7.0

Product analytics

All plans

Ordered funnels and cohorts, from inside the app.

Events, properties, ordered funnels and retention cohorts, counted per install rather than per session, so an event queued offline and replayed after a restart still belongs to the run it came from.

Activation

in-app · per install
app.opened app 2,689
project.created app 1,904
source.connected app 1,421
report.exported app 1,168
returned on day 7 app 902
Cohort D0D7D30D90
Wk 1 100% 62% 48% 41%
Wk 2 100% 66% 51% 44%
Wk 3 100% 71% 58%
Wk 4 100% 69%

Errors

All plans

Grouped by fingerprint, priced in people.

A stack trace is not urgent because it fired a thousand times. It is urgent because it fired for two hundred different people, all of them on the release you shipped on Tuesday.

Issues

grouped by fingerprint

TypeError: cannot read length of undefined

new

src/sync/reconcile.ts:184

1,204

events

214

people

SQLITE_BUSY: database is locked

src/db/pool.ts:62

486

events

98

people

FetchError: request to /v1/sync failed

src/net/client.ts:41

203

events

61

people

Logs

ProTeam

The app and the backend in one stream.

Structured lines from the desktop client and your server, searchable together and kept long enough to answer a question from three weeks ago rather than three hours ago.

Logs

live
Time Source Level Message
13:39:24.591 app info sync.start cursor=8f21c0 items=412
13:39:24.902 api info POST /v1/events 202 in 31ms
13:39:25.114 app warn sync.retry attempt=2 reason=timeout
13:39:25.640 api error SQLITE_BUSY: database is locked
13:39:26.008 app info sync.done applied=412 conflicts=0
13:39:26.771 web info pageview /pricing ref=github.com

Feedback

All plans

A bug report that arrives with its own evidence.

The in-app reporter attaches the version, the platform and the last exception before the report was written. What lands is a ticket rather than the beginning of a conversation about which build they are on.

Feedback

27 new

Export hangs on any library over ~2k items. Spinner never stops.

new
anna@… v2.7.0 macOS 15.2
linked issue SQLITE_BUSY: database is locked

Would pay for a Windows build with the same shortcuts as the Mac one.

idea
install 9f2a… v2.7.0 Windows 11

Crashed right after granting disk access on first launch.

linked
sam@… v2.6.4 macOS 14.6
linked issue TypeError: cannot read length of undefined

Releases

All plans

Adoption, retention and crash rate on one row.

A version model is what turns a retention cliff from a mystery into a build number. Ship, watch the three numbers move together, and roll back on evidence.

Releases

adoption · 7-day retention
Version Share D7 Crash

2.7.0

4 days ago

58%
71% 0.42%

2.6.4

3 weeks ago

27%
74% 0.11%

2.6.1

2 months ago

11%
69% 0.14%

< 2.6

older

4%
52% 0.19%

Everything above, from one Docker command.