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.