diff --git a/docs/build/conversations.md b/docs/build/conversations.md index adf564709..aad433f2a 100644 --- a/docs/build/conversations.md +++ b/docs/build/conversations.md @@ -112,7 +112,7 @@ import noxmtpidentity from '/docs/concepts/img/no-xmtp-identity.png'; ## Start a new conversation -You can create a new conversation with any address activated on the XMTP network. To learn more about supported addresses, see [Chains](/docs/dev-faqs#chains). +You can create a new conversation with any address activated on the XMTP network. To learn more about supported addresses, see [Chains](/docs/faq#chains). diff --git a/docs/dev-faqs.md b/docs/dev-faqs.md deleted file mode 100644 index c5182a219..000000000 --- a/docs/dev-faqs.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -sidebar_label: Developer FAQ -title: Developer FAQ -sidebar_position: 3 -description: "Answers to frequently asked questions about developing with XMTP." ---- - -import arbitrum from '/docs/concepts/img/arbitrum-logo.png'; -import avalanche from '/docs/concepts/img/avalanche-logo.png'; -import base from '/docs/concepts/img/base-logo.png'; -import bnbchain from '/docs/concepts/img/bnbchain-logo.png'; -import ethereum from '/docs/concepts/img/ethereum-logo.png'; -import hermez from '/docs/concepts/img/hermez-logo.png'; -import linea from '/docs/concepts/img/linea-logo.png'; -import optimism from '/docs/concepts/img/optimism-logo.png'; -import polygon from '/docs/concepts/img/polygon-logo.png'; -import scroll from '/docs/concepts/img/scroll-logo.png'; -import activatedmsscreen from '/docs/concepts/img/activate-dms-screen.png'; - -# Developer FAQ for XMTP - -Answers to frequently asked questions about developing with XMTP. - -## What works with XMTP? - -In the spirit of web3 composability, here are **just a few** of the building blocks that work well with XMTP. Building your app with these tools can help you deliver and distribute an app—faster and with quality. - -:::tip - -This list is not exhaustive and is just a starting point. A highly extensible protocol like XMTP can work with more tools than those listed in each section. - -::: - -### Wallet connection - -To connect web3 wallets to your app: - -- [Thirdweb](https://thirdweb.com/) - - Example implementation in the [XMTP React Native example app](https://github.com/xmtp/xmtp-react-native/blob/main/example/src/AuthView.tsx#L7) - - Example implementation in the [XMTP React JS example app](/blog/thirdbweb-wallet-remote-attachments) -- [RainbowKit](https://www.rainbowkit.com/) - - Example implementation in the [XMTP Inbox Web app](https://github.com/xmtp-labs/xmtp-inbox-web) - - Support for WalletConnect v2 is now standard in RainbowKit. To learn how to upgrade, see [Migrating to WalletConnect v2](https://www.rainbowkit.com/guides/walletconnect-v2). -- [WalletConnect](https://walletconnect.com/) -- [wagmi](https://wagmi.sh/) - -XMTP client SDKs require you to use [ethers](https://ethers.org/) or another web3 library capable of supplying an [ethers Signer](https://docs.ethers.io/v5/api/signer/). These wallet connection tools, as well as others, provide this capability. - -### Storage - -To store encrypted and encoded message payload content: - -- [IPFS](https://ipfs.io/) -- [web3.storage](https://web3.storage/) - - - Example implementation in [`xmtp-js` remote content types](https://github.com/xmtp/xmtp-js-content-types) - - Tutorial: [Introducing remote media attachments](/blog/attachments-and-remote-attachments) - -- [ThirdwebStorage](https://portal.thirdweb.com/storage) - - Tutorial: [How to send remote attachments with XMTP & Thirdweb SDKs](/blog/thirdbweb-wallet-remote-attachments) - -### Decentralized social - -- [Lens](https://www.lens.xyz/) - - Example implementation in [Lenster](https://github.com/lensterxyz/lenster) - - Tutorial: [Integrating Multiple Profiles with Lens](/blog/Integrating-Multiple-Profiles-with-Lens) -- [CyberConnect](https://link3.to/cyberconnect) - - Example implementation in the [CyberConnect & XMTP Integration Demo App](https://github.com/cyberconnecthq/cc-xmtp-chatapp) - - Tutorial: [Build messaging for CyberConnect profiles](https://cyberconnect.hashnode.dev/integrating-xmtp-into-cyberconnect-a-guide) - -### Decentralized app store - -To launch your own dApp stores and list any dApp, including your own: - -- Polygon [dApp Store Kit](https://docs.dappstorekit.io/docs/how%20to%20use%20the%20dapp%20store%20kit/dapp-registry-management/) - -### Wallet apps - -XMTP can be used with EVM-compatible wallet apps that support ECDSA signing on the secp256k1 elliptic curve. These include common wallet apps such as: - -- [Coinbase Wallet](https://www.coinbase.com/wallet) -- [MetaMask](https://metamask.io/) -- [Rainbow Wallet](https://rainbow.me/) -- Most wallets in the [WalletConnect network](https://explorer.walletconnect.com/?type=wallet) - -The XMTP SDK **does not** include a wallet app abstraction, as XMTP assumes that developers have a way to obtain a wallet app connection. - -XMTP uses a signature from the blockchain account to [create and enable the XMTP identity](/docs/concepts/account-signatures). Specifically, XMTP identities must be generated from and associated with an Ethereum account's public address and private key. As such, a connected wallet app must be present to generate the signature and initialize the API client in the client app. - -A user can generate multiple XMTP identities from the same wallet app by changing to a different blockchain account. - -### Chains - -XMTP works with externally owned accounts (EOAs) on Ethereum and Ethereum side-chains and L2s. - -Because all Ethereum Virtual Machine (EVM) chains share the same Ethereum wallet and address format and XMTP messages are stored off-chain, XMTP is interoperable across EVM chains, including testnets. (XMTP itself does not use EVMs.) - -For example, whether a user has their wallet app connected to Ethereum or an Ethereum side-chain or L2, their private key can generate and retrieve their XMTP key pair to give them access to XMTP. - -XMTP is also chain-agnostic, so multi-chain support is possible. - -Here are **just a few** of the chains supported by XMTP: - - - -:::tip - -Want to propose a path to compatibility for other popular chains such as Aptos, Bitcoin, Cosmos, Flow, Hedera Hashgraph, Polkadot, Solana, Starkware, Stellar, Sui, and Tezos? Do it via an [XMTP grant](/grants)! - -Have you built with a tool that works well with XMTP? Let's add it to this page. Share your experience with `prxshant.eth` on [xmtp.chat](https://xmtp.chat/inbox) or using the feedback widget at the bottom of this page. - -::: - -## Which languages and environments does the XMTP SDK support? - -The XMTP SDK is [available for multiple languages](/docs/introduction#xmtp-sdks-and-example-apps#sdks), including JavaScript, Kotlin, Swift, and Dart. - -Have other questions or ideas for future language or environment support? Post to the [XMTP discussion forum](https://github.com/orgs/xmtp/discussions). - -## Which web3 libraries does the XMTP SDK require? - -The XMTP SDK currently requires you to use [ethers](https://ethers.org/) or another web3 library capable of supplying an [ethers Signer](https://docs.ethers.io/v5/api/signer/), such as [wagmi](https://wagmi.sh/). - -## Where can I get official XMTP brand assets? - -See the [XMTP brand guidelines](https://github.com/xmtp/brand) GitHub repo. - -## How should I handle the XMTP onboarding flow in my app? - -In your app onboarding flow, enable your users to activate XMTP DMs. User access to DMs can help with app engagement and re-engagement. For example, here is a prompt to activate XMTP DMs in the onboarding flow to [claim a Lens handle](https://claim.lens.xyz/): - - - -In your app onboarding flow, request user permission to display app-specific push notifications to reach users outside of an app session. diff --git a/docs/faq.md b/docs/faq.md index 0741b8e8c..3ecb4b2f9 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,28 +1,177 @@ --- -sidebar_label: Protocol FAQ +sidebar_label: FAQ sidebar_position: 4 description: "Get answers to the most frequently asked questions about XMTP." --- # FAQ about XMTP -## The basics +## Building with XMTP -### What is XMTP Labs? +### What works with XMTP? -XMTP Labs is a web3 software company that contributes to XMTP (Extensible Message Transport Protocol), an open network, protocol, and standards for secure messaging between blockchain accounts. +In the spirit of web3 composability, here are **just a few** of the building blocks that work well with XMTP. Building your app with these tools can help you deliver and distribute an app—faster and with quality. -XMTP Labs employees work alongside other XMTP community members to build with and extend XMTP. Community contributions and participation are critical to the development and adoption of XMTP. +:::tip -### Does XMTP Labs plan to build apps or are you focused 100% on the protocol? +This list is not exhaustive and is just a starting point. A highly extensible protocol like XMTP can work with more tools than those listed in each section. -XMTP Labs is focused on serving developers. We build [SDKs, UI components, and example apps](/docs/introduction#xmtp-sdks-and-example-apps) that help developers build great experiences with XMTP. +::: + +#### Wallet connection + +import arbitrum from '/docs/concepts/img/arbitrum-logo.png'; +import avalanche from '/docs/concepts/img/avalanche-logo.png'; +import base from '/docs/concepts/img/base-logo.png'; +import bnbchain from '/docs/concepts/img/bnbchain-logo.png'; +import ethereum from '/docs/concepts/img/ethereum-logo.png'; +import hermez from '/docs/concepts/img/hermez-logo.png'; +import linea from '/docs/concepts/img/linea-logo.png'; +import optimism from '/docs/concepts/img/optimism-logo.png'; +import polygon from '/docs/concepts/img/polygon-logo.png'; +import scroll from '/docs/concepts/img/scroll-logo.png'; +import activatedmsscreen from '/docs/concepts/img/activate-dms-screen.png'; + +To connect web3 wallets to your app: + +- [Thirdweb](https://thirdweb.com/) + - Example implementation in the [XMTP React Native example app](https://github.com/xmtp/xmtp-react-native/blob/main/example/src/AuthView.tsx#L7) + - Example implementation in the [XMTP React JS example app](/blog/thirdbweb-wallet-remote-attachments) +- [RainbowKit](https://www.rainbowkit.com/) + - Example implementation in the [XMTP Inbox Web app](https://github.com/xmtp-labs/xmtp-inbox-web) + - Support for WalletConnect v2 is now standard in RainbowKit. To learn how to upgrade, see [Migrating to WalletConnect v2](https://www.rainbowkit.com/guides/walletconnect-v2). +- [WalletConnect](https://walletconnect.com/) +- [wagmi](https://wagmi.sh/) + +XMTP client SDKs require you to use [ethers](https://ethers.org/) or another web3 library capable of supplying an [ethers Signer](https://docs.ethers.io/v5/api/signer/). These wallet connection tools, as well as others, provide this capability. + +#### Storage + +To store encrypted and encoded message payload content: + +- [IPFS](https://ipfs.io/) +- [web3.storage](https://web3.storage/) + + - Example implementation in [`xmtp-js` remote content types](https://github.com/xmtp/xmtp-js-content-types) + - Tutorial: [Introducing remote media attachments](/blog/attachments-and-remote-attachments) + +- [ThirdwebStorage](https://portal.thirdweb.com/storage) + - Tutorial: [How to send remote attachments with XMTP & Thirdweb SDKs](/blog/thirdbweb-wallet-remote-attachments) + +#### Decentralized social + +- [Lens](https://www.lens.xyz/) + - Example implementation in [Lenster](https://github.com/lensterxyz/lenster) + - Tutorial: [Integrating Multiple Profiles with Lens](/blog/Integrating-Multiple-Profiles-with-Lens) +- [CyberConnect](https://link3.to/cyberconnect) + - Example implementation in the [CyberConnect & XMTP Integration Demo App](https://github.com/cyberconnecthq/cc-xmtp-chatapp) + - Tutorial: [Build messaging for CyberConnect profiles](https://cyberconnect.hashnode.dev/integrating-xmtp-into-cyberconnect-a-guide) + +#### Decentralized app store + +To launch your own dApp stores and list any dApp, including your own: + +- Polygon [dApp Store Kit](https://docs.dappstorekit.io/docs/how%20to%20use%20the%20dapp%20store%20kit/dapp-registry-management/) + +#### Wallet apps + +XMTP can be used with EVM-compatible wallet apps that support ECDSA signing on the secp256k1 elliptic curve. These include common wallet apps such as: + +- [Coinbase Wallet](https://www.coinbase.com/wallet) +- [MetaMask](https://metamask.io/) +- [Rainbow Wallet](https://rainbow.me/) +- Most wallets in the [WalletConnect network](https://explorer.walletconnect.com/?type=wallet) + +The XMTP SDK **does not** include a wallet app abstraction, as XMTP assumes that developers have a way to obtain a wallet app connection. + +XMTP uses a signature from the blockchain account to [create and enable the XMTP identity](/docs/concepts/account-signatures). Specifically, XMTP identities must be generated from and associated with an Ethereum account's public address and private key. As such, a connected wallet app must be present to generate the signature and initialize the API client in the client app. + +A user can generate multiple XMTP identities from the same wallet app by changing to a different blockchain account. + +#### Chains + +XMTP works with externally owned accounts (EOAs) on Ethereum and Ethereum side-chains and L2s. -### Which wallet apps and blockchain accounts does XMTP work with? +Because all Ethereum Virtual Machine (EVM) chains share the same Ethereum wallet and address format and XMTP messages are stored off-chain, XMTP is interoperable across EVM chains, including testnets. (XMTP itself does not use EVMs.) -XMTP has been implemented to work with Ethereum Virtual Machine (EVM)-compatible wallet apps and blockchain accounts, though XMTP itself does not use EVMs. +For example, whether a user has their wallet app connected to Ethereum or an Ethereum side-chain or L2, their private key can generate and retrieve their XMTP key pair to give them access to XMTP. -To learn more, see [Wallet apps](/docs/dev-faqs#wallet-apps). +XMTP is also chain-agnostic, so multi-chain support is possible. + +Here are **just a few** of the chains supported by XMTP: + + + +:::tip + +Want to propose a path to compatibility for other popular chains such as Aptos, Bitcoin, Cosmos, Flow, Hedera Hashgraph, Polkadot, Solana, Starkware, Stellar, Sui, and Tezos? Do it via an [XMTP grant](/grants)! + +Have you built with a tool that works well with XMTP? Let's add it to this page. Share your experience with `prxshant.eth` on [xmtp.chat](https://xmtp.chat/inbox) or using the feedback widget at the bottom of this page. + +::: + +### Which languages and environments does the XMTP SDK support? + +The XMTP SDK is [available for multiple languages](/docs/introduction#xmtp-sdks-and-example-apps#sdks), including JavaScript, Kotlin, Swift, and Dart. + +Have other questions or ideas for future language or environment support? Post to the [XMTP discussion forum](https://github.com/orgs/xmtp/discussions). + +### Which web3 libraries does the XMTP SDK require? + +The XMTP SDK currently requires you to use [ethers](https://ethers.org/) or another web3 library capable of supplying an [ethers Signer](https://docs.ethers.io/v5/api/signer/), such as [wagmi](https://wagmi.sh/). + +### Where can I get official XMTP brand assets? + +See the [XMTP brand guidelines](https://github.com/xmtp/brand) GitHub repo. + +### How should I handle the XMTP onboarding flow in my app? + +In your app onboarding flow, enable your users to activate XMTP DMs. User access to DMs can help with app engagement and re-engagement. For example, here is a prompt to activate XMTP DMs in the onboarding flow to [claim a Lens handle](https://claim.lens.xyz/): + + + +In your app onboarding flow, request user permission to display app-specific push notifications to reach users outside of an app session. ## Network @@ -167,9 +316,9 @@ Yes, via two XMTP improvement proposals that are currently in review status: To learn more about how to implement message attachments in your app, see: -- For apps using the JavaScript client SDK (`xmtp-js`), see [Introducing remote media attachments](/blog/attachments-and-remote-attachments). +- For apps using the JavaScript client SDK (`xmtp-js`), see [Remote attachment content type](/docs/content-types/remote-attachment). -- For apps using the Swift client SDK (`xmtp-ios`), see [Send a remote attachment](https://github.com/xmtp/xmtp-ios#configure-content-types). +- For apps using the Swift client SDK (`xmtp-ios`), see [Send a remote attachment](https://github.com/xmtp/xmtp-ios#send-a-remote-attachment). ### Does XMTP support deleting and editing messages? @@ -197,3 +346,15 @@ To learn more about how the XMTP Inbox chat app is built, see the [xmtp-inbox-we XMTP natively supports one-to-one messaging. One-to-many broadcast messages, or announcements, can be constructed using the XMTP SDK. To learn more, see [Send a broadcast message](/docs/tutorials/broadcast). + +## XMTP Labs + +### What is XMTP Labs? + +XMTP Labs is a web3 software company that contributes to XMTP, an open network, protocol, and standards for secure messaging between blockchain accounts. + +XMTP Labs employees work alongside other XMTP community members to build with and extend XMTP. Community [contributions and participation](/docs/contribute) are critical to the development and adoption of XMTP. + +### Does XMTP Labs plan to build apps or are you focused 100% on the protocol? + +XMTP Labs is focused on serving developers. We build [SDKs, UI components, and example apps](/docs/introduction#xmtp-sdks-and-example-apps) that help developers build great experiences with XMTP. diff --git a/docs/introduction.mdx b/docs/introduction.mdx index e7a326af1..858c39d63 100644 --- a/docs/introduction.mdx +++ b/docs/introduction.mdx @@ -56,7 +56,7 @@ A great way to start learning how to build an app with XMTP is to use one! If you have an [ENS name](https://ens.domains/), [UNS name](https://unstoppabledomains.com/), or [Lens handle](https://claim.lens.xyz/) associated with the address, you can tell people to use it to message you instead of using your full Ethereum address. - Don’t have an Ethereum address? Create one using a [compatible wallet app](/docs/dev-faqs#wallet-apps) of your choice. For example: + Don’t have an Ethereum address? Create one using a [compatible wallet app](/docs/faq#wallet-apps) of your choice. For example: - [Coinbase Wallet](https://www.coinbase.com/wallet): When you create an Ethereum account, you can claim a free `cb.id` web3 username @@ -93,7 +93,7 @@ To explore more apps built with XMTP, see [Built with XMTP](/built-with-xmtp). XMTP has been implemented to work with Ethereum Virtual Machine (EVM)-compatible wallet apps and blockchain accounts (wallets), though XMTP itself does not use EVMs. XMTP also works with other web3 identities that apps built with XMTP can derive from Ethereum accounts, such as ENS names and Lens profiles. -To learn more, see [Works with XMTP](/docs/dev-faqs). +To learn more, see [Works with XMTP](/docs/faq#what-works-with-xmtp). ### Protocol overview diff --git a/docs/tutorials/identity-resolution.md b/docs/tutorials/identity-resolution.md index f58deeed4..7c48cfc3b 100644 --- a/docs/tutorials/identity-resolution.md +++ b/docs/tutorials/identity-resolution.md @@ -798,8 +798,6 @@ To learn more about building with Unstoppable Domains, see their [Developer Port -To learn about wallet addresses and chains that are compatible with XMTP, see [Chains](/docs/dev-faqs#chains). - -To learn about name services, or decentralized IDs, that work with XMTP, see [Decentralized identifiers](/docs/dev-faqs#decentralized-identifiers). +To learn about wallet addresses and chains that are compatible with XMTP, see [Chains](/docs/faq#chains). diff --git a/docusaurus.config.js b/docusaurus.config.js index 20db54cb6..5966ac605 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -328,13 +328,9 @@ const config = { to: "/docs/faq#security", }, { - label: "Protocol FAQ", + label: "FAQ", to: "/docs/faq", }, - { - label: "Dev FAQ", - to: "/docs/dev-faqs", - }, { label: "Brand assets", href: "https://github.com/xmtp/brand", diff --git a/src/pages/start-building.md b/src/pages/start-building.md index 153b8051e..bff15218f 100644 --- a/src/pages/start-building.md +++ b/src/pages/start-building.md @@ -30,7 +30,7 @@ Use this document as a map to build, launch, and maintain a best-in-class app wi You probably have some great questions by now! Check out these resources: -- [Dev FAQ](/docs/dev-faqs) and [protocol FAQ](/docs/faq) +- [FAQ](/docs/faq) - [Roadmap](/roadmap) - [Blog](/blog)