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.
// 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
The solution
Features
The views a paid app needs — and not thirty others.
Funnels with drop-off per step and the median time between them. Filter every step to a segment.
ARPU, paying share, average order — and each week's cohort tracked to day 30, 60 and 90.
Every number against the previous period. Break anything down by app version.
Split any view by platform, country, device, OS version or your own properties.
Retention cohorts, DAU/WAU/MAU, stickiness. People, not event volume.
Taps and time-on-screen as events. Rage taps and dead buttons, without recording a single screen.
Setup
No account. No credit card. No sales call.
One command on any €4 server. Docker, Postgres, HTTPS, backups.
curl -fsSL bananalytics.xyz/install.sh | sudo bashAdd the SDK. Expo & bare RN.
npm i @bananalytics/react-nativeTrack a purchase. Watch the funnel fill in.
Bananalytics.trackRevenue(9.99, 'EUR')Comparison
The rows that matter when you are the whole team.
🍌Bananalytics | Mixpanel | Amplitude | PostHog | |
|---|---|---|---|---|
| Built for React Native | ||||
| Built around the paywall funnel | ||||
| Self-hosted with one command | ||||
| Offline queue | ||||
| Open source | ||||
| Your server only | self-host | |||
| Unlimited events, fixed price | ||||
| Price at 10M events | $4/mo | ~$2,520/mo | Custom | ~$450 |
* GA4 is free but monetizes your data. PostHog self-hosted requires significant DevOps.
Performance
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 stage | Hetzner box | Cost / mo |
|---|---|---|
| MVP — first 1K users | CX22 · 2 vCPU · 4 GB · 40 GB | €4.75 |
| 10K–50K MAU | CX32 · 4 vCPU · 8 GB · 80 GB | ~€7 |
| 50K–200K MAU | CX42 · 8 vCPU · 16 GB · 160 GB | ~€15 |
| 200K+ MAU | Dedicated DB box, private network | ~€30+ |
Full capacity math + monitoring playbook in the capacity docs.
What a finding looks like
Paywall → Checkout → Purchase
Last 30 days · split by platform
600
Saw paywall
308
Started checkout
149
Purchased
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.
FAQ
Everything you need to know before you ship.