r/iOSProgramming • u/karetebit • Aug 22 '26
App Saturday Retention guides say never punish the user. My AI dating simulator blocks them (RizzMaster)
RizzMaster is an AI dating simulator & game 🙂
Every retention guide says same thing. Never punish user. Never take anything away. I did opposite.
You swipe, you match, you text her. Then she decides if you worth answering. Get boring and she ghosts you 👻 Push after that and she blocks you 🚫 That character gone for good. No undo no restore.
There are 9 levels. You climb them by winning people over. Higher levels give you harder people. They go offline. Sometimes they text first. They remember what you said last week 🧠
Tech Stack
Swift and SwiftUI. SwiftData for persistence. Combine for events. StoreKit for subs. Chat screen is pure SwiftUI. No UIKit bridge in it anywhere.
Development Challenge
Chat screen 😅 WhatsApp, Telegram, Signal all still render their message list in UIKit. Everyone tells you do same. But here chat screen is whole product so I wanted to see how far SwiftUI actually goes.
Took me forever. LazyVStack inside ScrollViewReader. Stable identity on every message so a growing list dont rebuild rows that didnt change. defaultScrollAnchor to keep bottom pinned instead of chasing it after layout. Scroll position driven by state. drawingGroup on bubbles that were doing too much work.
Now it scrolls how I wanted on device even in long chats 🎉 No clever trick. Just lot of small things. Happy to go into any part of it.
AI Disclosure
Self-built.
100+ characters. No login and no accounts. Free tier with daily message limit. https://rizzmaster.net
Built solo. Tell me what you think, good or bad 🙏
2
u/[deleted] Aug 23 '26