Hi,
Yes, you can show a spinner with a changing message, but there is one limitation: if all actions are running inside one long OnSelect formula, Power Apps may not visually update the spinner text between each step until the formula finishes.
A better approach is to use a variable for the spinner text and update it before each major action.
Example:
Set(varShowSpinner, true);
Set(varSpinnerMessage, "Recording Action Record");
Patch(
'Action Records',
Defaults('Action Records'),
{
Title: txtTitle.Text
}
);
Set(varSpinnerMessage, "Recording Stakeholders");
Patch(
Stakeholders,
Defaults(Stakeholders),
{
Title: txtStakeholder.Text
}
);
Set(varSpinnerMessage, "Making a system note");
Patch(
'System Notes',
Defaults('System Notes'),
{
Note: "Action created"
}
);
Set(varSpinnerMessage, "Creating Action Report repository");
YourFlow.Run();
Set(varShowSpinner, false);
Notify(
"Process completed successfully",
NotificationType.Success
);
Then set your spinner/label properties like this:
Spinner Visible
varShowSpinner
Spinner message Label Text
varSpinnerMessage
Important note
This may work to some extent, but if the submit button is doing everything in one continuous formula, Power Apps may not always repaint the screen between steps. So the message might not appear to change smoothly.
If you need the message to definitely update step-by-step, a better design is to use a Timer control or split the process into stages.
Better approach using a Timer
You can use variables to control the current stage.
Submit button OnSelect
Set(varShowSpinner, true);
Set(varSubmitStep, 1);
Set(varSpinnerMessage, "Recording Action Record");
Set(varStartSubmitTimer, true);
Timer properties:
Set the Timer:
Duration = 100
Repeat = false
AutoStart = varStartSubmitTimer
Timer OnTimerEnd:
Switch(
varSubmitStep,
1,
Set(varSpinnerMessage, "Recording Action Record");
Patch(
'Action Records',
Defaults('Action Records'),
{
Title: txtTitle.Text
}
);
Set(varSubmitStep, 2);
Reset(tmrSubmit);
Set(varStartSubmitTimer, false);
Set(varStartSubmitTimer, true),
2,
Set(varSpinnerMessage, "Recording Stakeholders");
Patch(
Stakeholders,
Defaults(Stakeholders),
{
Title: txtStakeholder.Text
}
);
Set(varSubmitStep, 3);
Reset(tmrSubmit);
Set(varStartSubmitTimer, false);
Set(varStartSubmitTimer, true),
3,
Set(varSpinnerMessage, "Making a system note");
Patch(
'System Notes',
Defaults('System Notes'),
{
Note: "Action created"
}
);
Set(varSubmitStep, 4);
Reset(tmrSubmit);
Set(varStartSubmitTimer, false);
Set(varStartSubmitTimer, true),
4,
Set(varSpinnerMessage, "Creating Action Report repository");
YourFlow.Run();
Set(varSubmitStep, 5);
Reset(tmrSubmit);
Set(varStartSubmitTimer, false);
Set(varStartSubmitTimer, true),
5,
Set(varShowSpinner, false);
Set(varStartSubmitTimer, false);
Notify(
"Process completed successfully",
NotificationType.Success
)
)
This gives Power Apps a chance to update the UI between each step.
About the Power Automate flow
Since you mentioned the slowness may be due to the flow creating a SharePoint folder, that is very possible. Calling a flow from Power Apps can slow down the user experience because the app waits for the flow response.
If possible, consider:
- only calling the flow once
- moving more related actions into the same flow
- returning a simple success/failure response to Power Apps
- creating the SharePoint folder asynchronously if the user does not need it immediately
Recommended solution
For a simple app, use:
Set(varSpinnerMessage, "message here")
before each action.
But for a more reliable step-by-step spinner message, use the Timer-based approach, because it allows the screen to refresh between actions.
Hope this helps.
If this helped solve your issue, please Accept as Solution so others can find it quickly.
If it didn’t fully solve it but was still useful, please click “Yes” on “Was this reply helpful?” or leave a Like :).