◉RORK LABJP
●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…
Articles/Business
⟐ Business/2026-06-29Intermediate

Designing a Referral System Without a Heavy Backend

Add a referral program to your Rork (Expo) app without standing up a fleet of servers. Covers code generation, deferred deep-link attribution on first launch, idempotent reward fulfillment that never double-pays, and basic guards against self-referral and device farming, all with working code.

Rork585Expo219Referral ProgramAttribution5Deep Linking6App Monetization11

✦ Premium Article

On one of the wallpaper apps I run on my own, an existing user once told me, "I'd love to recommend this to a friend if there were something in it for me too." When you want to grow through your users instead of leaning on ads, the first wall I hit was deceptively simple: how do you reliably record who invited whom? The referral mechanic itself is not hard. But carrying the referrer through to someone who hasn't installed the app yet, and paying a reward exactly once, are the two places where a careless design falls apart fast.

This walkthrough lays out how to add a referral program to a Rork-generated Expo app without standing up a fleet of servers. Working from the indie-developer assumption that you have no heavy backend, I will keep everything inside a single lightweight backend — Convex, in this example — with code along the way.

Decide first: when does a referral count?

The first decision in a referral program is not an implementation detail; it is "at what moment do we finalize the reward?" Start building before you settle this and you end up either weak to abuse, or with users who never receive their reward and lose trust. There are roughly three options, each with a different character.

Fulfillment momentAbuse resistanceInviter satisfactionBest-fit app
On installWeak (empty installs)High (instant)Free apps with small rewards
After a first meaningful actionMediumMedium (a short wait)Wallpaper/tool apps built on retention
After a purchase/subscriptionStrongLower (heavier condition)Revenue-driven subscription apps

For my wallpaper app I chose the middle path: the reward is finalized "once the invitee saves three favorites on their first run." It blunts empty-install abuse while not making the inviter wait too long. Pick this single point based on your app before you touch the implementation below.

The overall flow

A referral program is clearest when split into four stages.

  1. Code generation — issue a unique referral code per inviter and turn it into a shareable link
  2. Attribution — on the invitee's first launch, carry through which code they came from
  3. Claim — register the carried code with the backend to form the referral relationship
  4. Fulfillment — once the condition is met, pay both sides idempotently

We build in that order.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦Stand up a two-sided referral program that rewards both the inviter and the invitee using a single lightweight backend such as Convex
✦Build deferred deep-link attribution that carries the referrer through to first launch even when the invitee has not installed the app yet
✦Make reward fulfillment fire exactly once with an idempotency guard, plus practical guards against self-referral and device farming
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

⟐ Business2026-08-25
I Split Rork and Claude Code by Who Owns the Build Environment
How to decide between Rork and a terminal coding agent using data from your own repository instead of impressions of generated code. Includes a script that counts which layer your maintenance work lands in, and a check that catches native settings silently disappearing on regeneration.
⟐ Business2026-04-26
Rork's Free Plan and Free Trial — What You Actually Keep When the Credits Run Out
What ends a Rork free trial is messages, not days. Export while it is still free, verify it builds outside Rork with a small script, then decide about paying.
⟐ Business2026-04-25
How I Push a Rork-Built App Toward $700/Month — A Field Guide to Pricing Tests, Retention, and Churn Defense
A premium playbook for taking a Rork-built app to roughly $700/month in revenue, focused on pricing tests, retention engineering, and churn defense. Distilled from 12 years of running indie apps in parallel — what actually moved revenue, what didn't, with realistic numbers and code.