I haven’t ever used Teams, so I can’t really advise on that, but option B would work.
Like I mentioned in the other thread, I usually just go ahead and make updates to my live apps. My user base is small, so I usually just jump right in and make the changes live. If it’s a larger change, I usually reconstruct a tab that only I can see, or set visibility on parts that only I can see, so I can develop it in my own time and adjust visibility whenever I’m ready. Just depends on the type of changes you are making and how adventurous you are feeling. I’m usually pretty adventurous.
Keeping a copy and swapping is an option, but I think it can get a little more complicated if you have a custom domain. Also you need to be quick on updating the glide url’s as well so it doesn’t interfere too much with your users. Plus there’s the hassle of transferring billing between apps. It’s not a method I use myself. I’ll make duplicates of my app periodically as a backup, but other than that I don’t make duplicates to work on new updates.
Again, I’m not really a good source for something like this, so hopefully someone else can chime in. I’d say, just do whatever you are most comfortable with. If it’s a data change, sometimes it’s easier to reconstruct new columns and point components to the new columns when ready and clean up the old columns. If you do things correctly, you can make changes without the user’s noticing and then flip the view when you are ready. If you are making a copy of the app to make changes, I’d assume you would use the same tables instead of duplicating them as well, so just be aware of any data changes in the duplicated app that could affect your original app.