Asking because we started off with FireStore, getting a bit of traction now, but I can't see any good reason for us to switch away any time soon.
Asking because we started off with FireStore, getting a bit of traction now, but I can't see any good reason for us to switch away any time soon.
- Lack of schema makes it really easy write bad data without realising it. I inherited a 3 year old firebase/firestore codebase and database was FULL of inconsistent data. This was not helped by our application being in JavaScript meaning bad data could roundtrip all the way through our without triggering any errors. Only later causing obscure and hard to debug issues.
- Lack of query flexibility or joins make some use cases either impossible or very inefficient
- Connecting directly from client apps makes it very difficult to make backwards compatible changes. You can fix this by making everything go through backend APIs, but then you lose realtime which is the main benefit of firestore in the first place.
We're halfway through a port to Postgres+Hasura, and our app is much more reliable and responsive now.
I do wish they'd add actual migration support though. Firebase has always needed some kind of document views like feature to allow backwards compat, but still allow changing the schema.
https://github.com/bijoutrouvaille/fireward
https://github.com/FirebaseExtended/bolt
I have seen people putting bad security rules often before. It makes me worried about using firebase apps.
No proper rate limiting, protected fields, dashboard sucks, opened feature requests for years without any answers, missing ton of small stuff I can't remember that is very easy to do on postgres (counters?), etc.
I have used hasura. It's good but I like supabase more now. Easier to directly write SQL than indirection of graphql.
> I have used hasura. It's good but I like supabase more now. Easier to directly write SQL than indirection of graphql.
Supabase looks really nice. I'd definitely consider it for new projects. The nice thing about Hasura is you have full access to the underlying Postgres DB. We are actually writing SQL for most of our data fetching needs with a traditional express backend. We're only going through Hasura when we need realtime capabilities. But it's pretty nice to be a bolt it on and get subscriptions out of the box :)
You trade these things to get scale out:
- SQL joins and queries regardless of your schema.
- Enforcing public interfaces for reads/writes.
- Zero latency for admin operations.
- Global transactions.
- Auth logic written directly in your language, running where your data is.
The trade is not worth it if you do not use the scale out feature of Firestore.
I would just go with HTTP/websockets, typed language, SQLite and a single VM until you prove you need to scale out.