firebase / firebase/firebase-android-sdk

[Messaging] getToken() hangs infinitely and onNewToken() is never called when using Firebase BOM 34.12.0 with androidx.datastore 1.3.0-alpha07

Open
#8,040 2 comments 2 reactions 0 assignees View on GitHub
api: messaging
Dominant language
Java
Stars
2.6k
Forks
710
Avg merge
2d 23h
Merged PRs (30d)
34

Description

### [READ] Step 1: Are you in the right place?

Yes.

### [REQUIRED] Step 2: Describe your environment

- Android Studio version: **Android Studio Panda 4 | 2025.3.4 RC 1**
- Firebase Component: **firebase-messaging**
- Component version: **Firebase BOM 34.12.0** (Bug also depends on `androidx.datastore:1.3.0-alpha07`)

### [REQUIRED] Step 3: Describe the problem

I am using Firebase Cloud Messaging in my project, managed via the Firebase BOM. I also use `androidx.datastore` to store user preferences.

There seems to be a severe conflict or bug when combining recent versions of the Firebase BOM with the latest alpha version of Jetpack Datastore.

**The Issue:**
1. `FirebaseMessagingService().onNewToken()` is **never** called, not even on a fresh installation of the app.
2. When calling `FirebaseMessaging.getInstance().getToken()`, the task runs infinitely and never completes (neither succeeds nor fails).

**Version specific behavior:**
- The bug occurs when using **Firebase BOM 34.12.0** in combination with **androidx.datastore 1.3.0-alpha07**.
- If I downgrade `androidx.datastore` to **1.3.0-alpha06**, the issue disappears and FCM works correctly.
- Alternatively, if I keep Datastore at `1.3.0-alpha07` but downgrade the Firebase BOM to **33.16.0**, the issue also disappears.

This indicates a dependency clash between the newest Datastore alpha and the newest Firebase BOM, causing the FCM token generation/retrieval task to deadlock or silently fail.

The behavior can be reproduced in a fresh project.

#### Steps to reproduce:

1. Create a project using Firebase BOM `34.12.0` and `firebase-messaging`.
2. Add `androidx.datastore:datastore-preferences:1.3.0-alpha07`.
3. Set up a basic `FirebaseMessagingService`.
4. Install the app fresh. Notice that `onNewToken()` is missing.
5. Attempt to fetch the token manually via `FirebaseMessaging.getInstance().token`. Notice that the listener is never triggered.

#### Relevant Code:

**`build.gradle.kts` (Dependencies):**
```kotlin
dependencies {
// Firebase
implementation(platform("com.google.firebase:firebase-bom:34.12.0"))
implementation("com.google.firebase:firebase-messaging")

// Datastore (Causes the FCM infinite hang with the BOM above)
implementation("androidx.datastore:datastore-preferences:1.3.0-alpha07")
// Note: Reverting to 1.3.0-alpha06 fixes the Firebase issue.
}
```
**MyFirebaseMessagingService.kt:**
```kotlin
import android.util.Log
import com.google.firebase.messaging.FirebaseMessagingService

class MyFirebaseMessagingService : FirebaseMessagingService() {

override fun onNewToken(token: String) {
super.onNewToken(token)
// BUG: This is NEVER called on fresh install when using the dependency combination above.
Log.d("FCM_TEST", "Refreshed token: $token")
}
}
```
**MainActivity.kt (Manual Token Fetching):**
```kotlin
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.messaging.FirebaseMessaging

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

Log.d("FCM_TEST", "Fetching FCM token...")

FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
// BUG: This callback is NEVER reached. It hangs infinitely.
if (!task.isSuccessful) {
Log.w("FCM_TEST", "Fetching FCM registration token failed", task.exception)
return@addOnCompleteListener
}

val token = task.result
Log.d("FCM_TEST", "FCM Token: $token")
}
}
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.