vuex-easy-firestore
vuex-easy-firestore copied to clipboard
feat: upgrade firebase to v9.0 and vue3
💬 About
I've updated the dependencies of one of my hobby projects to use Vue3 and the latest firebase SDK (v9, not in compat mode). To keep it running, I patched this package until it worked for my specific use case. ~I have not updated any test cases nor am I sure I've covered all cases. But in my limited use case everything worked as expected.~
Maybe this can be a starting point for someone else to update this library to the latest dependency versions. Unfortunately, I don't have time for that.
🔁 What has changed?
- replaced Vue's reactive helpers with plain JS. Vue 3 can now handle these itself
- replaced the firebase 8 syntax with the new explicit firebase 9 function calls.
💥 Breaking Changes
- The
FirebaseDependencyis now required and should be the value returned byinitializeApp(config);(import { initializeApp } from "firebase/app";) - Compatibility is only tested with Vue@3 and Vuex@4
- fetch
optionsremoved, because the available options can no longer be passed as is to the new firestore API. Different functions calls would be necessary and because I haven't seen the use case I removed this complexity.
🚫 What's missing
- ✅ ~documentation needs to be updated. The
Vue.use(Vuex)example is definitely outdated~ - ✅ ~Tests need to be checked and eventually fixed.~
- ✅ ~Maybe I missed some firestore legacy code. But the compiler didn't complain, so maybe it's complete. 🤷♂️~
👨💻 How can I use that?
Currently, you could use:
npm i --save vuex-easy-firestore@github:adrianjost/vuex-easy-firestore#sdk-9
to test the patch from this PR in your repo. But I don't recommend doing this except for testing compatibility and adding further fixes.
- The patch for
vuex-easy-accesscan be removed when https://github.com/mesqueeb/vuex-easy-access/pull/70 is merged.
A little update: I got all tests working ✅
And now I even got some time to update the docs as well. 🎉
@adrianjost really amazing job! let's get this released. I contacted you via your website.
Feel free to merge and release this whenever you want. From my side the code should be ready for it.
I'm just not 100% sure, if it should be released as 2.0.0 (because the new dependency versions are incompatible with the old ones) or it's okay the way it is. Semver isn't that clear to me in this case: https://semver.org/#what-should-i-do-if-i-update-my-own-dependencies-without-changing-the-public-api
would love to see this feature finally merged. I was super happy to find this library as this is exactly what I was planning to implement for my project. Unfortunately I got emidiate disappointment when the library failed to load due to broken imports. Please continue your great work and merge this feature.