Today I came across the SetFocus function and a few until now hidden functions in Power Apps as Microsoft updated the Function reference document.
The SetFocus documentation dates from 2019 so the function must have existed before so it has just been hidden away for a while.
Then when I had a play with this SetFocus function I bumped into a few other nice features.
SetFocus
Table of Contents
SetFocus can be used to set the focus of your app to a specified control. Although hidden for a long time, this is one of the useful functions in Power Apps that will make your UX a lot better.
In the app below depending on which button I click I can force the cursor to go to one of my input boxes.

There will be plenty of apps where for example a choice or a toggle needs to make the focus of the app change.
An other great example is, if you have an input box and the user has to click on a button to submit the data in the input box then the SetFocus can keep the focus on the input box whereas usually the focus will change to the the button.
IsType and AsType
The IsType will let you check if your record is of a certain entity. The AsType you can use to typecast your entity. These functions in Power Apps are mainly important if you use Dynamics 365 or the Common Data Service (CDS)
For example when you have a Customer record in your CDS then you could treat this as an Account or as a Contact. Now you can force the code to go into the right direction of the right entity.
Self
Self is not a function even though it has been included in the function reference! Self is used to reference the control that you are currently working with inside the Power Apps Studio.
As you can see below there are no brackets after Self.

In the app below the PressedFill is set to Self.Fill. This is very close to the point where we can set the colour of something by using some code like :
Set(Self.Fill, RGBA(100,100,100,1))
But that is not how PowerApps works. So how can we use Self?
You can now use Self to use any part of the control to set another property. Like the above PressedFill is using the Fill. In the past this code would have been TextInput1.Fill.
For more information on Self see also https://sharepains.com/2020/06/02/parent-self-and-thisitem-in-power-apps/
SetProperty & Trace
The SetProperty you can use to set a property of a control. The trace function can be used to add information to your test result. This is not a function that you can use in a Canvas Power App. You can however us this in the test app in Power Apps Test Studio.
In described test apps in the past please read my post about testing apps for more information.
With
The last one of the functions that has been added to the functions reference is With. An interesting example is given on the docs page referenced.

With( { AnnualRate: RateSlider/8/100, // slider moves in 1/8th increments and convert to decimal Amount: AmountSlider*10000, // slider moves by 10,000 increment Years: YearsSlider, // slider moves in single year increments, no adjustment required AnnualPayments: 12 }, // number of payments per year With( { r: AnnualRate/AnnualPayments, // interest rate P: Amount, // loan amount n: Years*AnnualPayments }, // number of payments r*P / (1 - (1+r)^-n) // standard interest calculation ) )
This example shows quite nicely how data is massaged before it is being used. How often do you write expressions, that have the same bit repeated over and over again? With the with function you can quite easily avoid that.
Nice finds! Thanks for sharing!
The SetFocus is amazing, but it doesn’t work inside a form (like a SharePoint form or a gallery). Have you found a solution to do this inside the form? i.e. I have a form with multiple “tabs”, so when I change tabs, I’d like the form to scroll back up to the top.
Did you unlock the field that you want to set the focus to?
Not being able to use SetFocus inside a form or gallery is a documented limitation of the SetFocus function.
https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/functions/function-setfocus
Hi Jonathan, the best thing to do is, not to use forms. Build up the forms with controls.
Not being able to setFocus to an input field in a form or gallery is seriously the stupidest thing by Microsoft – not at all 508 compliant.
There are plenty of improvements possible within the platform. But then personally, I hardly ever use forms as the restrict my UX too much.