I had deployed a smart contract on the Layer 2 custom network which was set to be gas-less for all transactions. However, when testing out the smart contract interactions on our Dapp using the MetaMask mobile browser for both the iOS and Android version, the transactions on iOS requires a gas fee while the transactions are able to go through on Android with no gas fee required.
The window.ethereum provider in the MetaMask mobile app browser is converted it to a ether.js provider via ethers.providers.JsonRpcProvider(). Then a custom RPC network is used since the Dapp should be connected to a private blockchain.
OS: 14.4, MetaMask: v 3.0.1
Android: 11, MetaMask: v 3.0.1