svg
Head

ARVX Dev Log #9: I Submitted My First App to the App Store

It’s official. After two intense weeks of work, I submitted ARVX to the Apple App Store. This is a milestone I’ve been building toward, and honestly, it feels surreal to type those words. The Big Accomplishment I submitted my first build to the App Store. Not a test build. Not a “maybe someday” build. The actual production build of ARVX that real users will download and use to analyze real estate deals. This submission represents everything coming together:

Complete RevenueCat subscription integration with Apple’s in-app purchase system Comprehensive App Store Connect metadata (screenshots, descriptions, keywords, the whole package) Legal compliance infrastructure (privacy policy, terms of service, support pages) A production-ready authentication system with subscription management Webhook integration between RevenueCat and Supabase for subscription tracking

The RevenueCat Integration Journey The past two weeks have been dominated by one thing: getting RevenueCat working flawlessly. This wasn’t just about adding a payment library—it was about building a complete subscription infrastructure. I learned that RevenueCat has two testing environments: their Test Store (which mocks everything for quick iteration) and Apple’s actual sandbox (which tests the real purchase flow). The Test Store uses accelerated renewal cycles—5 minutes for a monthly subscription instead of 30 days. That made testing cycles lightning fast during development. But the real testing happened in Apple’s sandbox environment. I had to:

Create sandbox tester accounts in App Store Connect Set up the monthly subscription product with complete metadata Configure webhook integration so RevenueCat could notify my Supabase backend Build EAS development builds to test native RevenueCat components Validate that purchases actually updated subscription status in my database

The webhook integration was particularly satisfying. When a user purchases ARVX Pro, RevenueCat sends an event to my Supabase Edge Function, which updates the user_subscriptions table. The whole flow works seamlessly—purchase happens, webhook fires, database updates, UI refreshes. Clean. App Store Connect: More Than Metadata Preparing for App Store submission meant tackling App Store Connect in full. I had to create: Screenshots: iPhone and iPad screenshots showing ARVX’s core value proposition—removing guesswork from real estate investment decisions through data-backed analysis. App Metadata:

Promotional text (170 characters) App description highlighting our freemium model (3 free analyses, unlimited Pro) Keywords for App Store optimization Support URL and privacy policy URL

Legal Infrastructure:

Privacy policy web page (not just in-app, Apple requires an actual URL) Terms of service page Support page at support@arvxapp.com

I chose to host these pages on my arvxapp.com domain through Hostinger rather than building them into the app. Simple HTML, professional appearance, proper legal coverage. The Technical Wins Beyond the App Store submission, I shipped several quality-of-life improvements: Auto-refresh after purchases: The profile screen now automatically refreshes subscription status after a user purchases Pro. No manual refresh needed—the UX just flows. Gold crown Pro badge: Added a subtle gold crown icon next to the “Pro” tier in the profile header. Small detail, but it makes the upgrade feel premium. Archive bug fix: Discovered and fixed a critical bug where archived analyses weren’t counting toward the free tier’s 3-address limit. Users could have bypassed restrictions by archiving analyses. Fixed by ensuring all analyses count toward the limit, archived or not. Logo integration: Replaced the text-based “ARVX” header with our actual logo, dynamically switching between light and dark versions based on system theme. Required proper @1x/@2x/@3x exports to prevent graininess on retina displays. The Learning Curve RevenueCat’s documentation is comprehensive, but there’s a learning curve when you’re dealing with the intersection of three systems: RevenueCat, Apple’s App Store Connect, and your own backend. I learned that:

You can’t fully test in-app purchases until products are submitted for review in App Store Connect StoreKit configuration files exist for local testing, but real device testing requires the full approval process Console logs automatically get stripped from production builds—Apple never sees them RevenueCat’s native components (paywall, customer center) are powerful but require careful integration with your existing authentication flow

The biggest conceptual breakthrough was understanding how subscription entitlements work. RevenueCat manages the “ARVX Pro” entitlement, which my app checks to determine access. The actual subscription lives in Apple’s system, RevenueCat monitors it, and my Supabase database tracks the current state via webhooks. Three systems, one source of truth. What’s Next The app is submitted. Now I wait for Apple’s review process.

Let’s Build Something Together

I’m a fullstack developer passionate about creating dynamic, performant web experiences. Whether it’s a sleek front-end interface or a robust back-end system, I can help bring your ideas to life. Send me a message and let’s get started!

svg