Import & Backup
The Import & Backup feature allows you to export all your Beanstats data to a JSON file and import it on another device. This enables device migration, data sharing, and manual backups.
Overview
The backup system provides:
- Full data export: All beans, brews, methods, equipment, and freeze entries
- Selective import: Choose what data types to import
- Duplicate detection: Skip items that already exist (by UUID)
- Relationship preservation: Maintains links between brews, beans, methods, and equipment
Creating a Backup
Access
Navigate to Settings > Data > Export > Beanstats
Export Options
| Option | Default | Description |
|---|---|---|
| Include Flow Data | Yes | Include weight samples from scale-connected brews |
| Include Images | No | Include photos (significantly increases file size) |
| Include Archived | Yes | Include archived beans, methods, and equipment |
Preset Configurations
- Standard: Flow data yes, images no, archived yes
- Full: Everything included (largest file size)
- Minimal: No flow data, no images, no archived items (smallest file size)
Restoring a Backup
Access
Navigate to Settings > Data > Import > Beanstats
Import Options
| Option | Default | Description |
|---|---|---|
| Skip Duplicates | Yes | Skip items that already exist by UUID |
| Import Beans | Yes | Import coffee beans |
| Import Home Brews | Yes | Import home brews |
| Import Cafe Brews | Yes | Import cafe brews |
| Import Brew Methods | Yes | Import brew methods |
| Import Equipment | Yes | Import equipment |
| Import Freeze Entries | Yes | Import freeze entries |
| Skip Archived | No | Skip archived items |
Import Order
Data is imported in dependency order to ensure relationships can be resolved:
- Equipment (no dependencies)
- Brew Methods (may reference equipment)
- Beans with varieties (no dependencies)
- Freeze Entries (reference beans)
- Home Brews (reference beans, methods, equipment)
- Cafe Brews (no dependencies)
After import, bean weights are recalculated from linked brews and freeze entries.
Duplicate Detection
Items are matched by their unique identifier (UUID):
- If an item with the same UUID exists, it’s skipped (when Skip Duplicates is enabled)
- The existing item is used for relationship linking
- This allows safe re-import of the same backup
Use Cases
Device Migration
- Create a backup on your old device
- Transfer the JSON file to your new device (AirDrop, Files, email)
- Import on your new device before iCloud sync completes
Manual Backup
- Create periodic backups
- Store JSON files in a secure location (iCloud Drive, Dropbox, etc.)
- Restore if data is ever lost
Sharing Data
- Create a backup with your desired options
- Share the JSON file with another user
- They import it into their Beanstats
Data Format
Backups are JSON files with this structure:
{
"metadata": {
"exportedAt": "2026-01-17T12:00:00Z",
"appVersion": "3.1.0",
"backupVersion": "1.0",
"deviceName": "Marcel's iPhone",
"counts": {
"beans": 25,
"homeBrews": 150,
"cafeBrews": 10,
"brewMethods": 5,
"equipment": 8,
"freezeEntries": 3
}
},
"beans": [...],
"homeBrews": [...],
"cafeBrews": [...],
"brewMethods": [...],
"equipment": [...],
"freezeEntries": [...]
}Notes
Image Handling
Images are stored as base64-encoded strings when Include Images is enabled. This can significantly increase file size:
- A typical 1MB image becomes ~1.33MB in base64
- Consider disabling images for large backups
Weight Samples
Flow data (weight samples from scale-connected brews) can add significant data:
- A 30-second brew at 10Hz generates ~300 samples
- Consider the Minimal preset if file size is a concern
What’s NOT Backed Up
Certain computed values are not backed up because they’re recalculated after import:
- Used weight (recalculated from brews)
- Frozen weight (recalculated from freeze entries)