Hi @RacRig5407 ,
The exception to the official Microsoft documentation 'Performance tips and best practices' is actually a best practice for many scenarios:
There's an exception: In the previous example, imagine that the only way to display screen 1 is by navigating from screen 2. Then screen 2 will have already been loaded in memory when screen 1 is to be loaded. No extra work is needed to fulfill the dependency for screen 2, and therefore there's no performance impact.
Best practice: If the user must first select something from a gallery, dropdown, or combo, you can simply reference gallery.Selected, dropDown.Selected, or comboBox.SelectedItems for the entire app! No need for a global variable! Unless you are doing some serious data manipulation from when the user selects an item to when you write back to the data source, try to avoid global variables as they can lead to mutable problems you seem to be experiencing. Even then I'd say you can get away with most of that data manipulation at the time of update, for instance in a datacard's update property (datacard1.Update), or added logic to a patch statement.
Further, if you think 'Well, I have a deep-link, so this pattern will not work for that', think again! The gallery.Default property is the way to maintain this pattern with deeplinks as well:
gallery.Default:
If( !IsBlank(Param("recordGUID")),LookUp(galleryDataSource,recordGUIDSLT=Param("recordGUID")) )
It might not be as clear with dropdowns as it is with galleries and combos, but you can load an entire record into a dropdown control to maintain this pattern. Even though the dropdown can only show one of those values from the record, the entire record gets selected.
For example, if you have a dropdown with:
Dropdown1:Items mySharePointListName
Then make sure Title (or other text field) is in the Value property on the right hand pane:

Once the user makes a selection, you have access to that entire SharePoint record for the entire app. So as an example, to show the user that created the selected SharePoint record, you could provide this code later in the app:
Dropdown1.Selected.'Created By'.DisplayName
Avoiding global variables is considered a programming best practice, even for PowerApps. Avoiding global variables has been a tenant of JavaScript programming from the very beginning which has led to many different methods of dealing with this problem over the years. Though it is a bit outdated, this excellent JavaScript video series goes over why you want to avoid global variables, and how you can add a little extra code to create a 'module' using the object literal/anonymous self executing function pattern.
Luckily for us, just about everything in PowerApps is a kind of module and has it's own API with properties you can reference nearly anywhere in the app!
Cheers!