None. When a user enters the app, you would check for the existence of a registration row in the registration table.
If none exists, user is not registered and you would show the registration form.
If a row exists for that user, the user is registered and you would show the app views.
As stated above, you would place an expression in the Show_If of each app view. I would create that expression like this (registration row exists?):
COUNT(Registrations[Registration ID], [User Email] = USEREMAIL()) > 0
For the registration form, the expression would be like this (no registration row):
COUNT(Registrations[Registration ID], [User Email] = USEREMAIL()) = 0
All of this does beg the question…How are you planning for users to access your app? Will it be a Public App such that any user can access it? Or will it be an app on a per-user-license plan that requires user authentication?
I have assumed with my answers that you will have your app on a per-user-license plan.