Check out this simple demo native mobile dapp I made that generates an in-dapp Ethereum account for the user and then creates a contract-based account (@gnosisSafe) via CREATE2 with that account as the owner.
@tasit/account-recovery" target="_blank" rel="nofollow noopener">expo.io/@tasit/account…
Powered by @TasitProject
You always can wire any of these accounts up with a "parent" contract-based account for shared account recovery settings.
And you always can link your accounts off-chain—ENS names make this easy—so this doesn't mean missing out on a global view of the state of your accounts.