Please be so kind as to read my full post before responding. Thank you for your consideration.
In one PowerApp I wanted to have the user confirm exit, only if there were unsaved changes. I already had set up a Cancel Button with Visible property set to true only if there were unsaved changes. I cannot use Form.Unsaved because of custom DataCards which which don't have an Update property to track. Thus, I had ConfirmExit reference this Cancel Button.Visible similar to the example in the documentation: https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/functions/object-app#confirmexit In my App I am just using a Button.Visible property instead of Form.Unsaved.
This was working as least in PowerApps Release 3.19075.21. I have a published version of my App from that release which is working in browser and mobile PowerApps App.
I just tried continuing work on this PowerApp (with Studio in current, at the time of writing, release 3.19091.18), but my formula for ConfirmExit isn't accepted anymore. Form.Unsaved is still accepted but is not useful for me in my PowerApp because I have a lot of custom DataCards without Update property. The App checker says The reference link points to the link given above. I could not find a "list of supported control properties".
How do I get it working again (in a reasonable way)? I guess I could work around this thing by using some sort of unsaved global variable in all OnChange events but I really don't want to do that.
There been a change to the scoping or acceptance of Controls/Properties in ConfirmExit right?
Is there any relation to that strange DelayedLoad warning in the documentation? DelayedLoad is still on in my advanced App settings.
Where is the supposed "list of supported control properties"?
I have made a test on my side, and find the same issue you mentioned.
Button.Visible cannot be referenced in ConfirmExit even though it is boolean value, so strange!
I haven't found any blogs describing the change of ConfirmExit, and I'll go to check if this is an update bug. Until then, I afraid that the only way is to use a global varible to pass boolean value to ConfirmExit.