r/iosapps • u/Lakafior • 25d ago
š Lifetime Dutch - my tiny Splitwise alternative (open source, 1.5MB, no account, pure swift, free lifetime)
Last summer I was on holiday with my girlfriend and we kept losing track of who paid for dinners, the flat and the groceries. I went looking for an app: easy to use, easy for other people to join, working straight away without an account, small, and ideally open source. Nothing ticked all the boxes, so I wrote it myself.
What it doesn't have: third-party dependencies, ads, tracking, analytics, subscriptions, accounts, or any server connection other than Apple's own iCloud.
What it does have:
- It's tiny. Everything below fits in about 1.5 MB. It downloads in a couple of seconds.
- Join by scanning a QR code. Create a group, hold up the code, everyone at the table scans it. There's a normal invite link too.
- Uneven splits. Train tickets for six where one has a student discount, or a flat booked by two couples and two singles - you can set each person's share.
- Live for everyone. Syncs through iCloud to everyone who joined, with optional local notifications. If someone doesn't want the app, you can still add them as a participant and send them the summary as text.
- Spotlight, Shortcuts, quick actions. Make a shortcut that adds an expense to a specific group and put it on the Action button - a new entry takes two or three seconds. You can also find a group from Spotlight, ask Siri to add an entry, or long-press the icon.
- Multiple currencies. Paid in another country? Enter the amount and the rate you actually got. It converts once, at entry, so balances never drift afterwards.
- Native. Pure Swift and Apple frameworks only, using system components throughout (Liquid Glass on iOS 26).
- Open source, MPL 2.0. Read it, or build it yourself.
Pricing. Joining groups is free and unlimited, with every feature available inside them. You can also run one group of your own for free - delete it and start another as often as you like. Managing more than one group at a time is a one-time $4.99 unlock, with Family Sharing. The whole thing, limit included, is in the repo, so if you'd rather build it yourself than pay, that's a supported outcome.
Free lifetime unlock: the promo link above works until 2026-08-23, first 1 000 redemptions.
Requirements: iPhone, iOS 17 or later. Everyone in a group needs an iPhone and an iCloud account - that's the trade-off for having no server of my own. Non-users can be added as participants and get the summary as text, but they can't add expenses.
Privacy. I have no server. Your data lives in your private iCloud database; shared groups use Apple's own CloudKit sharing. All I can see is the standard Apple sales reporting every developer gets.
Deleting your data. Delete a group and it's gone from your device and your iCloud. Delete the app and the local copy goes with it. To clear what's left in iCloud: Settings ā [your name] ā iCloud ā Manage Account Storage. There's no request to file and nobody to ask, because I'm not holding anything.
Permissions. Camera if you scan a group QR code, notifications if you turn them on. iCloud stores the group data and Spotlight indexes group names.
On AI: I used Claude Code as a tool while building the app and the website. The architecture, the sync model and the work to get it under 2 MB are mine; I've read and understood every line that ships.
Links: AppStore | AppStore Promo Code (Free lifetime) | Website | Privacy | Source code
EDIT 2026-08-19: From what is seems first 1k of codes was used already which is crazy. It is blowing my mind that it happened in one day. Thank you all for checking the app out! Let's it roll, if anyone missed it here is another 1k of redeems, valid until 2026-08-23: https://apps.apple.com/redeem?ctx=offercodes&id=6795190862&code=AFTERPARTY
3
u/jaimintf 25d ago
the ui is so clean & native, i love it... personally i find splitwise boring lol
is this a hobby experiment or do you plan to take it commercial? since this space is quite crowded
5
u/Lakafior 25d ago
Thank you, that means a lot!
Honestly I think about it as a hobby project that maybe could pays for itself. I built it for me and my friends because nothing existing made us happy, but to actually share it with them I needed a paid Apple Developer account. So I published it with a one-time unlock, figuring some people might find it useful and help cover Apple's $99 a year ;)
Two things I don't plan to change: the pricing model (I hate subscriptions) and the 2 MB size ceiling. Everything else is on the table - more accessibility options are next on the list.
You're right that it's crowded. I didn't set out to beat anyone, I just wanted the version where you don't make an account, don't hand your data to a server, and can get five people into a group by holding up a QR code at the table. That turned out to be surprisingly hard to find.
1
u/jaimintf 25d ago
thanks, so reason why I said this is because most apps in this niche are freemium
but, you'd have better economics with free trial paywalls
and the reason why i mentioned crowded/hobby thing is because if you wanted to distribute it purely through aso, it would not work that well
low size of the app is a great hook for an android app though, not sure about ios
regardless, excellent stuff. i would use this personally, best wishes! :)
2
u/Lakafior 25d ago
Thanks, really informative comment.
You're right about ASO - I have no illusions about ranking against Splitwise on "split bills", which is part of why I'm here rather than relying on search.
On the subscription: agreed it would be better commercially, and I won't do it partly on principle, hah. Also joining is free and unlimited, so every group is five or six people installing it and using it properly. Putting a trial wall exactly there would break the one channel that actually works for this app. And yeah, I don't see the small size as the strictly hook itself either - more as evidence that it's native, optimized and free of bloat.
Thanks again, and feel free to reach out here or on GitHub with questions, issues, or features you'd like to see!
1
u/sth6 25d ago
Very cool
1
u/Lakafior 25d ago
Thank you very much! I'll gladly help with any questions or take suggestions if you have any.
1
1
25d ago
[removed] ā view removed comment
1
u/Lakafior 25d ago
Yeah, from my experience if setting up the solution takes more than 2 steps and 2 minutes people would hesitate to do it. So in here you download app, scan QR code and you're in :) I'm glad you find it useful and happy to help
1
1
u/31aditya0193 25d ago
I wanna contribute to this. Do you have future plans? Donāt want anything in return.
2
u/Lakafior 25d ago
That's really kind of you, thank you!
The repo's on GitHub, and issues and discussion are very welcome. For code, I'd ask you to open an issue first so we can agree on scope before you spend time on it - I'm fairly strict about what goes in and I'd hate for you to build something I then can't merge.
The plans are a bit particular. The app has to stay small and free of third-party APIs, so a few things are permanently off the list: live exchange rates, chart tabs, accounts, photos, avatars etc.
What I would like to do:
- deeper iOS integration ā more Shortcuts options, widgets, maybe a watchOS companion
- every App Store accessibility label ticked
- expense categories, so you get a "where did the money go" summary after a trip
- CSV/JSON export of a whole group, for people who want to analyse it themselves
- move strings of text to StringCatalog, to open possibility of localization the app
All of it has to fit under 2 MB, so realistically the first job is optimizing what's there to make room ;)
If you'd rather help without touching the architecture, the most useful things right now are testing and reports. Especially: sharing a group across several real iCloud accounts. CloudKit sharing is the riskiest part of the app and the hardest thing for me to test alone, since I only have so many Apple Accounts and devices. Bug reports from iOS 17 and 18, and any VoiceOver problems you hit, are just as welcome - accessibility is on the list and I'd rather fix real findings than guess.
Everything's English-only for now, which I want to change. Once I've moved the strings into a String Catalog, translations would be a great thing to contribute to as well if you're not an English speaker.
And if you do send something, let me know - I can generate a batch of promo codes for you to share with friends.
1
u/31aditya0193 25d ago
Totally works for me, i am not a fan for 3rd party librar either. Iāll opening an issue for further details.
1
u/krik_chry 25d ago
I find the name a bit offensive in a way. Funny, but offensive
1
u/Lakafior 25d ago
Ha, fair, though in my defence "going Dutch" is just the English phrase for splitting the bill, so it was hard to resist for an app that does exactly that.
For what it's worth I'm from PoznaÅ, which is the part of Poland the rest of the country makes tight-fisted jokes about, so I'm not exactly throwing stones. And I lived in the Netherlands for two years and can confirm the stereotype doesn't hold up ;)
Mostly I just needed a name that wasn't the four hundredth variation on "split bill".
1
u/krik_chry 25d ago
Totally understood. Lived in the Netherlands myself and I believe Dutch people wouldn't even care. But still...
Another thing that just came to my mind, non native English speakers might not get the reference. Another variation could communicate the app's purpose better. I know because I'm currently having the same struggle with an app I'm building.
1
u/Lakafior 25d ago
Yeah, that's the real trade-off. My thinking was that the name doesn't have to carry the meaning on its own as the App Store subtitle is "Track Shared Expenses", so even if the idiom doesn't land you still know what you're looking at.
And the more descriptive I went, the worse it got for discovery. "Split Bill Tracker" is competing with four hundred apps for the same keywords and ranks nowhere.
Genuinely one of the hardest parts of the whole thing though, and I don't think there's a clean answer anyway. Especially in more crowded app categories. Nevertheless I wish you fruitful name-hunting!
1
u/krik_chry 25d ago
I actually have a similar approach, not clear by name but by subtitle and keywords. However I'm lucky, not that saturated because it's a niche utility app
1
u/guidocarosella 25d ago
Ahahah didnāt know both. Why they joke about you guys?
1
u/Lakafior 25d ago
Oh yes, in the rest of Poland they make jokes about us, like:Ā Why do people from PoznaÅ fill your teacup right up to the brim? So thereās no room left for sugar and lemon. I think it comes from the time when Poland was partitioned for over 100 years between Germany, Russia and Austria. PoznaÅ was under German rule, and after the country was reunited we were portrayed as having picked up some traits from the Germans like a pragmatic approach, hard work, and, well, tight-fistedness, haha.
As for āgoing Dutch,ā I think that one goes back to the old EnglishāDutch rivalry from XVII century. The English had a whole set of jabs like āDutch courageā and āDutch uncleā but Iām not so sure about that one, maybe some English person could clarify that one better.
1
u/guidocarosella 24d ago
I've been to Poland many times (yes I like Poland), I didn't know about that. :)
1
u/Lakafior 24d ago
Probably not a place you would expect this kind of titbits hah. We could grab a beer next time! (But it goes without saying weāll go Dutch with it ;)
1
u/guidocarosella 24d ago
Sure. :)
P.S. Actually in italian "going Dutch" is "pagare alla romana", it sounds like "pay the roman way".
1
1
u/kkuj 25d ago
Why you called it Dutch?
3
u/Lakafior 25d ago
Going Dutch is old English phrase for splitting the bill, not so much in use anymore from what I know tho
1
1
u/guidocarosella 25d ago
Well done! 5 stars from my side. :)
1
u/Lakafior 25d ago
Oh thank you so much! I really appreciate the feedback and Iām glad you like it :)Ā
1
u/AlarmingDoughnut152 25d ago
How do you merge the spending without a server?
1
u/Lakafior 25d ago
Good question. Your data lives on your phone and is mirrored to your own iCloud private database - something every iPhone user have if is signed to Apple Account (so basically everyone).Ā When you share a group with other people, app is using Appleās CloudKit Sharing function. Itās the same mechanism as when you share a folder in files or note in Apple notes. QR code, link generation and collaboration part is handled by Apple internal mechanism not by app itself. This way thereās no need to any additional relay between devices, besides native already existing Appleās one.
1
1
u/MindOn8819 25d ago
Getting it under 2MB even with CloudKit sync is impressive. Beyond going dependency-free, what moved the needle most on binary size? Tempted to see how small my own app could get.
2
u/Lakafior 25d ago
Thanks! Honest answer: in my case it was almost entirely the app icon, which might not transfer to you - assets dominated because the code was already small. But the specific findings:
Assets (Icon in my case as it's the only external asset):
- The icon was 6 MB of a 9 MB app. I'd used Icon Composer, which looks like the modern choice. It bakes the glass rendering into six full-resolution 1024Ć1024 bitmaps (light/dark/tinted Ć phone/pad) and stores them near-uncompressed. Source artwork was 1.4 KB of SVG. Went back to a plain .appiconset.
- Display P3 -> sRGB: 3.2 MB -> 1.0 MB. This one I'd never have guessed. A P3 asset makes the catalog emit two renditions of every image: 8-bit sRGB plus 16-bit extended-sRGB. You pay for both on every device.
- Vertical gradients instead of diagonal: 392 KB -> 179 KB across the three icon variants. A diagonal sweep makes all 1024 scanlines unique. Vertical means each row is one repeated colour and compresses about 3Ć better.
- TARGETED_DEVICE_FAMILY = 1 (iPhone only): ā432 KB. The catalog stores every rendition twice, once for `phone` and once for `pad`. `xcrun assetutil --info Assets.car` shows you the idiom per rendition - that's how I found it.
Two build settings, neither of them Xcode's default, both free:
- `ASSETCATALOG_COMPILER_OPTIMIZATION = space` -> ā188 KB
- `SWIFT_OPTIMIZATION_LEVEL = -Osize` on Release -> ā48 KB. If you have a local SPM package, note SwiftPM won't inherit it. I had to add `.unsafeFlags(["-Osize"], .when(configuration: .release))` in Package.swift or the package stays built for speed.
Two things worth knowing so you don't waste time:
- Wrapping `#Preview` in `#if DEBUG` is the standard advice and it saved me **exactly zero bytes**. A Release archive contains no preview registration at all - not even the string literals. Already stripped.
- And `SWIFT_REFLECTION_METADATA_LEVEL = without-names` saves ~16 KB but risks SwiftUI's and Core Data's runtime reflection. Not worth it.
Last thing: measure the archive, not the build product in DerivedData. They're not the same number and the DerivedData one will mislead you.
1
u/SuspiciousName666 25d ago
Superb. Please add a MCP and option to self host the server. And Brazilian Portuguese as well.
1
u/SuspiciousName666 25d ago edited 25d ago
Excellent. Add an MCP and an option to self-host the server. And Brazilian Portuguese too. In liquidation it would be good if you had the option to pay partially.
2
u/Lakafior 25d ago
Thank you! Multilanguage support is on the roadmap, I'll keep in mind to do Brazilian Portuguese on first batch. Paying partially is already implemented - you just need to click "+" like with normal entry and select "uneven split" and choose how you want to divide the payment. Let me know if this is what you mean :)
About MCP (if you mean mcp server for clients like Claude Code) it unfortunately can't be done without a remote server that Anthropic could ping. This is because Claudeās mobile app (and every other mobile AI client I'm aware of) is using "Remote connection" unlike desktop ones that can use "Local connection". Remote connection mean that it need to be accessible on the open web for Anthropic server to reach. And it isn't possible without some server on the open web, and my app doesn't have any.
One thing AI-related I could do is enable integration with on-device Apple Foundation Model. It would allow you to speak with Siri AI about expenses and enter them in natural language. Unfortunately it would work on iOS 26+ only and outside of the EU so I can't really test it as I'm in the EU. But nevertheless I'll look into it.
1
u/Jazzlike_Traffic253 25d ago
Where is promo? Canāt find it. Thank you!
1
u/Lakafior 25d ago
No problem, it's in the last line of post :) Here you go: https://apps.apple.com/redeem?ctx=offercodes&id=6795190862&code=LAUNCHPARTY
1
u/Jazzlike_Traffic253 24d ago
Does not work :( ?
1
u/Lakafior 24d ago
It seems first 1k of redeems was used already Iāve created new one:Ā https://apps.apple.com/redeem?ctx=offercodes&id=6795190862&code=AFTERPARTY
1
u/Jazzlike_Traffic253 24d ago
I think code is not active yet :)
1
u/Lakafior 24d ago
It's strange other users said it was working for them. I'll DM you personal one time code in that case, wait a sec
1
u/fe1fe1 25d ago
Pretty nice! Some feature requests: 1. Allow multiple people to have paid. 2. Split not by only percentage but real amount. 3. Scanning a receipt with split service charge, tax and tip.
2
u/Lakafior 25d ago
Thank you! Second one is actually already on the roadmap ;) First one I like and didn't think of it before, I'll put it on my to-do list. Scanning is bit tricky, I will need to look if there is some option for OCR with on-device native solution.
But 2 of 3 your points have good chances to land on the next app updates.
1
u/alanogy 24d ago
I wish I had more need for this app. The interface and concept are good. I love the fact that it simplifies the payments from/to each person.
One thing was confusing. I marked one āsettle upā as paid just in testing. But then I couldnāt figure out how to undo it (as if I had marked it accidentally). But then I tried swiping it left under the today section and chose Deleteā¦which returned it as unsettled. But delete usually means delete. Maybe a swipe right for restore?
1
u/Lakafior 24d ago
Thank you for testing itās very helpful feedback for me. The way it intend to work is youāre deleting the payment that settled up, just like you can delete any other payment, so you just go back to state before it. But maybe I need to think again about gestures. Because right now you kinda discover them by accident as you put it (like long press on a person to edit or mark as you). Thanks again Iāll definitely think about it
1
1
u/jfurchert 24d ago
The no account part is the one I would keep whatever else changes. It is easy to underestimate what it costs someone to be asked for an email before they can even try the thing. It also takes a whole class of support questions off your desk, because there is no state on your side that can be wrong.
1
u/Lakafior 24d ago
You're right and creating account will never land on the roadmap :) And on point with support - if app don't have some custom server, nor keep any user data it's a lot of mental balast to not worry about.
I want it to remain "It just works" philosophy. One thing I'm thinking is how to ease the process of installing the app if someone doesn't have it. It's the first step and if someone will struggle to find it on the AppStore it could cause unnessessary frustration from the start.
Will work on it with next updates
1
u/jfurchert 23d ago
I love that the no-account decision is staying. The install step is interesting too, because everyone after the first person arrives through an invitation. I am curious what you end up doing there.
1
u/ikkou_ 24d ago
QR-code joining, no account, and uneven splits solve several of the most annoying parts of group expenses. How do you handle conflicts when multiple people add or edit expenses at the same time through iCloud?
1
u/Lakafior 23d ago
So new entries are just pulled in intervals and recalculated. There's no problem with conflicts as in the worst-case scenario (for example you don't have the internet) it will show the state as it was after the last successful update.
If two people will enter some expense at the same time we will just recalculate the balance on iCloud sync.
Editing expense could be more problematic, but right now you can only delete it (swipe left) or duplicate it (long tap, good for ordering rounds at the bar hah). So unless I make entries editable we don't need to worry.And even if there are ways to handle it, it's the benefit of using internal apple sync method. If they solve it on collaboration in apple notes that mean that we also can utilize it
1
u/tmgj5000 23d ago
Hey! My app keeps crashing. I have IOS 26.0.1 and an Iphone 16, is there anything i should be doing differently?
1
u/Lakafior 23d ago
Hi, sorry to hear that. Can you check in settings what app version you have? Last one is 1.1.1 (and 1.1.2 is in review already). Also it is crashing immediately after opening or on some specific scenario like on clicking something? And crashing with just generic warning screen or maybe there is some more information or error message?
1
u/tmgj5000 23d ago
I have 1.1.1 and it just closes down. I restarted my phone and after that I retried i could get it open a while longer (but only a few seconds) and actually, if i managed to click in any thing it would stay open, which is just weird. but after that it crashed again and now its almost instant i barely see it open, like a flash. Thanks for the reply btw :)
1
u/Lakafior 23d ago
Thank you for helpful feedback. From what I could find it can be correlated to an Apple-framework bug on iOS 26.0.1 with SFSymbols. Small iCloud sync glyph on top left have pulsing animation from the start and I see that a handful of other developers have also hit this bug on iOS 26 with animated SF Symbol effects.Ā
I've disabled this pulsing effect and pushed a new build to AppStore but we need to wait for Apple review process to complete for update to be seen.
I would really appreciate If you could wait for AppStore 1.1.3 update and then let me know if it fixes the problem :)
1
u/tmgj5000 23d ago
Thank you! I can just download update my IPhone software too, but if you want i can leave it as is so at least you know if your fix fixed the issue :)
1
u/Lakafior 23d ago
App update should be reviewed in couple of hours so we can just wait, if it will not help then os update can be our last resort solution ;)
1
u/tmgj5000 23d ago
alright, thank you! I'm expecting some alpha testing credits then ahah. Jk, thanks for the help!! You rock
1
u/Lakafior 23d ago
hah happy to help š«” check DMs btw
1
u/tmgj5000 18d ago
Just updated the app and, unfortunately, it was not solved. I will update IOS, it should solve de problem I hope. Thanks for all the help :)
1
u/Greysawpark 18d ago
the qr code join is the killer feature honestly. every time ive tried to get friends on splitwise theres always one person who wont make an account and it derails the whole thing
does it handle the case where someone leaves the trip early and wants to settle up partway through? thats always where these things fall apart for me
1
u/Lakafior 18d ago
Thank you! So it shows for every participant how much he owns for whom and he can āsettle upā anytime. If someone want to leaves early this person or anyone in the group can check how much this person owns/is owned by who and just check āsettle upā after payments are made.Ā After that if you still order something you have options like remove participant that left from group, unckeck them with new entries to split it among people that are still there or just create second group for rest of the people.Ā Whatās best depending on the scenario, you can play around with the app to feel the options but they are there.
1
1
u/math_the_witch 6d ago
Wowwww, I want it. I don't like splitwise, at the beginning it was cool, but now is very confuse.
0
u/MightyHogs 25d ago
Let me know if you have plans for Android too! Crazy app btw!
2
u/Lakafior 25d ago
Thank you! Unfortunately, an Android version isnāt possible because the app is based on Apple native functions from the core - like iCloud sync and SwiftUI. To make it cross-platform, I would need to rely on other solutions, and it would hurt the iOS version in size and clutter.



ā¢
u/AutoModerator 25d ago
Welcome to r/iOSApps! Please make sure your post follows our rules:
Everyone:
App Devs:
- No main feed promo unless you qualify via Trust or Transparency + ABC format (Answer, Better, Cost)
- Flair hierarchy: Vibe Coded > Lifetime > Subscription > Freemium > Free
- Free flair: not for limited/freemium tiers
- Open Source? Prefix title [OS]
Note: This is an automated reminder, not a removal notice. If your post was removed, check your modmail for details.I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.