▍moblog

private beta · logs for mobile apps

What happened on their phone?

moblog collects the logs your iOS and Android apps write, from every device, even offline, and finds the ones you need in seconds. Search all of them, or open one user's session and read it from launch to the error.

We're letting teams in a few at a time. Leave your email and we'll write when it's your turn.

~/moblog — session 4f2a91

iPhone 15iOS 18.2shop 4.12.03m 12s1 error

  1. 09:41:02.114infoapp launched cold_start_ms=812
  2. 09:41:05.530debugcart: 3 items total=84.90
  3. 09:41:21.002warnnetwork: offline, queueing events queued=14
  4. 09:42:47.880infonetwork: back online sent=14↳ 14 events from the subway, in the order they happened
  5. 09:42:48.215infocheckout: payment sheet opened provider=stripe
  6. 09:42:51.601errorcheckout: payment failed code=card_declined email=[email]
  7. 09:42:51.640infoui: alert "Something went wrong"

the email was masked on the way in: moblog never stored it

## why moblog

Most bugs don't crash.

A user writes “checkout didn't work”. Your crash reporter has nothing, because nothing crashed. Analytics shows a drop in a funnel, not why. The answer is in the logs your app wrote on their phone, and until now, those stayed on their phone.

  1. 1 /

    Log like you already do

    Send the events your app writes: a message, a level and any fields you like. They're batched, compressed and retried when the phone is back online.

  2. 2 /

    Find the user

    Type user_id:1842, a device, an app version or the error. Every event of every phone is searchable in seconds.

  3. 3 /

    Read their session

    Every event of that session, in the order it happened on the device, with the device, OS and app version beside it.

## built for phones

Logs that know they came from a phone.

Server log tools assume a machine that's always online and a clock you trust. Phones are neither, so moblog is built around sessions, devices, app versions and flaky networks.

  • Offline is normal

    Phones lose signal. Events are batched on the device and sent when it's back, keeping the time they happened. A retry never counts twice.

  • Sessions, in order

    Each event carries its session, device and user. Open any of them and read it like a story, from launch to the error.

  • Personal data, never stored

    Emails, phone numbers, card numbers, tokens and IP addresses are masked as events arrive, before anything is written. Mask, hash or keep, per project.

  • Live tail

    Watch events arrive while you reproduce the bug on a test phone. Filtered on the server, so you see only what you asked for.

  • Search you can type

    level:error app_version:4.12.* platform:ios. Fields, wildcards, ranges and free text, with errors that point at the mistake.

  • Drop the noise before it costs

    Drop or sample chatty events as they arrive, by level, app or any field. You pay for what you keep.

## cli

Your logs, in your terminal.

What the web app does, the moblog CLI does too: search, live tail, sessions, keys and settings. Log in once by approving it in your browser; the output pipes into the tools you already use.

~/shop — zsh

moblog login

Logged in to Acme (acme) as ana@acme.dev, on this computer as "ana-mbp".

moblog tail 'level:error app:shop'

09:42:51 ERROR checkout: payment failed code=card_declined user_id=1842

moblog sessions user_id:1842

STARTED LENGTH USER DEVICE APP EVENTS ERRORS 09:41:02 3m12s 1842 iPhone 15 4.12.0 41 1

## pricing

Priced per log, not per seat.

Add your whole team. Pay for the logs you keep, and drop the ones you don't before they count.

free

$0up to 25M logs a month

  • 7-day retention
  • every feature
  • your whole team

usage

$0.10per million logs

  • 30-day retention
  • search and live tail included
  • no per-seat pricing

Planned prices for the launch. A log is an event of up to 1 KB.

## faq

Questions

Is moblog a crash reporter?

No. moblog is for logs: the events your app writes. Keep your crash reporter; moblog shows what led up to the crash, and to the bugs that never crash.

How do I send logs?

Over HTTP (JSON, batched and compressed) or with OpenTelemetry (OTLP logs). SDKs for Android (Kotlin), iOS (Swift) and React Native, with the offline queue built in, are on the way.

What about my users' privacy?

Personal data is masked on the way in, before anything is stored, and IP addresses are dropped once their country is known. You choose per project what to mask, hash or keep.

Where is the data kept?

On AWS in the US (us-east-1). Each project has its own retention, and events past it are deleted.

When can I use it?

We're opening the beta to a few teams at a time. Join the waitlist and we'll write when it's your turn.

See what happened on their phone.

Join the waitlist for the beta. One email when it's your turn, nothing else.