I am trying to develop a RN application which would contain different screens, based on the role of user logged in.
Application would have 4-5 roles and each role would kinda be like a whole application within itself.
I am undecided as to what kind of architecture should I have if I am looking to incorporate all these roles within one application only. Or if I should go about making a separate application for each role?
I think more important than the roles will be the actual tasks your roles have. I'd create a matrix for getting clarity on which role requires which tasks. You then write task specific ui screens/components and show/hide based on the role matrix. This will probably be the most logical architecture and promote reuse of your task oriented ui components. Imagine a new role comes into the picture for your application - Or a new task. For both cases this architecture is easily extensible/changeable.
You can do this approach with writing a single app for all roles or a separate app for each role - Your task specific modules will be reusable in either approach.
And the comment to use redux for state management is a somewhat different topic, but generally not bad advice for a reasonably complex app. Just read this to get more clarity.