Picture this: You're on a camping trip in the middle of nowhere. Zero cell signal. Your friend just paid for firewood, and you need to track who owes what.
With most expense apps, you're stuck. "No internet connection." "Please try again later." Your expense gets forgotten, and the math gets messy.
With Splitorium, you just add the expense. It saves instantly. When you're back in civilization, everything syncs automatically.
The best expense app is the one that works when you need it — not just when you have WiFi.
The Problem with Online-Only Apps
Most expense splitting apps (including the popular green one) work like this:
- You tap "Add Expense"
- You enter the details
- The app sends data to the server
- The server saves it and responds
- The app shows success
What happens if step 3 fails because you're in a subway tunnel? Nothing saves. Your expense is lost.
| Scenario | Online-Only Apps | Splitorium |
|---|---|---|
| Camping trip (no signal) | ❌ "No connection" error | ✅ Works perfectly |
| Airplane mode flight | ❌ Can't add expenses | ✅ Add expenses offline |
| Subway/Underground | ❌ Spinner forever | ✅ Instant save |
| International travel (roaming off) | ❌ Useless without WiFi | ✅ Full functionality |
| Spotty restaurant WiFi | ❌ "Failed to save" | ✅ Syncs when stable |
How Splitorium's Offline-First System Works
Splitorium flips the traditional model. Instead of "send to server first," it's "save locally first, sync to server later."
The Local-First Architecture
When you add an expense in Splitorium:
- Instant local save: Your expense is immediately written to your device's local database
- UI updates immediately: You see the expense in your list within milliseconds
- Operation queued: The change is added to a sync queue
- Background sync: When online, the queue is processed automatically
- Confirmation: Server acknowledges, IDs are reconciled
Why This Is Better
Benefits of Offline-First
- Speed: UI responds in milliseconds, not seconds
- Reliability: Your data is safe even if the server is down
- Battery life: No constant network polling
- Works anywhere: Mountains, planes, subways, international trips
- No data loss: App crashes? Your changes are still saved locally
Smart Sync: The Magic Behind the Scenes
Splitorium's sync system is more sophisticated than just "upload when online." Here's what makes it special:
1. Operation Coalescing
If you create an expense offline, then edit it three times before going online, Splitorium doesn't send four separate operations. It merges them into one optimized request.
This means:
- Less battery usage
- Faster syncing
- No redundant server load
2. Dependency Resolution
Imagine you're offline and you:
- Create a new group "Camping Trip"
- Add an expense to that group
- Edit the expense
Splitorium is smart about this. It knows the expense can't sync until the group exists on the server. So it:
- Syncs the group first
- Gets the real group ID from the server
- Updates the expense with the real ID
- Syncs the expense
All automatically. You don't have to think about it.
3. Conflict Resolution
What if you edit an expense on your phone while your roommate edits the same expense on their phone?
Splitorium uses a simple, predictable strategy: server wins. Whichever edit reaches the server first becomes the "official" version. The other device gets updated to match.
Why not fancy three-way merging? Because for expense tracking, simplicity beats complexity. You'd rather have predictable behavior than a merge UI that asks "keep yours or theirs?"
How Splitorium Compares to Splitwise
Splitwise is the most popular expense splitting app. But it was built in 2011, before "offline-first" was a common pattern. Here's how the architectures compare:
| Feature | Splitorium | Splitwise |
|---|---|---|
| Add expense offline | ✅ Yes | ❌ No |
| Edit expense offline | ✅ Yes | ❌ No |
| Create group offline | ✅ Yes | ❌ No |
| Record payment offline | ✅ Yes | ❌ No |
| Data survives app crash | ✅ Always saved locally | ❌ Lost if not synced |
| Speed | ✅ Instant (local save) | ❌ Depends on network |
| Price | ✅ Free | ❌ $40/year for full features |
Technical Deep Dive
For the curious developers, here's what's happening under the hood:
Native Architecture
Splitorium isn't a web app wrapped in a mobile shell. It's built with native Swift (iOS) and native Kotlin (Android), with dedicated local databases on each platform.
- iOS: SQLite with custom sync layer
- Android: Room database with sync layer
- Backend: Go (Golang) with PostgreSQL
Cursor-Based Sync
Splitorium uses cursor-based sync rather than timestamp-based. Each record has a monotonically increasing sequence number. When syncing:
- Device sends: "Give me all changes after cursor 12345"
- Server responds with changes and new cursor
- Device stores new cursor for next sync
This approach is more reliable than timestamps because it handles edge cases like clock drift and server time discrepancies.
Bidirectional Sync
Sync runs in both directions:
- Outbound: Local changes → Server (triggered immediately when online)
- Inbound: Server changes → Local (runs on a 15-second interval)
This means multiple devices stay in sync, and you see your roommate's expenses within seconds.
Real-World Scenarios Where This Matters
- ✅ Week-long camping trip with no signal
- ✅ International travel with expensive roaming
- ✅ Long flights in airplane mode
- ✅ Road trips through remote areas
- ✅ Festivals/concerts with overloaded networks
- ✅ Subways and underground venues
- ✅ Budget-conscious travelers saving data
- ✅ Cruise ships with expensive/no WiFi
Try It Yourself
The best way to understand offline-first is to experience it. Download Splitorium, put your phone in airplane mode, and add some expenses. Then turn airplane mode off and watch everything sync automatically.
It's the expense splitting app that works the way expense splitting should work — everywhere, every time.