flutterfire icon indicating copy to clipboard operation
flutterfire copied to clipboard

[šŸ“š] Critical: Firebase Email Link Authentication dependency on Dynamic Links facing deprecation in 2025

Open eli1stark opened this issue 1 year ago • 73 comments

Firebase Dynamic Links (FDL) will be deprecated on August 25, 2025, as stated in the official documentation:

  • https://firebase.google.com/docs/dynamic-links
  • https://firebase.google.com/support/dynamic-links-faq

Critical Impact: The Firebase Authentication's "Sign in with Email Link" feature currently relies heavily on Firebase Dynamic Links. Specifically, the implementation requires a Firebase Dynamic Links domain in the actionCodeSettings:

const actionCodeSettings = {
  // URL you want to redirect back to. The domain (www.example.com) for this
  // URL must be in the authorized domains list in the Firebase Console.
  url: 'https://www.example.com/finishSignUp?cartId=1234',
  // This must be true.
  handleCodeInApp: true,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  dynamicLinkDomain: 'example.page.link'
};

Current Limitations:

  • Attempting to use a custom domain (non-FDL) results in an error
  • The feature doesn't work without a valid FDL domain

Questions:

  1. What is the migration path for Email Link Authentication after FDL deprecation?
  2. Will there be an alternative mechanism to handle email link authentication?
  3. Why isn't there a deprecation warning in the Email Link Authentication documentation?

Reference: Email Link Authentication documentation: https://firebase.google.com/docs/auth/flutter/email-link-auth

eli1stark avatar Jan 07 '25 19:01 eli1stark

So when I use firebase_messaging: ^15.2.0 running on iOS emulator, is shows such error:

Error: The pod "Firebase/DynamicLinks" required by the plugin "firebase_dynamic_links" requires a higher minimum iOS deployment version than the plugin's reported minimum version. To build, remove the plugin "firebase_dynamic_links", or contact the plugin's developers for assistance. Error running pod install Error launching application on iPhone 16. my Flutter version is 3.27.1

I've tried IOS version from 14 to 18 but none of them works, can this somehow be fixed or is there any alternative solution to use firebase_messaging?

Hamlet626 avatar Jan 08 '25 03:01 Hamlet626

cc @russellwheatley

SelaseKay avatar Jan 09 '25 10:01 SelaseKay

https://firebase.google.com/docs/dynamic-links says Email Link Authentication still works after FDL is deprecated.

I'm currently using or need to use Dynamic links for email link authentication in Firebase Authentication. Will this feature continue to work after the sunset?
Yes, your email link authentication using Firebase Authentication will continue to work.

Firebase Authentication currently uses Firebase Dynamic Links to customize Authentication links, but we will provide an update that will require a client- side update to ensure that email link auth continues working after the Firebase Dynamic Links service is shut down.

Note that Firebase Authentication only depends on the Firebase Dynamic Links service internally, but does not depend on the Firebase Dynamic Links SDK.

ysak-y avatar Jan 23 '25 01:01 ysak-y

Hey @eli1stark - The migration details are still being ironed out as far as I'm aware. I will update this thread once the migration plan has been confirmed šŸ™

russellwheatley avatar Jan 23 '25 15:01 russellwheatley

It already started, this message appeared today on firebase auth section :

The following Authentication features will stop working when Firebase Dynamic Links shuts down on August 25, 2025: email link authentication for mobile apps, as well as Cordova OAuth support for web apps.
keyboard_arrow_up
To use these features after the shutdown of Dynamic Links, migrate to use an alternative solution as described in the Firebase documentation.
If you take no action, your apps and end users will be able to continue using these features until August 25, 2025.

Should we start migrating ?

foxfoxfox789 avatar Feb 10 '25 21:02 foxfoxfox789

I have concerns about our current migration approach, particularly our dependency on Firebase Hosting. Here's why:

  1. Firebase Hosting dependency creates unnecessary coupling and could be at risk of deprecation in the future.

  2. Our main requirement is just the email authentication link functionality.

  3. We could potentially implement dynamic links using alternative solutions:

    • Third-party services like AppsFlyer or Branch
    • An in-house dynamic linking solution
  4. The tight coupling with Firebase Hosting and Dynamic Links seems unnecessary for our use case.

Question: Is it possible to obtain the raw email authentication link from Firebase and integrate it with our preferred dynamic linking solution instead? We would then extract the deep link and pass it to signInWithEmailLink.

This would give us more flexibility and reduce our dependency on Firebase's ecosystem.

Maintaining separate dynamic links with a custom hosting domain is redundant and inefficient. It would require everyone to manage two separate setups: one for email authentication and another for regular deep links that will be managed by AppsFlyer/Branch or in-house solution.

@russellwheatley Is there a way to relay this message to product owners of this feature while it's not too late to change things up? Thanks!

eli1stark avatar Feb 10 '25 21:02 eli1stark

It seems like this is now being fixed by the IOS SDK, https://github.com/firebase/firebase-ios-sdk/issues/12738

When could we start migrate away from it?

nerder avatar Feb 11 '25 02:02 nerder

It seems like this is now being fixed by the IOS SDK, firebase/firebase-ios-sdk#12738

When could we start migrate away from it?

Same here +1

foxfoxfox789 avatar Feb 11 '25 16:02 foxfoxfox789

It seems like this is now being fixed by the IOS SDK, firebase/firebase-ios-sdk#12738

When could we start migrate away from it?

Indeed this is currently being worked on and we'll have an update soon for when a migration solution is available for the Flutter SDK. Please stay tuned.

s-chandels avatar Feb 13 '25 06:02 s-chandels

Do we have JAVA equivalent for the same? For Admin Sdk, as we are generating and sending mails from our backend

AbhishekDoshi26 avatar Feb 18 '25 15:02 AbhishekDoshi26

Now dynamic links in firebase console can't be opened ! I even can't migrate my email link sign in, cause of firebase sendSignInLinkToEmail always depend on dynamic links.

LaiZhou avatar Feb 24 '25 03:02 LaiZhou

It seems like this is now being fixed by the IOS SDK, firebase/firebase-ios-sdk#12738 When could we start migrate away from it?

Indeed this is currently being worked on and we'll have an update soon for when a migration solution is available for the Flutter SDK. Please stay tuned.

@s-chandels - Are there any timelines you're able/allowed to communicate?

HofmannZ avatar Mar 21 '25 12:03 HofmannZ

I'm looking at https://firebase.google.com/docs/auth/ios/email-link-migration. The documentation is confusing and doesn't work at all. Some issues:

  1. Why do we need set up AASA on firebaseApp domain.
  2. The documentation in the link points to set up AASA on web.app domain but didn't mention firebaseApp domain
  3. How does it work with custom domain? Suppose, I have example.com hosted on another service (with my entire web server). Do I now need to migrate my entire service to firebase hosting?
  4. What is "projectConfigManager.updateProjectConfig(updateRequest)". I'm on admin sdk version 13.2.0 and didn't see the method.

Please address these issues before asking developers to migrate. At this current state, I don't think migration is possible and we should deprecate everything in August (less than half year). Otherwise, this makes me question whether Google's service is reliable and trustworthy at all, and whether we shall move everything off Firebase and Google Cloud.

so-shiba avatar Mar 23 '25 18:03 so-shiba

Hi, I'm trying to set up email auth in a new app in Flutter but in the documentation there's wtitten this:

_Verify email link and sign in Firebase Authentication uses Firebase Dynamic Links to send the email link to a mobile device. For sign-in completion via mobile application, the application has to be configured to detect the incoming application link, parse the underlying deep link and then complete the sign-in.

Set up your app to receive Dynamic Links on Flutter in the guide._

https://firebase.google.com/docs/auth/flutter/email-link-auth#verify_email_link_and_sign_in

And now I'm stuck. I'm trying to get Dynamic Links in the app but the FirebaseDynamicLinks seems to ignore every links.

This is really confusing, but maybe I'm missing something. Thanks.

Diego

ejfhp avatar Mar 27 '25 06:03 ejfhp

Hi, I'm trying to set up email auth in a new app in Flutter but in the documentation there's wtitten this:

_Verify email link and sign in Firebase Authentication uses Firebase Dynamic Links to send the email link to a mobile device. For sign-in completion via mobile application, the application has to be configured to detect the incoming application link, parse the underlying deep link and then complete the sign-in.

Set up your app to receive Dynamic Links on Flutter in the guide._

https://firebase.google.com/docs/auth/flutter/email-link-auth#verify_email_link_and_sign_in

And now I'm stuck. I'm trying to get Dynamic Links in the app but the FirebaseDynamicLinks seems to ignore every links.

This is really confusing, but maybe I'm missing something. Thanks.

Diego

Hi everyone,

I have a Flutter app available for both iOS and Android that uses Firebase Authentication. Currently, users can sign in with either:

Google/Gmail accounts (Android)

Apple ID (iOS)

Given recent discussions about authentication issues, I’m wondering:

Could my app be affected?

Should I implement Dynamic Links as a precaution?

Any insights would be appreciated!

foxfoxfox789 avatar Mar 27 '25 06:03 foxfoxfox789

It seems like this is now being fixed by the IOS SDK, firebase/firebase-ios-sdk#12738 When could we start migrate away from it?

Indeed this is currently being worked on and we'll have an update soon for when a migration solution is available for the Flutter SDK. Please stay tuned.

How soon is soon?

woutervanwijk avatar Apr 01 '25 14:04 woutervanwijk

Not sure if folks have seen the Firebase documentation, but there is a migration guide for moving away from using Dynamic Links package here: https://firebase.google.com/support/guides/app-links-universal-links

russellwheatley avatar Apr 16 '25 11:04 russellwheatley

@eli1stark - the product owners are Firebase, we're following their guidance on this. If you wish to submit a feature, it is best doing it through Firebase support.

russellwheatley avatar Apr 16 '25 11:04 russellwheatley

@russellwheatley is the migration ready to use for Flutter? If so, why is this issue still open? I mean, is there anything pending or stopping us from migrating the projects?

Thanks :)

AbhishekDoshi26 avatar Apr 16 '25 11:04 AbhishekDoshi26

This is about "Sign in with Email Link", which uses Dynamic Links, not about Dynamic Links itself

@russellwheatley is the migration ready to use for Flutter? If so, why is this issue still open? I mean, is there anything pending or stopping us from migrating the projects?

Thanks :)

woutervanwijk avatar Apr 16 '25 11:04 woutervanwijk

This is about "Sign in with Email Link", which uses Dynamic Links, not about Dynamic Links itself

@russellwheatley is the migration ready to use for Flutter? If so, why is this issue still open? I mean, is there anything pending or stopping us from migrating the projects? Thanks :)

@woutervanwijk yep, i am talking about the same. The actual dynamic links, I have already migrated to custom

AbhishekDoshi26 avatar Apr 16 '25 12:04 AbhishekDoshi26

This issue is for the sign in with email link becoming deprecated as a side effect of dynamic links ending. Not dynamic links themselves. There are published migration guides for IOS and Android specific platforms https://firebase.google.com/docs/auth/ios/email-link-migration and , https://firebase.google.com/docs/auth/android/email-link-migration but there has been no update for flutter in the documentation.

staplKody avatar Apr 16 '25 13:04 staplKody

Yes, that's what I asked for. The migration guides are dedicatedly available for Android and iOS. Is there any specific plans for Flutter migration guide or should we follow the Android iOS migration guides separately?

AbhishekDoshi26 avatar Apr 16 '25 18:04 AbhishekDoshi26

Yes, that's what I asked for. The migration guides are dedicatedly available for Android and iOS. Is there any specific plans for Flutter migration guide or should we follow the Android iOS migration guides separately?

Per this reply here https://github.com/firebase/flutterfire/issues/16946#issuecomment-2655685114 there will be a change for the flutter SDK. I am not sure exactly how the ios/android specific implementations would fit into a flutter project and it seems the flutterfire team is working on a replacement for what we already use.

staplKody avatar Apr 16 '25 18:04 staplKody

@russellwheatley any updates on this? The deprecation date is getting closer

woutervanwijk avatar May 29 '25 12:05 woutervanwijk

@woutervanwijk - all the information needed to migrate away from Dynamic Links is contained within the documentation: https://github.com/firebase/flutterfire/issues/16946#issuecomment-2809239512

Most of the work requires setting up Firebase Hosting to handle App Link / Universal Link + configuring your iOS/Android code to receive deep links.

As part of the migration, FlutterFire has exposed the linkDomain property on ActionCodeSettings which has already been released: https://github.com/firebase/flutterfire/blob/main/packages/firebase_auth/firebase_auth_platform_interface/lib/src/action_code_settings.dart#L62

Whilst dynamicLinkDomain has been deprecated: https://github.com/firebase/flutterfire/blob/main/packages/firebase_auth/firebase_auth_platform_interface/lib/src/action_code_settings.dart#L50

russellwheatley avatar May 29 '25 12:05 russellwheatley

thanks. I changed everything, but in the email, the verification-url is still using the old page.link address. Is that correct?

@woutervanwijk - all the information needed to migrate away from Dynamic Links is contained within the documentation: #16946 (comment)

Most of the work requires setting up Firebase Hosting to handle App Link / Universal Link + configuring your iOS/Android code to receive deep links.

As part of the migration, FlutterFire has exposed the linkDomain property on ActionCodeSettings which has already been released: https://github.com/firebase/flutterfire/blob/main/packages/firebase_auth/firebase_auth_platform_interface/lib/src/action_code_settings.dart#L62

Whilst dynamicLinkDomain has been deprecated: https://github.com/firebase/flutterfire/blob/main/packages/firebase_auth/firebase_auth_platform_interface/lib/src/action_code_settings.dart#L50

woutervanwijk avatar May 29 '25 12:05 woutervanwijk

I see the migration guide, but it seems to be written for if we are using dynamic links directly. It seems that the specific issue this thread is pertaining to is the passwordless signin using signInWithEmailLink().

https://firebase.google.com/docs/auth/ios/email-link-migration https://firebase.google.com/docs/auth/android/email-link-migration

I think we were hoping for a solution for flutter rather than platform-specific setups.

For example, the fluttere Email Link Authentication documentation still says to use dynamicLinkDomain https://firebase.google.com/docs/auth/flutter/email-link-auth

while the ios and android specify to use linkDomain. https://firebase.google.com/docs/auth/android/email-link-auth

staplKody avatar May 29 '25 17:05 staplKody

I have followed these migration guides for my Flutter app:

https://firebase.google.com/docs/auth/ios/email-link-migration https://firebase.google.com/docs/auth/android/email-link-migration

I only skipped executing projectConfigManager.updateProjectConfig(updateRequest). I have published the updated app without dynamic links and sign in with email works normally.

So only remaining question is that why and when should I run that projectConfigManager.updateProjectConfig(updateRequest). The related documentation is very unclear.

kinex avatar May 30 '25 08:05 kinex

I have followed these migration guides for my Flutter app:

https://firebase.google.com/docs/auth/ios/email-link-migration https://firebase.google.com/docs/auth/android/email-link-migration

I only skipped executing projectConfigManager.updateProjectConfig(updateRequest). I have published the updated app without dynamic links and sign in with email works normally.

So only remaining question is that why and when should I run that projectConfigManager.updateProjectConfig(updateRequest). The related documentation is very unclear.

Yes you should do that, otherwise Firebase Auth will still generate dynamic links

nerder avatar May 30 '25 08:05 nerder