Это была полностью моя вина. У меня в методе рендеринга App.js была строка вроде:
// Should have been wrapped in an if
store.dispatch(FirebaseAuth.signOutCurrentUser());
// XXX TODO login as known user for testing, DO NOT USE IN PRODUCTION
const autoLogoutAndLoginAsTestAccount = false;
if (__DEV__ && autoLogoutAndLoginAsTestAccount) {
store.dispatch(FirebaseAuth.signInWithEmailAndPassword({ email: "joel@test.com", password: "REDACTED" }));
}
который должен был быть
// XXX TODO login as known user for testing, DO NOT USE IN PRODUCTION
const autoLogoutAndLoginAsTestAccount = false;
if (__DEV__ && autoLogoutAndLoginAsTestAccount) {
store.dispatch(FirebaseAuth.signOutCurrentUser());
store.dispatch(FirebaseAuth.signInWithEmailAndPassword({ email: "joel@test.com", password: "REDACTED" }));
}
У меня это было на месте, поэтому мне не нужно было входить в систему каждый раз, когда я горячо перезагружал код RN, но, хотя я обернул автологин внутри if, чтобы предотвратить его запуск в prod / testflight, я не обернул автологин , Поэтому Firebase делал то, что я просил, и выходил из системы пользователя каждый раз, когда он перерисовывал приложение (например, при перезапуске).
Я использовал auth listener, но проблема не в этом.
Извините, это была глупая ошибка с моей стороны, и я чувствую смущение, так как обычно я очень осторожен с моим кодом, и я просто пропустил это. Я не хотел никому терять время и спасибо всем за ваши осторожные ответы. Я публикую это здесь на случай, если это кому-нибудь поможет в будущем.