Expo and react-native-firebase - firebase

I'm trying to integrate Firebase into my expo app using the react-native-firebase framework which has several advantages over the regular firebase package when it comes to react-native apps.
However, I'm running into difficulties since the instructions say I must add the GoogleService-Info.plist to ios/[YOUR APP NAME]/GoogleService-Info.plist, and expo apps don't have an ios folder from what I understand.
Am I pretty much screwed or is there a solution for this?

As the react-native-firebase documentation says, you need to eject your app if you want to use this library with expo. Be mind that eject action is not reversible. More info here and here and here.
If you use Expo and would like to use this package, you'll need to
eject. If you do not want to eject, but wish to make use of features
such as Realtime Database (without offline support) & Authentication,
you can still use the Firebase Web SDK in your project.

Today, you can't have the Firebase react-native sdk with expo. And this is not planned according to: https://expo.canny.io/feature-requests/p/full-native-firebase-integration.
So you have to play only with the javascript sdk from Firebase.
Cloud Firestore is new, it will be better for the javascript sdk for offline and sync.

The author of this thread: Fresh Detached Expo + RNFirebase not running on Android has managed to get it working with the Detached ExpoKit - so it's not a full ejection and keeps the expo features.
I have asked for the steps he took so we can see about getting something added to our docs and possibly a Detached ExpoKit version of our starter app.
See the expokit detaching docs for information about ExpoKit.

It's in progress --
https://blog.expo.io/using-firebase-in-expo-e13844061832
Using Firebase in Expo
And how we plan on adding it to the client 😁
We are super excited to announce that we will be rolling out a suite of Unimodules that will provide you with easy access to native Firebase features! initially you will only be able to use these in a detached ExpoKit App. But over time we will be working to add these to vanilla Expo.
TL;DR
Here are the modules, you will need to detach to add them for now:
App/Core
Analytics
Authentication
Cloud Firestore
Cloud Functions
Instance ID
Performance Monitor
Realtime Database
Cloud Storage
Remote Config
Firebase Cloud Messaging
Remote Notifications
Dynamic Linking
Invites
Crashlytics
Also TL;DR
Here is a boilerplate: https://github.com/EvanBacon/expo-native-firebase

Update 02-12-2021
Guys expo's eas-build is now public. You can add custom native codes and use react-native-firebase. Here is the link to a youtube tutorial. The video is short and super easy to follow. Here is the link to the docs
Previous answer
If you are using Firebase using the mobile configuration, it does not work, but it worked smoothly when I tried the web configuration. Here is the youtube tutorial. Watch from 38:20 to set up.

I managed to get a working set of react-native with redux, firestore and expo. See Code example at Github.
But it costs the offline-persistence (see https://github.com/firebase/firebase-js-sdk/issues/436). So from my point of view it costs performance, because i need to be online to get a full working app with firestore and react-native.

Related

Is there a way to use firebase using expo react native?

I will build an offline app using expo react native is that possible ?
if yes can anyone please tell me how ?
Did you take a look here. I thik you already asked this ony a comment on one of our previous questions.
For the offline features maybe this can help to.
Please check out:
https://docs.expo.dev/guides/using-firebase/
TLDR: If you'd like to use Firebase in the Expo Go app with the managed workflow, they recommend using the Firebase JS SDK. It supports Authentication, Firestore & Realtime databases, Storage, and Functions on React Native. Other modules like Analytics are not supported through the Firebase JS SDK, but you can use expo-firebase-analytics for that. If you'd like access to the full suite of native firebase tools, we recommend using the bare workflow and react-native-firebase, because we cannot support this in the Expo Go app currently.

flutter & cloud firestore for web, ios, web

I want to develop a flutter app for android, ios and web. My idea was to use flutter so that I can build all of those three components with the same source code. As a DB I decided to use cloud firestore, as I thought that it would have the easiest flutter integration. For android it works great, however for web my code seems unusable.
I came across this plugin list, and it seems the only plugins available also for web are firebase_core and firebase_auth:
https://github.com/FirebaseExtended/flutterfire#available-flutterfire-plugins
So now I have the following questions:
What can I do with the firebase_core plugin? Can I access my firestore DB? (There seems to be no real documentation..)
To learn what you can do with the firebase-core plugin, have a look at the sample app for it.
Mostly it allows you to create FirebaseApp objects, which you need to create any of the other Firebase service objects (such as FirebaseAuth). So while you can't really do anything meaningful with just firebase-core, it is a prerequisite for most other Firebase services.

Firebase Cloud Functions - access debug or release database

I have a project for both Android and iOS that's using cloud functions for same app behavior and consistent data storing. For now we were debugging apps on single database, storage and authentication.
The problem is when I switch to release variant I want functions to operate on release database, storage and auth.
I've been searching for an answer to my problem and all I've found was this: How to access multiple Realtime Database instances in Cloud Functions for Firebase
but it doesn't help too much.
Is there a way to go about that without making another Firebase project for release variant?
Ok, so basically just a while after posting this question I've found official firebase guide that helped me resolve this issue.
Short answer: no, you have to create another project in Firebase as described in guide.

Full Firebase React-native app to offline persistance [duplicate]

I have an existing iOS app that I'd like to start adding some React Native screens to. The app uses Firebase with persistence enabled so that it works offline. Is there a way to also use Firebase directly within React Native while maintaining offline functionality?
If the answer is "Yes", do iOS and React Native share the same local data store? This would be important, so that offline data changes on iOS screens would reflect data changes made from React Native screens and vice versa.
Thanks for sharing your insight on this!
Alternatively, you can use Firestack, which is a native library that works with both iOS and Android on react native.
Offline support is enabled along with storage, the real-time database, authentication, remote configuration (in development), etc.
(disclosure: I am one of the primary authors of Firestack)
Firebase's offline disk persistence is currently only available in its native iOS and Android SDKs. It is not yet available for JavaScript SDK.
The javascript SDK will persist new write requests when you are offline and will sync with the server once you go online. But if you were hoping to show a list with data that was previously fetched from firebase, then you are out of luck with Javascript.
One of the answers mentions Firestack, but it is no longer supported.
On a project I just ended up installing this package https://github.com/invertase/react-native-firebase. It is a bridge to the native ios & Android SDKs for firebase and if you use it you can also use persistence.
Tested and verified. All works great! :)
UPDATE:
It is now possible https://firebase.google.com/docs/database/web/offline-capabilities
OBSOLETE:
As of Firebase JavaScript SDK 3.1.0, offline persistance is still unavailable. It's recommended you use React Native's AsyncStorage.
All of the answers above are out of date!
As of JULY 2020 offline persistence is supported out of the box when you use react-native-firebase.
Read more here: https://rnfirebase.io/firestore/usage#offline-capabilities

Firebase client library for ROBOVM

I am developing a mobile app with Robovm for ios.
I need to use Firebase in my app.
Is there any way to use Firebase in Robovm?
Update: we have added Firebase Analytics to our Robovm app and documented how to do that at https://www.squins.com/knowledge/adding-firebase-analytics-to-a-robovm-ios-app/
Original reply:
You will have to create bindings manually.
Some instructions to get started: https://github.com/MobiDevelop/robovm/wiki/How-are-bindings-to-existing-native-frameworks-generated%3F
On their Gitter chat-room, another libgdx developer is trying to achieve exactly that and he is being helped out by the maintainers of Robovm :-).
https://gitter.im/MobiDevelop/robovm?at=58d043dab809ca5f4a654424

Resources