
Timeless X
Introducing Timeless X extension— your all-in-one web3 launcher and social utility platform where wallets, profiles and social feeds come together seamlessly. Pay, connect, chat and collaborate.
Demo
About
The problem it solves Timeless X product ethos: It's gotta pass a toothbrush test—something you reach for at least twice a day and become a part of your daily routine, creating those unbreakable habits we all crave. We believe this is possible by providing social utility with easy and frictionless onboarding. The former is achieved through our many social features (on-chain: discovering trending dapps and mints, following wallets for alpha; messaging: chat where your frens are through telegram integration; and socialize on your favorite web3 social (farcaster). The latter is achieved through integrating Coinbase's Smart Wallet — getting onchain securely is now a breeze.
How it's made
Challenges we ran into Overall, no major issues during buildathon. The following are minor issues faced: 1. extension logo cannot render in coinbase page - as it turns out, this is b/c extension urls are privilege and other web domains cannot access it by default - Solution: update web-accessible-resources to allows keys.coinbase.com domain to access the favicon image: https://developer.chrome.com/docs/extensions/reference/manifest/web-accessible-resources 2. cannot swap non-native token - the issue is b/c we need to approve the swap gateway to use our non-native token first - Solution: instead of updating the user flow, we integrated smart wallet’s batch transactions for this, i.e., token approval and swapping steps can be batched together and sent as 1 tx resulting in a much better ux 3. insufficient documentation - the doc (https://www.smartwallet.dev/guides/batch-transactions#batch-transactions) tell us to use useWriteContracts but we cannot do that - wallet logic is handled in the core layer, not react code, so we cannot use the hook directly - also, useWriteContracts asks us to provide contract ABI whereas for the swap flow, we have the raw tx data already (returned from our BE api) - Solution: had to dig through library code & end up integrate w/ sendCalls from @wagmi/core/experimental package