# Using Redirectly with Firebase > Use Redirectly for deferred deep linking while keeping Firebase for analytics and auth. A clear migration path from sunset Firebase Dynamic Links. - Canonical: https://redirectly.app/integrations/firebase - Site: [Redirectly](https://redirectly.app) — deferred deep linking for Flutter & React Native 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. ## 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 ## 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 1. **User clicks link** — Redirectly URL (myapp.redirectly.app/...) 2. **Redirectly resolves** — Gets initial deep link parameters, tracks install 3. **App opens with deep link** — App navigates to correct screen 4. **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 ## Migrate from Firebase Dynamic Links If you're currently using Firebase Dynamic Links, migration to Redirectly is straightforward. ```dart // OLD: Firebase Dynamic Links import 'package:firebase_dynamic_links/firebase_dynamic_links.dart' Future 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 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. ## Keep using Firebase services Your Firebase setup stays exactly the same. You're just replacing the deep linking layer. ```dart // 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 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 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 sendShareLink(String link) async { // Still use Firebase Cloud Messaging for push notifications // Or any other Firebase service } } ``` ## FDL vs Redirectly comparison | Feature | FDL | Redirectly | | --- | --- | --- | | Deep linking | Yes | Yes | | Deferred deep linking | Yes | Yes | | Install attribution | Yes | Yes | | Still active/maintained | No | Yes | | Simple API | No | Yes | | Transparent pricing | No | Yes | | Free tier | No | Yes | | Pure Flutter/Dart SDK | No | Yes | | Works without Firebase | No | Yes | | Custom subdomains | Yes | Yes | | Real-time analytics | Yes | Yes | ## Next steps Migrate from Firebase Dynamic Links to Redirectly: - [FDL Alternative Comparison](https://redirectly.app/firebase-dynamic-links-alternative.md) - [Flutter Deep Linking Guide](https://redirectly.app/flutter-deferred-deep-linking.md) - [React Native Deep Linking](https://redirectly.app/react-native-deferred-deep-linking.md) - [All Integrations](https://redirectly.app/integrations.md) --- Full site index for AI agents: https://redirectly.app/llms.txt