Progress & Activity
It's important to communicate to users when something is happening that they need to wait for e.g. data being processed or fetched from a server. Without any feedback it can feel like an application has frozen or become unresponsive.
Progress bars are useful to show for determinate progress, where there’s a known point of progress being complete. They can also be used for indeterminate progress in certain situations.
Spinners are a more compact way than progress bars to show activity.