How can I save additional user data in Cloud Firestore database? I mean, which one is the proper way? I want to create a user collection, where I can store their username an
I think there's nothing bad in your example. Of course as long as you set up proper security rules on your firestore database :)
Another thing is that IMO there's no difference in using the Realtime Database and the Firestore one. The differences are in the architecture and how it works "behind the scenes", but the overall usage - this is very similar (the API is just slightly different AFAIK).
One alternative solution that I could recommend you is to do the database write stuff outside your web app using Firebase Functions and the Firestore Triggers - https://firebase.google.com/docs/auth/extend-with-functions This solution would remove the necessity of the createUser function on the client-side.