`isFetching` vs `isLoading`

In useWeb3Contract and also useWeb3ExecuteFunction, the hooks return:

data, error, runContractFunction, isFetching, isLoading 

Could you please let me know what each of these do?

data: The response of running the contract function
error: An error in the transaction
isFetching: The transaction is in flight?
isLoading: The metamask hasn’t been approved yet?