I built a Branch.io alternative for $79/mo instead of $499
Firebase Dynamic Links shut down in August 2025. Branch.io costs $499/month. I needed deep linking for my Flutter app and didn't want to pay enterprise prices for a feature that should be simple.
So I built LinkHopp — deep linking, deferred deep linking, and campaign tracking for $49-99/month.
The Problem
If you're building a mobile app, you need deep links. When someone shares a link to your app:
- Desktop → open your website
- Mobile + app installed → open directly in the app
- Mobile + app NOT installed → go to App Store, then open the app to the right screen after install
That last one is called deferred deep linking, and it's surprisingly hard to get right. Firebase Dynamic Links used to do this for free. Now it's dead. Branch.io does it, but costs $499/month with mandatory "Contact Sales" calls.
What LinkHopp Does
- Deep Linking — iOS Universal Links + Android App Links
- Deferred Deep Linking — 3-stage matching (Play Install Referrer → Clipboard → Fuzzy Fingerprint) with ~90% match rate
- Sub-10ms Redirects — Cloudflare KV Cache at 300+ edge locations worldwide
- Campaign Tracking — UTM parameters, click stats by device/country/day
- A/B Testing — Split traffic between multiple destinations
- Geo-Targeting — Different URLs per country
- QR Codes — Generated per link via API
- Webhooks — Get notified when links are clicked
- Smart Banners — "Open in App" banner for mobile web visitors
The Tech Stack
Cloudflare Workers (Redirect Engine + API)
└── KV Cache (sub-10ms link lookups)
Supabase (PostgreSQL + Auth + RLS)
SvelteKit on Cloudflare Pages (Dashboard)
Flutter SDK + React Native SDK
Stripe (Billing)
Total infrastructure cost at 0 customers: ~$5/month (Supabase Pro). At 100 customers: ~$30/month. Margins are 95%+.
How the Matching Works
When someone clicks a LinkHopp link on mobile and doesn't have the app:
- Before redirect: We save a fingerprint (hashed IP, OS, device model, language, timezone, screen size) and generate a unique token
- Android: Token goes into the Play Store Install Referrer URL — Google passes it through to the app after install (~98% match rate)
- iOS: Token gets written to clipboard via a brief interstitial page — app reads it on first launch (~60% with clipboard, users see iOS paste banner)
- Fallback: Fuzzy fingerprint matching with weighted scoring — IP(40pts) + OS(15) + Device(15) + Language(10) + Timezone(10) + Screen(10), threshold 70/100
The fuzzy matching uses partial scores: "iOS 17.4" vs "iOS 17.5" gives 80% points, not 0. "de-DE" vs "de-AT" gives 70%. This catches OS updates and regional variants that would otherwise be false negatives.
What Makes This Different from Branch
| Branch | LinkHopp | |
|---|---|---|
| Price | $499+/mo | $49-99/mo |
| Redirect Speed | ~200ms | <10ms (KV Cache) |
| Pricing | "Contact Sales" | Self-service, transparent |
| Flutter SDK | Wrapper around native | Native Dart |
| Firebase Migration | "Contact Sales" | Self-service import tool |
| Setup Time | Days | 10 minutes |
Pricing
- Free: 1,000 clicks/month, 1 project
- Starter ($49): 50,000 clicks/month, 3 projects
- Pro ($79): 200,000 clicks/month, 10 projects, A/B testing
- Business ($99): 1M clicks/month, unlimited projects, custom domain
Try It
Website: linkhopp.com
API Docs: linkhopp.com/docs
Flutter SDK: linkhopp on pub.dev
React Native SDK: @linkhopp/react-native on npm
The onboarding takes 2 minutes: register → create project → get API key → create your first link.
If you're migrating from Firebase Dynamic Links, there's a built-in import tool that converts your existing links automatically.
Built solo with Cloudflare Workers + Supabase + SvelteKit. Questions? Ask in the comments.
Top comments (0)