Understanding TestFlight

Hi, I'm trying to understand how TestFlight works since a major update of my app is coming soon. I currently have an app in the app store with a few thousand users, the current app was written in UIKit and I'm now rewriting it in SwiftUI and making major updates such as, moving from Realm to Core Data and allowing iCloudSync etc. I don't have users emails, only from the people who have contacted me with questions so, I was wondering if I could somehow invite users to test the new version without having their emails.

Can someone please describe the typical process when using TestFlight?

Would the following process be considered a good practice?

  1. Add a message in the existing app to invite users by asking for their email so they can join TestFlight at a later date.
  2. Release a new Beta version in TestFlight.
  3. Invite the users who subscribed via the old app.
  4. Release to production after users test it.

Thanks