I'm new to blockchain and Ethereum and have a few questions:

  1. Does Apple's App Store allow mobile DApps other than wallets and browsers?
  2. Is it possible to build a mobile DApp that runs on your mobile device without downloading the full ethereum node, but still make full use of things like smart contracts and the IPFS technology?
  3. Is it possible to develop mobile DApps in native languages like Swift or Kotlin, not web apps or hybrid apps?
  4. Are there big differences in terms of technical challenges between developing mobile DApps that use private blockchain vs public blockchain?
  • Can you clarify the last question? Commented May 9, 2020 at 3:11
  • Is it possible for a mobile app to interact with smart contracts directly the way a web browser does through MetaMask?
    – Kevvv
    Commented May 9, 2020 at 3:42

2 Answers 2

  1. This may change, because DeFi has such promise, but as of now Apple has been removing DApps from the Apple App Store. Reference: "Apple “Eliminating Usage of Dapps From the App Store” Says Coinbase CEO". One of the only DApp's I see on App store is: "Ally - Chat" which is not fully decentralized.
  2. Yes, you can build full IPFS enabled DApps with Web3js. Web3 uses Contract ABI's to ensure full compatibility with smart contracts without the need to download the blockchain.
  3. Web3.swift was created to make building DApps on mobile as familiar as possible.
  4. Yes, when dealing with a private blockchain, you could be responsible for hosting the nodes, storing transaction history and handling the signing of transactions within your DApp. Your DApp may need to store private keys securely as well. When you use something like Metamask, it handles a lot of the complexity.

Neither web apps or mobile apps have to download the full chain that would be impossible. You can connect your web or mobile app either to a node that you a running yourself or to a service like Infura. You can develop in Swift and there are even Web3 libraries for it out there. e.g., https://github.com/argentlabs/web3.swift.

However, here comes the biggest problem. Users need a mobile wallet to securely send transactions and there is no way at least that I know of to request transaction signatures from another wallet app while inside your own native app. Your only option would be to request users sending ETH manually to an address of yours. That's obviously not the best UX.

You are better off writing a mobile web app that users can browse to with one of the many mobile wallets. These mobile wallets generally have a browser integrated and act as MetaMask (and if you use the mobile MetaMask wallet it literally is MetaMask).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.