Bonsai

Privacy Policy

Last updated: 02/08/2026

Bonsai is an Android app published by Stephen Perrin (“we”, “us”). This page explains what happens to your information when you use it.

It is short, because the app does very little with your information. It does not send it anywhere.

The short version

What information we collect

None.

We do not collect, receive, transmit, sell, rent, share or otherwise process any personal information. There is no mechanism in the app by which information could reach us: the app makes no network requests, and the published build does not hold the Android permission that would let it make one.

Specifically, and to be unambiguous, the app does not collect or transmit:

What the app stores on your device

Everything you enter is written to a single SQLite database file named bonsai.sqlite, held in the app’s own private storage area on your device. On Android, that area is readable only by this app; other apps cannot open it.

That file contains:

This information never leaves your device unless you save or share a copy of it yourself, which the Backups section below describes. We cannot see it. Nobody else can either.

Permissions the app asks for

The published version of the app holds six Android permissions, and they all exist to deliver one optional daily reminder. You can check the full list yourself on the app’s Google Play page, under App permissions → See more, and this page names every one of them — a policy that invites you to check its own list has to be complete or it is worse than one that does not.

Notifications POST_NOTIFICATIONS
To show the optional daily reminder. This is the only one you are ever asked to grant. Android asks the first time it is needed, and you may refuse — if you do, everything else in the app works exactly as before, and only the reminder will not appear.
Run at startup RECEIVE_BOOT_COMPLETED
Android forgets scheduled alarms when the phone restarts. This lets the app re-schedule your reminder after a reboot; without it, the reminder would silently stop the first time you restarted your phone. It does not let the app do anything else at startup.
Prevent the phone from sleeping WAKE_LOCK
Held for the fraction of a second it takes to build and post the reminder that the alarm has just woken the phone for. Without it, Android can cut that work off half-finished.
Vibrate VIBRATE
The reminder’s vibration, if your own notification settings ask for one.
View network connections ACCESS_NETWORK_STATE
The honest one. This is required by a background-scheduling library that the notification scheduler depends on: it registers a connectivity listener when the app starts, and fails outright without the permission. It reveals only whether a network exists — not what is on it, and not who you are. The app never uses a network.
Close the notification shade BROADCAST_CLOSE_SYSTEM_DIALOGS
Android 11 and older only — it is capped at maxSdkVersion="30", so on Android 12 and later it is not requested at all. It lets the notification drawer slide shut when you tap the reminder, instead of the app opening behind a shade you then have to dismiss by hand.

You may also see a permission named com.stephenprn.bonsai.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION in a technical listing. That one is generated automatically by an Android support library and is enforced against the app itself — it exists so that the app’s own internal broadcasts cannot be read by other apps. It grants nothing to anyone.

The app does not hold the internet permission

The release build of Bonsai does not have android.permission.INTERNET. It is not merely unused — it is removed from the shipped package, so the app is incapable of opening a network connection even if some future bug tried to. Google Play’s permission list for this app has no internet line in it.

The app also does not request permission to use your location, your camera, your microphone, your contacts, your calendar, your photos, your files, your call log or your SMS messages, and it does not request the advertising ID.

Notifications

If you turn the daily nudge on, the app asks Android’s own notification system to show one notification, at the time and on the weekdays you chose. The text of that notification is composed on your device and stored on your device.

There is no push service involved. Nothing is sent to Google, to Firebase, to us, or to anyone else in order to deliver it. If you turn the nudge off, or refuse the notification permission, no notification is ever scheduled.

What we share

Nothing, because we have nothing.

We do not share, sell, rent, disclose or transfer any information to anyone — not to advertisers, not to analytics providers, not to data brokers, not to partners, and not to affiliates. There is no category of third party with whom we share information, because no information ever reaches us to be shared.

Third-party services and code

The app is built with open-source software libraries (for example, its database engine and its notification scheduler). These run entirely on your device as part of the app. None of them contacts a network, and none of them is an analytics, advertising, attribution or crash-reporting service. There is no third-party code in this app that observes how you use it.

Two buttons in Settings hand a link to another app: Rate this app opens this app’s own page on Google Play, and Tell a friend puts the same address into your phone’s share sheet. Both open something else — a store, a messaging app, a browser — and what happens there is governed by that app and by Google, not by us. Neither carries any identifier, any referral code or any count of how often it was used; there is nowhere for such a number to go. The app itself still makes no network request.

There is one thing outside our control, and it is worth stating plainly: Google Play itself. If you installed the app from the Google Play Store, then Google — as the distributor of the app and the operator of your device’s operating system — collects its own information about the download and, depending on your Android settings, may collect crash and diagnostic data. That is governed by Google’s Privacy Policy and by your own Android settings, not by us. We receive from Google only aggregate, anonymised statistics in the Play Console — for example, “this many devices installed the app this week”, or an anonymised crash count. We cannot identify you from any of it, and it contains nothing you have recorded in the app.

Backups

Automatic Android cloud backup is switched off for this app. That means the app’s database is not copied to your Google Drive backup, and it is not transferred to a new phone when you set one up from a backup.

Which is why the way out is in your hands: Settings will write everything you have recorded — every habit, every day, every note — into one file, either an archive the app reads back on a new phone or a spreadsheet that opens anywhere. The same screen restores from an archive, and can draw a month or a year as a picture to keep or send.

None of that is automatic and none of it is a transfer to us. Each one happens only when you ask for it, and Android’s own file picker decides where the file lands — the app is handed the one place you chose and can write nowhere else. Sharing a picture hands it to whichever app you pick from the share sheet, and what that app then does with it is governed by that app rather than by this one. The app itself still makes no network request and does not hold the internet permission.

One consequence you should know about before you rely on the app: nothing is copied off the device unless you copy it. If you uninstall the app, reset the phone, or lose the device without having saved a copy, everything you recorded is gone and cannot be recovered — not by you, and not by us. That is the direct cost of a design in which nothing leaves your device on its own, and we would rather tell you now than after it has happened.

How your information is protected

The database sits in the app’s private storage, which Android’s application sandbox keeps other apps out of. On a device with a screen lock, Android’s own full-device encryption protects it at rest along with everything else on the phone.

To be precise rather than reassuring: the app does not add its own layer of encryption to the database file, and it does not lock itself behind a PIN or a fingerprint. Anyone who can unlock your phone can open the app and read what is in it, in the same way they could read your notes or your photos. If what you record is sensitive, use a device lock.

How long information is kept, and how to delete it

Information stays on your device for as long as you keep it there.

There is no server-side copy to request the deletion of, no account to close and no email to send. Uninstalling is complete and immediate deletion.

Your rights

Privacy laws in various places — including the GDPR in the UK and the EU, and the CCPA in California — give you rights to access, correct, export and delete personal information that a company holds about you, and to object to it being sold or used for profiling.

We hold no personal information about you at all, so there is nothing for us to give you access to, nothing to correct, nothing to export, nothing to delete and nothing to object to. You already have complete and direct access to everything the app has recorded: it is on your device, in the app, and you can change or destroy any of it at any time without asking us.

If you believe otherwise, or you would like this confirmed in writing, write to the address at the bottom of this page.

Children

Bonsai is not directed at children, is not designed to appeal to children, and is not listed in Google Play’s Designed for Families programme.

It collects no information from anyone, of any age. There is therefore no information about a child for us to have knowingly collected, and nothing for a parent or guardian to ask us to delete. If you are a parent or guardian and have a question about this, please write to us.

If you are using Habit Garden

Bonsai was called Habit Garden until August 2026. It is the same app, rebuilt, and on Google Play it is a separate listing — so Habit Garden is still installed on some phones and still has its own page. This policy covers both, and everything above applies to both, with two differences that are in Habit Garden’s favour:

Neither app sends anything anywhere. Neither has an account, an analytics library, an advertising identifier or the internet permission. Habit Garden will not be updated again; it is being retired, and uninstalling it deletes everything it held, as described above.

Changes to this policy

If the app ever changes in a way that affects this policy — for example, if a future version adds an optional backup or sync feature — this page will be updated before that version is released, and the “Last updated” date at the top will change.

Substantive changes will also be noted in the app’s release notes on Google Play. We will never begin collecting information without saying so here first, in plain words, before it happens.

Older versions of this policy are not archived. If you need to know what this page said on a particular date, ask.

Contact

Questions about this policy, or about the app and your information:

stephen.prn.dev@gmail.com

Stephen Perrin

We will reply, though possibly not quickly — this is a small app.