Settings & Profile
Make it yours
Overview
The profile screen is accessed by tapping your avatar in the portfolio or market tab header. It shows your Clerk user info (name, email, avatar) at the top in a card. Below that is a subscription card showing your current plan (Free or Premium) with an upgrade button that opens the RevenueCat paywall. Then there are settings sections organized into groups: Portfolio Settings (default currency, number format), Notifications (price alerts, reminders, market hours), and About (app version, terms, privacy). There is also a developer option to replay the onboarding tour. The sign out button at the bottom clears your session through Clerk. Everything uses the liquid glass card style on supported devices with a clean fallback on older ones.
How it works
User info comes from Clerk useUser hook which provides name, email, and avatar URL. No separate profile store needed since Clerk manages it all.
Subscription status comes from useSubscriptionStore which checks RevenueCat entitlements. The subscription card shows the current plan and links to the paywall or the RevenueCat customer center.
Settings sections are rendered using a SettingsSection component that takes a title and array of items. Each item has an icon, label, optional value, and onPress handler.
Notification preferences are stored in a dedicated notification settings screen (app/notification-settings) that lets you toggle different alert types.
The sign out button calls Clerk signOut which clears the session token. The app layout detects the auth state change and redirects to the welcome screen.
Glass card wrapping uses the same LiquidGlassView pattern as other screens: check isLiquidGlassSupported, use LiquidGlassView if available, fall back to a styled View if not.
Key decisions
Avatar in the tab headers
Instead of a dedicated profile tab taking up space in the bottom navigation, we put a small avatar button in the top corner of the Portfolio and Market tabs. Tapping it opens the profile as a pushed screen. This keeps the tab bar focused on the core features (Portfolio, Market, Assistant, Alerts) while still making the profile easily accessible.
RevenueCat customer center
Rather than building our own subscription management UI, we use RevenueCat customer center which handles plan changes, cancellations, and billing info. One less thing to build and maintain, and it stays in sync with the App Store automatically.
Clerk for profile management
We do not have a separate user profile table in our database. Clerk stores the user name, email, and avatar. This means one less table to manage and no sync issues between auth and profile data. If we ever need custom profile fields, we can add Clerk metadata.