Firebase + Redirectly

Using Redirectly with Firebase

Use Redirectly for deferred deep linking while keeping Firebase for auth, analytics, storage, and other services. Learn why Redirectly is a better choice for pure deep linking.

Context

Firebase Dynamic Links sunset

Google is sunsetting Firebase Dynamic Links in favor of Google Play Instant. If you're using FDL for deferred deep linking, install attribution, or link shortening, Redirectly is a direct replacement. You can keep using Firebase for authentication, Firestore, Cloud Storage, and Analytics—just swap the deep linking layer to Redirectly.

What's changing

  • Firebase Dynamic Links (FDL): Sunsetting, no new features
  • Google Play Instant: Replacement, but different use case (instant apps, not deep linking)
  • Impact: Existing FDL links stop working after sunset date
  • Action needed: Migrate to a new deep linking solution before sunset

Why choose Redirectly

  • Pure focus: Deep linking is our only job, we do it well
  • Transparent pricing: $0–$80/month, no enterprise sales
  • Works with Firebase: Use both together seamlessly
  • Better SDKs: Pure Dart for Flutter, no native code
Architecture

Using Redirectly + Firebase together

Redirectly and Firebase serve different purposes. Keep Firebase for what it's great at—and use Redirectly for pure deep linking.

Architecture diagram

User clicks link

↓ Redirectly URL (myapp.redirectly.app/...)

Redirectly resolves

↓ Gets initial deep link parameters, tracks install

App opens with deep link

↓ App navigates to correct screen

Your app (using Firebase)

↓ Firebase Auth, Firestore, Analytics

What to use where

Redirectly handles

  • Deep link URLs
  • Deferred deep linking
  • Install attribution
  • Link shortening
  • Campaign attribution

Firebase keeps handling

  • User authentication
  • Database (Firestore)
  • Cloud Storage
  • Analytics events
  • Cloud Functions
Migration

Migrate from Firebase Dynamic Links

If you're currently using Firebase Dynamic Links, migration to Redirectly is straightforward.

// OLD: Firebase Dynamic Links import 'package:firebase_dynamic_links/firebase_dynamic_links.dart' Future<String> createFDL(String deepLink) async { final parameters = DynamicLinkParameters( uriPrefix: 'https://myapp.page.link', link: Uri.parse('https://myapp.com/product/123'), androidParameters: AndroidParameters( packageName: 'com.example.myapp', ), iosParameters: IosParameters( bundleId: 'com.example.myapp', ), ) final link = await FirebaseDynamicLinks.instance.buildLink(parameters) return link.shortUrl.toString() } // NEW: Redirectly import 'package:redirectly/redirectly.dart' Future<String> createRedirectlyLink(String path) async { final link = await Redirectly.createLink( path: path, params: { 'campaign': 'summer_2024', 'source': 'email', }, ) return link } // Usage is simpler! // FDL: Complex setup with Firebase configuration // Redirectly: One API call, transparent pricing, no Firebase dependency

The key differences:

1. No Firebase dependency required

You can use Redirectly independently. Keep Firebase for auth and database, use Redirectly only for deep linking.

2. Simpler API

FDL requires complex DynamicLinkParameters setup. Redirectly just needs a path and optional parameters.

3. Easier link handling

Both listen for deep links in the same way, so updating your deep link handler is minimal.

4. No vendor lock-in

Redirectly uses standard URL schemes. If you ever switch services, you just update your domain.

Integration

Keep using Firebase services

Your Firebase setup stays exactly the same. You're just replacing the deep linking layer.

// lib/services/app_service.dart import 'package:firebase_auth/firebase_auth.dart' import 'package:cloud_firestore/cloud_firestore.dart' import 'package:redirectly/redirectly.dart' class AppService { final auth = FirebaseAuth.instance final firestore = FirebaseFirestore.instance Future<void> initialize() async { // Firebase still handles auth if (auth.currentUser != null) { print('User logged in: ${auth.currentUser!.email}') } // Redirectly handles deep linking await Redirectly.initialize(apiKey: 'your_key') // Listen for deep links Redirectly.onDeepLink.listen((link) { if (link.path == 'product/123') { // Still use Firestore to load product final doc = await firestore .collection('products') .doc('123') .get() // Navigate with product data navigateTo('/product', arguments: doc.data()) } }) } Future<void> createProductLink(String productId) async { // Use Redirectly to create shareable link final link = await Redirectly.createLink( path: 'product/$productId', params: {'campaign': 'share'}, ) // Then share or send via Firebase Cloud Messaging await sendShareLink(link) } Future<void> sendShareLink(String link) async { // Still use Firebase Cloud Messaging for push notifications // Or any other Firebase service } }
Comparison

FDL vs Redirectly comparison

FeatureFDLRedirectly
Deep linkingYesYes
Deferred deep linkingYesYes
Install attributionYesYes
Still active/maintainedNoYes
Simple APINoYes
Transparent pricingNoYes
Free tierNoYes
Pure Flutter/Dart SDKNoYes
Works without FirebaseNoYes
Custom subdomainsYesYes
Real-time analyticsYesYes

Try Redirectly Free

Get a free API key, subdomain, and 10k monthly links.