Account and supporter status lost few times a day
Bug Report
Description
Running Mobileraker version on a new Pixel 10 Pro, app restored from Android backup after switching from the old phone.
Sometimes when I open the app, the popup appears asking me to delete extra printers or support the app, even though I have lifetime supporter status. I have to log in to the account and click Restore Purchases. It works fine for some time, and then resets again when I open the app in a few hours.
Steps to Reproduce
- Open the app, having supporter status.
Expected: the purchase status remains. Actual: the printer removal / supporter status purchase message is displayed.
Expected Behavior
The supporter status and account info should remain and shouldn't be re-entered a few times a day.
Screenshots
N/A
Version Information
- Device-OS (Android/iOS): Pixel 10 Pro, latest update, Android 16.
- Mobileraker: 2.9.4
- Klipper: n/a, multiple printers
- Moonraker: n/a, multiple printers
Debug Logs
The debug logs contains sensible information like my printers URLs, happy to share it with dev privately if needed. I haven't seen any messages regarding the account or supporter status though.
Additional Context
Add any other relevant context about the problem here.
Checklist
To help us diagnose the issue, please ensure you've completed the following steps:
- [x] Provided a clear bug description.
- [x] Listed detailed steps to reproduce the issue.
- [x] Described the expected behavior.
- [x] Included the Mobileraker version you are using.
- [x] Attached Mobileraker's debug log files.
- [x] Specified the version numbers of Klipper and Moonraker if applicable.
Update: the issue is reproduces by closing ("swiping") the app.
Hey, since you mention that you migrated to a new phone, did you try to completely remove and reinstall the app?
It seems like your phone is blocking mobileraker from storing your user id on the device. Which forces the app to always assign you a new anonymous id?
Hi @Clon1998 , Thanks for a quick response! Is there any option to backup my printers settings? I couldn't find anything.
Hi @Clon1998 , Thanks for a quick response! Is there any option to backup my printers settings? I couldn't find anything.
Sadly not at the moment. I can have a look during the weekend to see if I can quickly add an export for those settings.
I just made an interesting observation. I've changed the settings of one of my printers (simply pre-ordered macros, if that matters), closed the app, and then re-opened it.
The app opened just fine at first, the change I made retained, there was no ad or supporter status message, and then after a few seconds the application theme have changed to the default one (I use the supporter theme) and the message appeared.
Does this mean the user ID is stored separately from the app settings? Or, it seems like there's something happening shortly after starting the app which resets the user ID. I'm not a mobile developer, but since the app data was transferred from the old phone, maybe it's Firebase device ID mismatch or something that causes the user ID to be invalidated? Just guessing.
As an option, I'll be happy to install the custom version of the app with verbose logging if you'd like to investigate.
I just made an interesting observation. I've changed the settings of one of my printers (simply pre-ordered macros, if that matters), closed the app, and then re-opened it.
The app opened just fine at first, the change I made retained, there was no ad or supporter status message, and then after a few seconds the application theme have changed to the default one (I use the supporter theme) and the message appeared.
Does this mean the user ID is stored separately from the app settings? Or, it seems like there's something happening shortly after starting the app which resets the user ID. I'm not a mobile developer, but since the app data was transferred from the old phone, maybe it's Firebase device ID mismatch or something that causes the user ID to be invalidated? Just guessing.
As an option, I'll be happy to install the custom version of the app with verbose logging if you'd like to investigate.
If I remember it correctly both my app settings and the firebase/revenueCat userid are stored in the shared preferences on android. However, it's likely that the phone migration corrupted some data or similar.
Regarding the backup functionality. I tried to add something really quickly yesterday but ran into a few problems. I hope I can get something that's more reliable done during the weekend and let you know.
If I remember it correctly both my app settings and the firebase/revenueCat userid are stored in the shared preferences on android. However, it's likely that the phone migration corrupted some data or similar.
That's what confused me. App settings seem to survive closing the app, but not the revenue / user ID. There's likely an old phone ID stored somewhere or similar.
If I remember it correctly both my app settings and the firebase/revenueCat userid are stored in the shared preferences on android. However, it's likely that the phone migration corrupted some data or similar.
That's what confused me. App settings seem to survive closing the app, but not the revenue / user ID. There's likely an old phone ID stored somewhere or similar.
I wanted to let you know that I didn’t finish the export functionality today. I got a bit lost in refactoring some old code. I’ll let you know once I’m done.
Hey, sorry for the delay. I finally finished the import and export in the most basic form.
I pushed a beta version (2.9.5-678) to google play open beta. However, you can try if the APK also works.
FWIW, I'm having exactly the same issue as the OP - migrated to a Pixel 10 Pro and now no matter how many times I login and/or restore purchases, the app eventually "forgets" about this. I've removed and reinstalled the app to no effect. I'll try the beta version so I can do an export/delete/import and see if that works.
FWIW, I'm having exactly the same issue as the OP - migrated to a Pixel 10 Pro and now no matter how many times I login and/or restore purchases, the app eventually "forgets" about this. I've removed and reinstalled the app to no effect. I'll try the beta version so I can do an export/delete/import and see if that works.
Okay... That's weird... I will ask on Discord if other Android users have the same issue or if it's related to the Pixel 10.
Btw. the Export/Import can be found at the last section of the App Settings. However, not the text button "Backup&Restore" but the tile above Crashlytics settings.
I also improved the logging once again. So once you guys have the beta and it happens again please export the app logs and either upload them here or kindly send them to me [email protected]
Note that the notification state is also reset, here are screenshots showing my successful login and restore, then I swipe closed the app and reopened it
Waiting for the Play Store to see the 678 beta release yet.
@Clon1998 I'm not sure which Discord you're on, but I found some interesting info in the debug logs (I haven't done the export/wipe/import yet, because I'd rather get to the bottom of the problem if possible).
Here's what Cursor came up with while analyzing the codebase and debug logs (happy to DM you the logs if I have a place to do it):
-- AI analysis below --
What this cold-start log proves
You’re right: this log is extremely revealing, and it does show a cold start after previously being logged in as a supporter.
Here’s the critical sequence in mobileraker_2025-11-16T10-16-56.log:
- Cold start – RevenueCat still knows you’re a supporter
- App warmup and first
getCustomerInfo:
[info] ... Fetching customer info
[info] ... [PaymentService] User changed. isLogin: false, isLogout: false
[info] ... Completed PaymentService init
- RevenueCat responds with Supporter entitlement for appUserId
U4viBD...:
Got customerInfo: ... entitlements.active: {Supporter: ... productIdentifier: mobileraker_supporter_v2.lifetime ...}
RCat ID: U4viBD[...redacted...]
...
Got customerInfo: ... same entitlements ...
RCat ID: U4viBD[...redacted...]
- App treats you as supporter:
Setting up marketing notification listener, isSupporter: true
...
488:logs/mobileraker_2025-11-16T10-16-56.log
Received isSupporter true
So on this cold start the app successfully sees your lifetime purchase and sets isSupporter = true.
- A moment later – Firebase creates an anonymous user
Later in the same startup, Firebase Auth transitions from null/anonymous to a new anonymous user:
Firebase Auth User changed from AsyncData<User?>(value: null)
to AsyncData<User?>(value: User(... isAnonymous: true, uid: yKKaJ[..redacted...]))
[info] ... [PaymentService] User changed. isLogin: true, isLogout: false
The PaymentService sees this as isLogin: true.
- PaymentService logs RevenueCat into the new anonymous Firebase user
A bit later, PaymentService calls Purchases.logIn(...) and switches RevenueCat to a new appUserId with no entitlements:
[PaymentService] Logged user into rCat: created: true -
CustomerInfo(... entitlements.active: {}, originalAppUserId: yKKaJ[..redacted...] ...)
Then it fetches CustomerInfo for this new RC user:
Got customerInfo: ... entitlements.active: {}
RCat ID: yKKaJ[..redacted...]
- Supporter status is flipped back to non-supporter
Immediately after switching to the new appUserId with no entitlements:
Setting up marketing notification listener, isSupporter: false
User is not a supporter, returning default layout ...
...
Received isSupporter false
AdFree: false (isSupporter: false, adsEnabled: true, canRequestAds: true)
So in a single cold start you can see:
- RevenueCat initially returns Supporter for
RCat ID = U4viBD... - The app sets
isSupporter = true - Firebase later emits a new anonymous user
uid = yKKa... - PaymentService treats this as a login, calls
Purchases.logIn(yKKa...) - RevenueCat now returns no entitlements for
RCat ID = yKKa... - The app flips to
isSupporter = falseand shows ads/default layout
What this means
This log file is essentially a smoking gun:
- Your supporter purchase is still correctly attached to the old RevenueCat user
U4viBD.... - After Android’s startup/auth handshake, Mobileraker re-binds RevenueCat to a new anonymous Firebase user (
yKKa...) with no purchases. - That rebind happens on every cold start, so the supporter status is “lost” again, even though RevenueCat still knows about your entitlement.
In other words, this log proves that the Firebase→RevenueCat login bridge in PaymentService is overwriting a valid RevenueCat supporter identity with a fresh anonymous one on cold start, which perfectly explains the behavior you’re seeing after transferring to the new phone.
@
Yeah... Seems like firebase is unable to load its stored user id... I need to investigate that. If you dont mind, can you dm/email me your log file?
Sure, where can I DM you?
Sure, where can I DM you?
I forgot if this even was possible on Github lol. But my Discrod is: pad_sch
I've updated to beta, exported settings, then cleared the app settings, and imported them back again. A few settings were lost (like the printers order, or global settings not related to any printer), but otherwise everything works well for me. I'm not getting any random supporter status losses anymore.
So the issue is definitely related to the phone change/data migration, and the fact @kamermans also has a Pixel 10 Pro is just a coincidence.
I've updated to beta, exported settings, then cleared the app settings, and imported them back again. A few settings were lost (like the printers order, or global settings not related to any printer), but otherwise everything works well for me. I'm not getting any random supporter status losses anymore.
So the issue is definitely related to the phone change/data migration, and the fact @kamermans also has a Pixel 10 Pro is just a coincidence.
Good to know! The app export was added fairly quickly, so I might have missed the app settings. However, the machine(s) should be added in the same order, though... Still, you should be able to reorder them on the overview page by long-pressing the machine cards and dragging them to the desired order.
Uninstalling and then reinstalling didn't solve the same issue for me. On beta 2.9.5-678. Pixel 9 pro xl, and also imported everything from a different device.
Uninstalling and then reinstalling didn't solve the same issue for me. On beta 2.9.5-678. Pixel 9 pro xl, and also imported everything from a different device.
Did you restore the same Android app backup? It won't work this way. Current workaround is to install beta version, export printers settings to a file from the app settings, then clean app data and import the file back.
Uninstalling and then reinstalling didn't solve the same issue for me. On beta 2.9.5-678. Pixel 9 pro xl, and also imported everything from a different device.
Did you restore the same Android app backup? It won't work this way. Current workaround is to install beta version, export printers settings to a file from the app settings, then clean app data and import the file back.
I didn't back up anything, i just deleted the app and redownloaded it from the play store.
So im on a pixel 10 pro too and having same issue. Just wondering if there is any update on this? Beta seems to be working
So im on a pixel 10 pro too and having same issue. Just wondering if there is any update on this? Beta seems to be working
I had a few other pixel 10 users reach out on discord and report the same issue.
For them, exporting the app data. Clearing the apps data and uninstalling+installing it again resolves the issue.
Disabling the "Back up other device data" in Google One before uninstalling the app seemingly solved it for me. Somehow never realised that between reinstalls all my settings were persistent. facepalm