About this project
Make every call look like you.
Phone dialers all look the same: a name, a number and two buttons. FancyDial replaces your phone's built-in dialer with one you can personalise. Set an image or video to play when a call comes in, give each contact their own call theme, and design an identity card that controls how your calls appear to other people.
A complete phone app
FancyDial isn't an add-on. It becomes your phone's default dialer and handles calls from start to finish:
- a dial pad, contacts and contact search
- full call history (incoming, outgoing and missed)
- custom incoming, outgoing and in-call screens for answering, declining and ending calls
Personalise your calls
- Call screen media: use any image or video as the background when a call comes in, with a live preview and sound toggle.
- Per-contact themes: give each contact their own call screen, and switch it on or off per contact.
- Your identity card: customise your outgoing call card, which controls how your calls appear on other people's screens.
- Default theme and reset: set one theme for all calls, or reset everything back to standard.
FancyDial Premium
A monthly or yearly subscription (yearly saves 33%) unlocks:
- per-contact call themes
- exclusive theme packs
- a verified ID badge on your outgoing calls
- instant sync of your caller identity
Under the hood
- App framework: React Native with Expo and Expo Router, written in TypeScript.
- Native Android module: a custom module written in Kotlin, using Android's InCallService, sets FancyDial as the system's default dialer and places, receives and controls calls natively. It also reads the device's call log.
- Accounts and data: Clerk for sign-in, and Convex as the backend, with user sync through Svix-verified webhooks.
- Subscriptions: RevenueCat handles in-app purchases.
- Media: Expo AV and Expo Video play the video call screens.
MobileAndroidNative ModulesPersonalization
