A beautiful local-first bill splitting app built with Expo + React Native.
Track shared expenses, see who owes whom, settle up faster, and keep everything on-device.
Splitify is made for the moments when money gets awkward:
- a weekend trip with friends
- a shared apartment grocery run
- office lunch collections
- a movie night, cab ride, or coffee round
Instead of juggling screenshots, notes apps, and mental math, Splitify gives you one clean place to:
- create a group,
- add members,
- record expenses,
- split equally, exactly, or by percentage,
- and instantly see the simplest way to settle up.
Best part? Your data stays on your device. No login, no server, no cloud dependency.
All groups, expenses, and settlements are stored locally using react-native-mmkv through persisted Zustand stores. That means the app works without accounts or backend infrastructure.
Splitify does not just total numbers — it calculates net balances and reduces them into a smaller set of “A pays B” settlements, making it easier for groups to close out debts.
Create groups with:
- a custom name
- a fun emoji icon
- a custom currency symbol
- multiple members with auto-generated avatars
When adding an expense, you can split it:
- Equally
- By exact amount
- By percentage
Splitify supports:
- exporting a single group as a
.sptfile - exporting all groups into a ZIP backup
- importing
.sptfiles back into the app
The app includes:
- custom bottom tab bar with floating action button
- light/dark theme support based on system settings
- native-feeling haptics on key interactions
- clean cards, avatars, and balance summaries
- View overall balance across groups
- See your group previews
- Check recent activity from expenses and settlements
- Browse all groups
- Long-press a group to edit or delete it
- Prevent accidental deletion when unsettled balances still exist
- See all members in a group
- View total spending
- Check simplified balances
- Add a new expense
- Share a group as a
.sptfile - Open the settle-up flow
- Enter a description and total amount
- Choose who paid
- Select who participated
- Split by equal, exact, or percentage rules
- View who owes whom
- Record full or partial payments
- Watch the balance list update as debts are cleared
- Review expense history across groups
- Import a
.sptgroup file - Export all groups to a ZIP backup
- Clear all local data
- View app version and theme mode
- Framework: Expo + React Native
- Routing: Expo Router
- Language: TypeScript
- State management: Zustand
- Persistence: Zustand
persist+react-native-mmkv - Icons:
lucide-react-native - Animations:
react-native-reanimated - Haptics:
expo-haptics - File sharing/import:
expo-sharing,expo-document-picker,expo-file-system,jszip - Color generation:
@material/material-color-utilities
splitify/
├── app/ # Expo Router screens
│ ├── (tabs)/ # Home, Groups, Activity, Settings tabs
│ ├── group/ # Group details, add expense, settle-up screens
│ └── modals/ # Create/edit group flows
├── src/
│ ├── components/ # Reusable UI building blocks
│ ├── services/ # Split logic + import/export services
│ ├── store/ # Zustand stores + MMKV adapter
│ ├── theme/ # Colors, shadows, spacing, typography
│ ├── types/ # Shared TypeScript types
│ └── utils/ # Currency, date, avatar, ID helpers
├── app.json # Expo app configuration
└── package.json # Scripts and dependencies
Make sure you have:
- Node.js 18+
- npm
- Expo Go on your phone, or
- an Android emulator / iOS simulator for local testing
git clone https://github.com/soumya-99/splitify.git
cd splitify
npm installnpm run startThen choose one of the following:
- press
ato open Android - press
ito open iOS - press
wto open web - or scan the QR code in Expo Go
npm run start # Start Expo dev server
npm run android # Run on Android
npm run ios # Run on iOS
npm run web # Run on web
npm run prebuild # Generate native projects
npm run prebuild:clean # Clean prebuild
npm run build:apk # Android release build command
npm run lint # Run Expo/ESLint checksSplitify keeps track of:
- expenses — who paid and how the cost was split
- settlements — payments recorded later between members
From that, it computes each member’s net balance:
- if someone paid more than their share, they become a creditor
- if someone paid less than their share, they become a debtor
The app then simplifies debts into a minimal-style payment list such as:
- Alice pays Bob ₹250
- Carol pays Dan ₹120
This keeps settlement suggestions easier to follow than a raw expense-by-expense ledger.
Splitify supports portable group files:
A single exported group contains:
- app export version
- group metadata
- all expenses in that group
- all recorded settlements in that group
The app can also package every group into a ZIP archive so you can back up all your local ledgers at once.
When importing a .spt file, Splitify checks for duplicate group IDs and avoids importing the same group twice.
A few implementation details that make the app feel more refined:
- avatars use Material color utilities to generate pleasant, distinct colors from names
- the app follows the device’s system theme automatically
- interactions such as add/save/select trigger haptic feedback
- the custom bottom tab bar includes a centered floating action button for quick group creation
These are not necessarily problems, just useful product notes based on the current implementation:
- The app is local-first — there is no account sync or remote backup.
- Theme selection is automatic and follows the system theme.
- Group deletion is blocked when unresolved balances still exist.
- The first member added during group creation starts as “You” by default.
Contributions are welcome.
If you want to improve the app:
- Fork the repository
- Create a feature branch
- Make your changes
- Run lint checks
- Open a pull request
Example:
git checkout -b feat/improve-readme
npm run lint
git commit -m "docs: improve README"This project is licensed under the MIT License.
See LICENSE for details.
Splitify is the kind of app that tries to stay out of your way: fast to open, simple to use, and clear when money gets messy.
If you like the idea, star the project and make it your go-to shared expense tracker.