Find where your app loses money.

Product analytics for React Native apps with a paywall. See where users drop off before they pay — which screen, which segment, and what it costs you.

Free & MITRuns on a €4 serverYour data stays on your server
App.tsx
// Three lines. Revenue is a number, not a plugin.
import { Bananalytics } from '@bananalytics/react-native';

Bananalytics.init({ apiKey: 'rk_...', endpoint: 'https://analytics.yourapp.com' });
Bananalytics.trackRevenue(9.99, 'EUR', { product: 'pro_monthly' });

The problem

You know users leave. You don't know where, or what it costs you.

  • Your analytics tool has forty features. You use three, and you rebuild the same paywall funnel every time.
  • A release ships. Conversion drops. You find out two weeks later, from the revenue chart.
  • You suspect Android converts worse than iOS. Proving it means an afternoon in a query builder.
  • The bill grows with your users. Success gets more expensive.

The solution

See the leak. Fix it. Watch the number move.

  • Funnels built around the paywall: drop-off per step, median time between steps, split by platform, version or country in one click.
  • Revenue is a first-class number — ARPU, paying share, and what each week's cohort is worth at day 30.
  • Every metric shows its change against the previous period. A release that hurts is a red arrow, not a hunch.
  • Runs on a €4 server with one command. Unlimited events. Your data never leaves it.

Features

Six questions. Answered.

The views a paid app needs — and not thirty others.

Where do they bail?

Funnels with drop-off per step and the median time between them. Filter every step to a segment.

What is a user worth?

ARPU, paying share, average order — and each week's cohort tracked to day 30, 60 and 90.

Did the release hurt?

Every number against the previous period. Break anything down by app version.

Who converts, who doesn't?

Split any view by platform, country, device, OS version or your own properties.

Are they coming back?

Retention cohorts, DAU/WAU/MAU, stickiness. People, not event volume.

Where do they tap?

Taps and time-on-screen as events. Rage taps and dead buttons, without recording a single screen.

Setup

Zero to your first funnel in 5 minutes

No account. No credit card. No sales call.

1

Deploy

One command on any €4 server. Docker, Postgres, HTTPS, backups.

curl -fsSL bananalytics.xyz/install.sh | sudo bash
2

Install

Add the SDK. Expo & bare RN.

npm i @bananalytics/react-native
3

Ship

Track a purchase. Watch the funnel fill in.

Bananalytics.trackRevenue(9.99, 'EUR')

Comparison

How Bananalytics stacks up

The rows that matter when you are the whole team.

🍌Bananalytics
MixpanelAmplitudePostHog
Built for React Native
Built around the paywall funnel
Self-hosted with one command
Offline queue
Open source
Your server onlyself-host
Unlimited events, fixed price
Price at 10M events$4/mo~$2,520/moCustom~$450

* GA4 is free but monetizes your data. PostHog self-hosted requires significant DevOps.

Performance

Grows with you. The bill doesn't.

Backend, Postgres and the dashboard on one €4 box. Measured, not estimated.

273 ms

dashboard load

measured at 4.2M events

32M

events on 40 GB

before the disk fills up

2,650/s

events ingested

measured on 2 cores

Pick a server by app stage

App stageHetzner boxCost / mo
MVP — first 1K usersCX22 · 2 vCPU · 4 GB · 40 GB€4.75
10K–50K MAUCX32 · 4 vCPU · 8 GB · 80 GB~€7
50K–200K MAUCX42 · 8 vCPU · 16 GB · 160 GB~€15
200K+ MAUDedicated DB box, private network~€30+

Full capacity math + monitoring playbook in the capacity docs.

What a finding looks like

You don't need more charts. You need to know which screen is costing you subscribers.

Paywall → Checkout → Purchase

Last 30 days · split by platform

Example data
iOS24.8% reach purchase

600

Saw paywall

308

Started checkout

149

Purchased

Android10% reach purchase

300

Saw paywall

119

Started checkout

30

Purchased

Android reaches the paywall as often as iOS and buys a third as often. The drop is between checkout and purchase — that is the screen to open first.

Illustrative numbers. This is the view; a real finding from the founder's own app is coming.

Pricing

No per-event fees. Ever.

Self-host for free, or let us run it.

Self-Hosted

Free at any scale. One command to install.

$0

+ ~$4/mo for a VPS

  • Unlimited events
  • All features
  • Full source (MIT)
  • Deploy in 5 min
  • Community support
Coming Soon

Bananalytics Cloud

Zero maintenance. We handle everything.

$29/mo

up to 1M events

  • Managed infra
  • Auto backups
  • Custom domain + SSL
  • 99.9% SLA
  • Priority support

FAQ

Questions, answered

Everything you need to know before you ship.

I'm already on PostHog or Mixpanel. Why switch?
Because you have forty features and use three, and you rebuild the same paywall funnel every time you open it. Here that funnel is the home screen, with revenue on it and the change since last period next to every number. Fewer views, each one built around a question a paid app actually asks. If you need session replay, feature flags or a SQL console, stay where you are — that is not what this is.
What does it tell me that RevenueCat's dashboard can't?
RevenueCat knows what was paid. It does not know which screen lost the people who did not pay. Bananalytics sees the whole path — paywall viewed, checkout started, purchase completed — split by platform, app version and country, so the drop-off has a place and a segment, not just a total.
Do I have to re-instrument my app?
No. The SDK uses the same track / identify / screen calls you already have, so switching call sites is mostly a find-and-replace. The practical path is to dual-track for a week — send to both tools — then cut the old one once the numbers agree. Historical import is not there yet.
Will it slow down my app or bloat my bundle?
The SDK is 17 kB gzipped. Events are batched and sent in the background (every 30 seconds, or when 20 queue up), off your render path. Tap recording is off by default because it roughly doubles event volume; when you turn it on, a touch is recorded 150 ms later, never in the touch handler itself.
How long does setup actually take?
One command on a fresh server installs Docker, asks for your domain, obtains a certificate, offers to schedule nightly backups and starts everything — about five minutes. The SDK is three lines: install, init() with your key, track. You will see your first event before the coffee is cold. Prefer to run it on your laptop first? docker compose up works too.
Does it work with Expo, or only bare React Native?
Both. Expo managed, EAS, Dev Client and bare React Native. The SDK is pure TypeScript — the only native dependency is AsyncStorage for the offline queue, which is already in most apps. No config plugin, no pod install, and Expo Go keeps working.
What happens to events if my server goes down?
They wait. The SDK keeps events on the device and retries with backoff once the server is back, in order, in batches the server accepts. A two-hour outage costs you nothing but a two-hour delay on the dashboard.
Is it GDPR compliant?
Your data never leaves your server, so there is no processor to sign an agreement with — there is no us in the data path. No cookies, no third-party requests, opt-out built into the SDK, and tap recording captures coordinates, never screens. You still need your own privacy policy and consent flow; we cannot write those for you.
Why not just self-host PostHog?
You can, and it is a good product. It is also a web-first platform with a mobile SDK on the side, and self-hosting it means running ClickHouse, Kafka and a dozen services. Bananalytics is React Native first — lifecycle, sessions, offline queue, taps — and it runs on one €4 box with one command. If you want the platform, take PostHog. If you want the paywall funnel by Tuesday, take this.
When will Bananalytics Cloud launch?
Soon — we're targeting Q3 2026 for managed Cloud with custom domains, SSL, and 99.9% SLA. Self-hosted is fully production-ready today. If you want early access to Cloud, join the waitlist and you'll get a discount at launch.

Find your first leak this week.

Self-host in 5 minutes. No account, no card, no lock-in.