Farcaster Miniapps - BuidlGuidl's Builder Bootcamp

BuidlGuidl's Builder Bootcamp at Devconnect Argentina 2025 · 18 Nov 2025 · 49:49

Horsefacts leads a hands-on workshop on building Farcaster miniapps and Frames that bring Ethereum functionality into social feeds. It covers the Farcaster protocol, why miniapps help with distribution and monetization, and core concepts such as the web app, SDK, wallet connector, embeds and manifest, with a code walkthrough. It was part of BuidlGuidl's Builder Bootcamp at Devconnect Argentina 2025.

Speakers

Topics

From BuidlGuidl's Builder Bootcamp at Devconnect Argentina 2025, hosted by BuidlGuidl.

Transcript

Good. Thanks. All right. Good minia app  morning everyone. Welcome. Um yeah, thanks Billy Good. Thanks Austin for  having me here. Uh my name is Horsefax and I work for Farcaster and I'm super  excited to talk about mini apps today. Uh so going to cover a few things today. Um, we'll  talk about building mini apps on Farcaster. Start by talking a little bit about what Farcaster is  just for folks who haven't maybe used Farcaster or used the network before. Um, I'm going to share  some examples of interesting mini apps that have been built in the Farcaster ecosystem just to show  you what's possible and why I think mini apps are so unique and interesting and and such a great  opportunity to build on Ethereum right now. Um,

and then we'll talk through a few kind of core  concepts in in mini apps and finally look at a code example that you can fork and run yourself  and start playing around with mini apps today. So, uh, yeah, I think right after this talk, Nikolai  is going to be here um, giving a demo on Oh, cool. There he is. Yeah, giving a demo on how  to actually use scaffold ETH for building mini apps. So I'm going to cover kind of today  generic uh generic examples of kind of the core concepts and then we'll dig in a little  bit further uh later this morning on how you can use scaffold eth specifically to bootstrap  and build many apps. Cool. I guess yeah just before I start too I'm curious how many folks  here have a caster account to start. Awesome.

And how many people have built or tried to build  a mini app? Cool. Okay, about half. That's great. Um yeah, let's start with Farcaster. So Farcaster  is an open programmable social network built on Ethereum. We've been working on it for about 4 and  a half years now. Uh and I think at this point, Farcaster is the largest social graph in crypto.  We have about 1.2 million accounts and 2.5 million connected addresses on the protocol. So at  Farcaster, we use Ethereum to ensure that users own their identity on the network. That means  that every account on Farcaster has an Ethereum wallet by default. Your Farcaster ID is similar  to an NFT. It's uh like an ID number that's registered in an onchain smart contract. It's  transferable. Uh you can you can move it around

and it's kind of an abstraction over Ethereum  identity because in Ethereum most identities have more than one address, right? It's not just  your wallet address, but uh a number of different wallets and uh their interactions that are all  kind of linked together to compose an identity. So on forecaster content like follows, posts,  reactions, uh sort of core social data is stored on a special purpose blockchain that we  call snapchain. Uh on snapchain every message is cryptographically signed uh just like when  you send an Ethereum transaction and similar to Ethereum, every snapchain node has a full  copy of the network state. So you can sync up a snapchain node, pull down the entire uh  current state of the forecaster network, all the posts, all the likes, the entire follow.  Uh it's open data and you just you just have

that ready to go. Uh which is pretty cool. It's  something you can't do with say the Twitter API. So on FER, anyone can pay 20 cents an ETH to  a smart contract, generate a new key pair, and start posting messages to the protocol. Anyone  who wants to build on top of the protocol can also sync a snapchain node and build a client or app uh  or access the follow graph and build on top of it. So the same team that works on Farcaster including  myself uh the protocol also work on Farcaster the app which looks like this. Uh right now it's  a short text social network pretty similar to Twitter uh with the addition of an embedded crypto  wallet. So you can do interesting Ethereum things,

crypto native things uh directly in the feed  because we've added the this addition of uh making it really really easy to interact with Ethereum  and crypto from from inside the app. Uh so yeah, probably looks pretty similar to Twitter. This  is a channel. This is an example of the uh the Dev Connect channel and some posts from the the  past couple days in here. Um, but you can do the typical things you might do on a normal social  network. Follow people, write short text posts with embeds and images and media, uh, react.  Uh, and also interact with Ethereum directly from the feed through this embedded wallet. Um,  and though this is the Farcaster app right now, I kind of like to think of this as the demo app  for the protocol because you can build many more things on top of Farcaster, on top of both  the protocol and this app as it exists today.

uh and this particular app is is just one of  them. Right? So we've evolved the direction of the network over time and we'll evolve the  direction of this this app over time and it's uh it's possible at a lower level to build  all kinds of interesting things on top of these primitives of a social graph follows uh  embeds, links, etc. Um plus smart contracts, right? And the entire sort of programmable  surface of uh of Ethereum and EVM chains. So if you want to build on Farcaster there  are a lot of different ways you can do it. Uh you can build a client like base app which  is uh the example here. Uh there's also zapper recaster a bunch of other clients uh that  are fullfeatured far caster protocol clients.

It's a great platform for building autonomous  agents. So this example here is banker uh which is like a natural languagebased uh interactive  wallet that you can interact with in the feed. Uh you can also just build on the social graph  right like the data is open the follow data is open you can pull down snapchain and simply use  that to bootstrap your own app. So the example here is is Zora but other apps have done this  share XYZ is recent rodeo where you just pull in uh information about users uh information  about their connected wallets and sort of use that to enhance um enhance your own  apps experience or bootstrap your own social graph. And then finally you can build  mini apps which is what I want to talk about today. Uh these are interactive web apps that  are directly embedded in the Farcaster social

feed and also discoverable in Farcaster client  apps. So yeah, the example here is uh the demo mini app that I built originally which is called  Yoink. It's like a simple capture the flag game. Cool. So what's so great about mini apps?  Uh, I think mini apps are the best way right now to ship fast, to get discovered,  to retain users, transact seamlessly, uh, and to build on top of social. So, here's an  example of uh, the mini app browser screen in Farcaster couple versions ago, but it still looks  more or less like this. Uh, and at the moment, we have lots and lots of mini apps built on top  of Farcaster. There are many apps for games,

NFT minting, prediction markets, DeFi, trading,  launching tokens, selling merch, personality test, podcast, live streams, chat, social networking,  and much, much more. Uh, as of today on Farcaster, there are thousands of mini apps with hundreds  of thousands of unique users doing millions of transactions on Bass, Ethereum, and other  EVM networks. Um, yeah, and by the way, we have a lot of usership on on base. uh and and  Ethereum L1, but Farcaster the app itself supports uh a number of of EVM networks. So, it's not just  base only. In fact, our contracts are built on optimism and it's very easy to interact with  uh with really any L2 or or Ethereum network.

So, I'm personally really excited about mini apps.  In fact, I think they're like one of the most interesting things that's happened in in crypto  since I've been involved in it in like 10 years. uh because they help solve two really really  big problems and those are monetization and distribution. Uh these are two huge challenges  for every indie builder I've ever met like both inside and outside of crypto. Um yeah, this was  my story. I shared this on FCcaster when I was thinking about this problem. Um but yeah, before  I was in crypto, I had so many cool stupid side projects that never shipped because they couldn't  pay for themselves. My weekend was over by the time I set up Stripe, by the time I configured my  billing alerts, and I would like live in fear of the idea of, you know, building an app that paid  for itself, but dealing with things like fraud,

chargebacks, unexpected AWS bill. Um, crypto  solved this problem in a super interesting way. You can build autonomous apps and systems  that are built on top of smart contracts, uh, and you can make them pay for themselves. Um, but  of course, it didn't solve the UX problems, right? After crypto started, I had so many cool stupid  side projects that I simply never shipped because I had no distribution. I would write the  contracts. I would test the contracts. I would spend my weekend building a cool front end.  Uh, you know, write the tweet, throw it out there, and just hope that you get 10 likes. In crypto,  I would live in fear of a smart contract bug, but I would actually die because nobody knew  how to use my app or find it or connect their wallet. So, mini apps really help solve this  problem. And today, we have we have good tech

that makes it possible for you to do it all. Um,  yeah, curious if others have had this experience, like if you've had a cool idea that  you simply didn't build because it wasn't wasn't feasible because of cost or or  technology. It's happened to me a lot. So, anyways, I think if you're building a product,  a mini app is a great way to to do a few things, right? You can get your first thousand users, uh,  get your app distributed in feed in in front of people who can try it out directly in the feed.  Uh, if you're building a new crypto product, it's a great test bed for kind of finding those first  thousand users, getting feedback on your idea, kind of testing it for product market fit. If you  want to make money, mini apps are a great way to make that first thousand natively connected to  to payments and crypto and Ethereum. And so,

you have the opportunity to really monetize what  you're building in a in a new and interesting way. And if you're a creator, if you're, you know, not  necessarily a technical person, but just creating content or or or doing creative things, they're  a great way to find your thousand true fans. Oh, yeah. I looked this up last night. This was  the first Ethereum contract uh I ever deployed. It looks like I paid $887 to deploy it. I remember  waiting till uh early in the morning on Sunday morning when gas was super low. It looks like it  was still 110 quay back then. Uh and here were the number of interactions with that contract, right?  I recall carefully building this front end. It was kind of a labor of love for me. My first smart  contract, I was so proud of it. Uh and there were

10 total transactions, right? I just couldn't get  distribution for this app. I think out of those 10 transactions, seven were uh were other people and  it had three total users. So this is the problem I think we can solve with mini apps and this is  what I'm I'm I'm so excited about in terms of uh yeah in terms of sharing this with you and and  why I'm so excited to work on work on mini apps and build these into Farcaster. It solves this  distribution problem and solves monetization. And yeah, when I say you can have it all now, I  I mean it. I think we're in an interesting time in crypto right now where there's a confluence of  really good tech that makes it possible to empower individuals to build new crypto experiences. Um,  and for me, this is something that's always been exciting about crypto is the ability to empower  individuals to do new and interesting things. So,

right now we have fast, cheap L2s like base  and optimism. We have stable coin payments. We're getting to really good embedded wallets. We  have one built into the Farcaster app and built into the base app where you might distribute  many apps as well. We're starting to get a strongly connected and kind of sufficiently  uh sufficiently interesting social graph on Farcaster that you can use to enhance your apps  and really use social data. Uh we simply have the emergence of new Legos, things like mini apps, not  just in Farcaster but in ecosystems like uh like World and Telegram and elsewhere. And we also  have AI tools, right, which has really reduced the barriers to to building a new app and made  it cheaper and easier for anyone to build. So, I'm excited about all of these things and  they kind of all come together in mini apps

as a way that you can build build cool things,  empowers you to build cool and interesting stuff. So finally in terms of distribution um a really  unique and interesting thing about mini apps is that you can build once and get distribution  across multiple platforms and clients on on Farcaster. So here on the left is the Yoink  app uh as displayed in the Farcaster app. Here on the right is is Yoink displayed in the base  app. um same simple mini app but distributed to uh both all the all the active users on  forecasters and soon to be distributed to uh millions of users on on on base app who  have that app already installed. Um so yeah this is a cool and unique characteristic of of  building mini apps on an open social network.

So I think seeing is believing. So I want to  quickly show you a few of my favorite mini apps and want to kind of call out things that I think  here are really interesting and uniquely possible by building on top of decentralized social.  So yeah, the first one here is tippen. Uh this is a simple tipping microp payments based  mini app. And the way this works is you set a USDC allowance from your connected wallet. This  mini app watches your likes as you interact with people on Farcaster like scrolling in the feed.  you'll like, recast, interact with people. Uh, and by reading that open data from the network,  uh, it pays attention to what you're liking, who you're interacting with, and sends a microp  payment for for each interaction on the network.

So, I have this configured to, you know, I think  this demo I set it to like 10 cents, you know, 1 cent, 2 cents. But yeah, you can see here are  in my wallet history, uh, all the interactions and microp payments that are made to users I've  interacted with on the network. Um, and this is cool. It's only possible right now because we have  cheap, stable transactions on L2s like Bass. This is an idea lots of people have tried in in crypto  before, but like the tech wasn't quite there. It was either too expensive with transaction costs  or uh or too slow or we simply didn't have the open data, right, the identity layer to be able  to build something like this. Uh, and yeah, a an especially cool thing about Tippen, um, is that a  user can sign up to Farcaster, start using Tippen,

use this app, interact with people, and they  just receive USDC to their wallet, right? So, it's a way that users can actually earn their  first crypto uh rather than buy it or or send it. And I think that's that's really cool. But  we've seen users who have joined Farcaster started interacting and start to uh kind of participate  in in the Farcaster economy simply by being on the network and receiving uh receiving funds that  flow from user to user through the social graph. Okay, next one is Settle. So Settle is a mini app  for making real world payments here in Buenosis.

You can find a directory of local businesses  in here and pay with stable coins out of your Farcaster wallet just by scanning a QR  code. Uh, as well as look up users and send peer-to-peer payments. So, I think  this one is really cool because the mobile form factor that many apps are are focused on  makes it uniquely possible to build apps that interact with the real world, right? So,  you can access a QR scanner in here. Uh, you can build apps like this for peer-to-peer  payments. And I just think it's really really cool to see apps that kind of come off the  internet and and into the real world. So, it's been so cool to see this built for for Dev  Connect and see people actually out in the real world using that like any anytime crypto kind of  uh yeah extends into the real world. I think I

think this is very cool. And yeah, I'd say like  the interesting and unique thing here is that uh it's enabled by interacting with native  features on on mobile like scanning a QR code. So, next is emerge. Um, this one is super super  cool. This is a mini app that generates images based on your social graph and your PFP. So,  it generates kind of AI workflows uh that can creatively change or modify or uh or enhance your  PFP and read data from your social graph. So, the way this works is you can tag a bot in  the feed and it will create an AI workflow that transforms your profile photo. So, yeah,  here I have this little one saying like, "Put a gaucho costume on my PFP." Uh, the bot replies  back to me with this mini app. Um, generates an

AI workflow and I can open that up right away  and see this this image that was generated. So, I think there are a bunch of cool things about  Emerge, but it's particularly cool to me in a few ways. Uh, one is that it accepts Stablecoin microp  payments for access to the AI tools. Um, so right like image generation, some of these AI models  are metered and expensive. This is using microp payments to make it easy for people to access  these tools. So you can pay 25 cents I think to do a generation. Uh you can use any token in your  wallet and it automatically converts that to to USDC and makes the payment. So this is a cool and  interesting new model I think for like metering interactions with more you know more complicated  tools, right? Um the sort of thing that I'm used to maybe uh uh used to maybe need to fund API  credits for or whatever. You can sort of make apps

that that pay for themselves. So this is a really  cool property of emerge. Uh the second thing I think is interesting is that it creates this  market for users to create new and interesting workflows. So when you uh when you pay a quarter  to do this, you know, some portion of that goes to uh simply funding the uh the AI generation  workflow. Some portion of it though goes back to the creator of the workflow, right? So, it kind  of creates this two-sided market where people can be creative in the feed and it's an opportunity  to another opportunity to earn stable coins uh for doing creative things in the feed. Uh and  then the third thing I think that's particularly interesting is that it it does a really good job  of creating a viral loop by using embeds in the feed. So, uh these emerge generations really do  a great job of of going viral. When you hit on

an interesting one, people love to share it  back to the feed. uh you will see see these kind of take over the feed as you see a new and  interesting and fun generation take off. And so it does does a great job of yeah you can see it  sort of shares back the image and shares back an embed here so you can find the app, discover it in  feed and uh and easily find and interact with it. All right, a few more. I have a lot of  favorites. I could probably do a do a full hour on this. Crowdfund. This is a simple  mini app for stable coin crowdfunds. It's like Kickstarter or GoFundMe. I really love this one  because it just puts USDC that's circulating in the Farcaster economy to use in the real world.  So, this mini app has funded podcasts, books, research projects, donations, inside jokes,  many, many good causes on Farcaster. So,

you can find and support crowdfunds in feed. And  I think in particular the embeds here do a really, really good job of using social graph context  to make a compelling embed. So you'll see they show for a for a crowdfund how much was funded  uh the profile photos of specific users who have funded it. It's a great way to have a call to  action that kind of closes that loop of uh going viral and being discovered in the feed and then  getting people to come back come back to the app. Mini word. This is one of my very favorite  apps. I love it because it has almost nothing to do with crypto. It's a daily cross word  puzzle competition that has a competitive leaderboard. So, by using the social graph  here, showing my friends and enemies, and letting me brag in the feed, Miniword has  kept me coming back for close to 200 days. Uh,

and it does use crypto for one small thing.  You can just easily pay $5 to support it. Uh, and when you do that, you get like a special  little halo that shows up on the leaderboard. So, I think this is great as an example of  a successful very independent self-funded side project uh that just asked people to  pay $5 and now sustains and funds itself. Uh and then the last one is Warplets.  This was an amazing recent success story on Farcaster. It was a generative NFT mint  mini app that basically kind of similar to Emerge actually. It turns your PFP into one  of these freaky little warplet creatures, uh, which have kind of become the unofficial mascot  of Farcaster. This app went viral in the feed. Uh, it was like a $1 mint and resulted in over  49,000 mints when people found it and got

excited about this app and kind of created  this this viral effect on Farcaster. So, this really took over Farcaster for a whole week.  These warplets were all over the feed. and the indie dev who made this as a side project made  I think at the time over $100,000 from the mint and its creator fees. So that's cool. It's cool to  get paid for the work that you do. Um but actually what I think is most interesting here is the way  that this was remixed, the way that this was used uh to build kind of composable reimaginings and  things that built on top of on top of the warplet NFT. So once everyone had minted this NFT,  it was possible to build on top of it. This is a a smart contract, so it's composable, it's  usable. Um, and we saw all kinds of interesting experiments over the course of the next week.  Derivative NFTs, remixes, games, uh, all sorts

of reimaginings. And this was possible because  the NFTs were on chain. It's possible because it's like strongly connected to your social  profile, to your social data. Uh, and yeah, like many things in Ethereum, I think the best mini  apps are composable and remixable and reusable. Okay, so based on this a few principles we've  seen like a lot of mini apps on Farcaster and I think these are the top four principles for  building compelling engaging experiences. Uh number one is use notifications. So mini apps  give you access to native notifications within Farcaster clients. Uh and this is an super  super useful tool for re-engaging your users, letting them know what's going on with your app,  bringing them back into your app when there's an interesting thing to tell them about. Uh they  can also be overused. So like be sensitive

to the way that you use them. Think uh think  carefully about how you use them. Um but yeah, number one thing is use notifications. Number two  is design engaging embeds. So this is the surface for your mini app in the feed. Uh do what you  can to make those look interesting and engaging. Number three is use the social graph. So as much  as you can enhance the context of your app and its data by using information from the social graph.  And number four, charge a dollar. Like monetize your app. you have the opportunity to uh yeah to  get paid for the work that you that you do and for what you're building. Uh and it's possible to to  build apps that fund themselves on top of caster.

Okay, so let's do a quick crash course on how mini  apps work and how to build them. Uh I want to talk about a few fundamental concepts in mini apps and  kind of build them up from the ground up today. So if you drop right into the mini app dev tools  on Farcaster or like read our detailed dev docs, this can be a little bit overwhelming. There  are all these concepts of manifest, previews, headers, signatures. And what I want to  try to do today is just like simplify this down to a few fundamentals. So we'll  go over like five important concepts in mini apps a few times in a few ways. Uh  I want to talk about the mini app model, using the SDK, interacting with wallets,  creating embeds, and publishing your app.

Uh and then hopefully if we have time we'll look  at a live demo and kind of look at each of these in a real app that you can fork. All right. So  here are the big five ideas. Uh number one mini apps are web apps. If you can build a web app  you can build a mini app. Number two mini apps can access native features like notifications and  haptics. They can interact with the user's wallet. Users will discover them in the social  feed uh through embeds and they can also find them by searching and browsing for  them in Farcaster clients. So one more time their web apps you can access native  features like notifications by using a JavaScript SDK. You can interact with the  wallet using standard Ethereum tooling.

You distribute them by creating  embeds that go into the social feed. And you can also distribute them by publishing  information about your mini app that makes them discoverable in clients. So like  all of the seemingly technical stuff, all the jargon that's out there  maps onto these five core concepts. So number one, mini apps are web apps. The most  important thing I think about the miniapp model is that these are just web apps. That means you  can do anything you can do in a web app in a mini app. It also means you can use the tools  you already know and love to build them. So if you like React or or Vite or whatever stack you  prefer, you can use it. They're just HTML, CSS, and JavaScript. So you can use whatever framework  and stack you want. Uh and in fact, I know of like

prolific mini app builders, maybe some in this  room, who use vanilla.js, who use PHP, who use all kinds of crazy things for uh for mini apps.  I think most people I work with and I've seen use use React and the stack like Vite or Next, but  the cool thing about apps is is you can bring the tools that you know and love already. This also  means you can build fully interactive applications that make use of most of the things you can do  in a modern browser. So, as we've developed many apps, it's been really exciting to see people  kind of discover those capabilities in real time. Uh things like streaming audio, location,  camera access, and WebGL. So specifically, mini apps render in iframes on web and web views in the  mobile app. There are some cross-co compatibility gotchas. So it's always good to test in both of  those environments. Uh and since they're web apps,

it means it's also possible to convert your  existing web app into a mini app or design a mini app that exists outside of the Farcaster feed. Uh  and works equally well as a standalone website. Uh okay. So yeah, key point here. Sorry I kind of  like hammer it a lot, but these are just web apps. They're built with HTML, CSS, and JavaScript.  Your mini app is a website served somewhere on a server on the web and you can access it at  at some URL just like a website. So keep this inside the room so people still think the work  is mysterious and important. Uh but when you hear mini app just think in your head it's a website at  a URL somewhere on the internet. Uh so quick code example. This is like the minimum viable react  mini app. We are importing the Farcaster SDK.

We have a little effect in here that says,  "Hey, the app is ready as soon as it renders." And then we're just returning a uh a hello  world message here. So, if you know React, hopefully this looks familiar already. And  there's not much here on top of like what you might build in an existing web app to turn  this into something that functions as a mini app. Uh, okay. So, how about these? Uh, yeah. Yeah. So  mini apps are enhanced with native capabilities. Uh in addition to the stuff you can do on the web,  you can also enhance them with the ability to do things in the app that they're they're embedded  inside, right? So access native capabilities like haptics and send notifications and do stuff  that uh you might want to do in a in a mobile or in the Farcaster context. So the way this  works is many apps interact with the host by

using a JavaScript SDK that sends commands from  the iframe or the web view over a message bridge back to the application that's embedding them.  So you can think of this almost like if you're more familiar with Ethereum, it's almost like  Ethereum JSON RPC over this little message bridge. Uh, you can use an imperative JavaScript  SDK to do things like send notifications, authenticate the user, view profiles, swap tokens,  open URLs, and trigger haptic feedback. So, the cool thing here is that this lets you extend  your web app with new capabilities and behaviors that really look and feel native. Uh, you can also  access context information about who launched the app, what context it's launching in, um, yeah,  and get information about kind of, uh, how it was launched and and who launched it. So, I kind  of lied before. Mini apps are web apps, but they

also are enhanced with all these extra features  that you can pull in uh by using the mini app SDK. Here's a quick example of triggering a haptic.  So, you can just call this SDK haptics impact occurred. When you push this button, uh we call  that callback function and this triggers a little uh a little vibrating bump in your app. So,  this is pretty cool. So, it lets you uh kind of access native features that are usually  otherwise not available to you in the web. And here's an example of what the context looks  like inside a mini app. So, when you launch into an app, this is the information that you get  about how it launched uh where it came from.

And the cool thing here is you get information  about who launched it and uh and how they did it, right? So, in this case, the FID of the  user, that's like the user's caster ID, their username, their display name, the hash of  the Farcaster cast that interacted with it. Uh, and so this really lets you build  interesting interactive experiences that rely on sort of where the entry  point to the app was for your user. Okay. Interacting with wallets. So the mini app  SDK in addition to these actions also exposes an EIP193 Ethereum provider. Putting that more  simply, it just injects a wallet that is automatically connected to your app. So this  means you can interact with a wallet without needing to pop up like a multiple select wallet  dialogue. It means you can do it without making

a flaky connection to a remote server. And also  means like similar to building on top of web apps, you can use whatever tools you prefer to use to  interact with the Ethereum wallet. So if you like ethersjs, you can pull that into your app and use  it. If you like uh VM and WagMe, you can use that. If you want to just send calls directly to the  provider, uh you can use that. Uh, and in fact, this provider uh emits an event that announces  itself. So, in some cases, you may even be able to just use the injected provider directly. You  might not even need to pull in a library at all. Here's what this looks like in a mini app context.  This is like a typical configuration using WagMe, uh, which is a library for using React  hooks to interact with Ethereum. Uh, in this case, we're connecting to Bass. We're  pulling in the Farcaster miniapp connector,

uh, and using that to kind of  do our our WagMe configuration. And then if you're interacting with a  contract, this looks a lot like it does in other conventional web apps. Uh this is an  example from yoink that captured the flag that I uh showed you earlier. But yeah, we're  just using the conventional wagme write contract hook here to uh make a function  call to to a specific smart contract. So in fact in a lot of ways I think  you can kind of think of mini apps as the next evolution of DAPs. Uh if you see  here on the left is is Morpho as an example, web app on the left, the app inside a D app  browser in the middle uh and the mini app on the right. I think Morpho is a beautiful  interface that looks and works great in all three of these contexts. But you can  see mini apps really simplify the model

by automatically connecting your active  wallet, really simplifying the interface to be mobile first and kind of designing  with uh with this mobile first UX in mind. All right, concept for embeds. So, mini apps  appear in the feed as embeds and this is how users will discover your mini app. So, for the most  part, users discover mini apps organically in the social feed. You can go browse and search for them  in the app. But the main way that apps actually go viral and get distribution on Farcaster uh  is by creating really compelling embeds. So, mini apps are web apps. They have URLs and  what you can do at those URLs is uh use embeds, use a metatag like an open graph metatag to turn a  URL into an interactive surface that has an image

and a call to action instead of plain text links.  Uh and this works using really old standard web technologies. We use uh metatags in the HTML  and basically the open graph standard to turn interactive to to create these interactive embeds.  So basically any page in your app can create an embed. simply add this tag to the HTML and that  becomes an entry point into your app. You can give it a customized uh customized image, a customized  call to action and when this renders in the feed, we pull it in uh parse that meta tag information  and render it as this nice dynamic embed. Uh here's what an embed metag looks like.

um a little bit of a Frankenstein combination of  HTML and JavaScript here, but we're smuggling in some JavaScript data in a conventional uh metatag  header here. So, FC mini app tag and then this um this JavaScript data that describes what the  what the button title should be. Uh an image you can point to for your embed and uh yeah, some  more information about about how to launch it. This metatag produces an embed that looks like  this in the feed. much uh much more compelling and interesting to look at than the raw code.  Um, but yeah, we can you can do here for example, you see I have a dynamic number in here,  right? So, we're generating this image as more and more people uh capture the flag.  We're incrementing that number. And so, you can see a compelling, dynamic, interesting,  changing image in the feed here. So, yeah,

and then just press that button, click start,  and you're dropped directly into this mini app. Okay, final concept is publishing  extra data for discovery. So the concept here is what's called the miniapp  manifest. But you can think of this as just a file that you put on your mini app website uh that  describes extra information about your app. So users can find it and clients can index it. So  this is basically yeah how Farcaster clients discover and index information about your mini  app. Uh essentially since there's no central app store, many apps need to publish information about  things like the category that they're in or the uh you know screenshots of the app, the  description, uh who built it, etc. Um and

they do this by creating a special JSON file  which they host at a well-known location, right? So you put that at a special URL, this kind  of con a convention that any app can go find this, parse that and figure out this extra  information about your mini app. Um, yeah, I actually hear from devs a lot who will  come to us and ask like, "How do I how do I get approved for the Farcaster app store, right? How  do I get my app into there?" And the interesting answer is there is no central app store, right?  Like the way that you do that, it's it's really more much more like a search index than it is an  app store. There's no gatekeeper of who shows up in the in uh in this store. All you need to  do is is post this file on your mini app site

where we can find it. we'll go pull it in, index  it, and uh and display it in the in the feed. Here's an example of what this manifest file  looks like. Uh it has two important parts. So, up at the top, you can see this account  association. Uh this is a cryptographic signature over some of the information in  your app. It's over the domain in your app, uh signed by your Farcaster account, which  lets us attribute who actually built this app in a verifiable and strong way to your Farcaster  identity. This is maybe one of the trickier parts of of building these. We have a tool built into  Farcaster that makes it easy to generate these from your Farcaster account. We won't spend a ton  of time on this, but the the concept here is that you can get this strong and usable association  between the mini app and who built it. And then

yeah, the second thing in here is just a bunch of  additional data that can be used to uh yeah to to publish information about your app. So, version  of the app, name of the app, uh icons, images, uh and some some sane defaults in here for uh when  you render the app outside of an embed context. Okay, so yeah, putting it  all together one more time, your mini app is a web app. It's on a server  somewhere with embed metatags in its HTML. It can do native stuff by using a JavaScript  SDK and it publishes information about itself at a known URL so clients and users can find it.  Okay, this was a real speedun. We didn't cover a few other things here like authentication,  sending notifications, using web hooks,

all the different SDK actions. There's like a  lot of surface area in many apps. Um, but yeah, I'd encourage folks who want to build today,  go check out the docs at miniapps.xyz. We have pretty extensive docs and a good guide to to  getting started and all the different things you can do and build in many apps. Uh I also  have a demo here. We can uh yeah we can run through it in the next uh 10 minutes or so. Um  if you want to grab this. So this is a forkable replet that you can use as an example to build  a mini app. And yeah, let's take a look at it. Cool.

Uh so if you don't want to use replet, you  can also grab this app here uh from GitHub. Horsefax mint mini app. This is kind of a  starter. This is what we're looking at. And let me show this in VS Code. We'll do a quick  speedrun of these important concepts and how they map into the code. Uh so you can see this  app. Let's start with a package JSON in here. This is a pretty standard Vite and React app  we are building on top of uh a Vite which is a React framework. We have TypeScript. We have some  uh common utilities here for Ethereum Wagme. Um and then we have yeah the Farcaster mini app SDK  and Farcaster Wagme connector here. So those are

the core dependencies you'll need to turn just  a standard React app into uh into a mini app. So concept one is right here. This is uh just a  standard web app. You can see here we're setting up a WagMe provider to interact with wallets  query provider. And then we have our app. And if you look through this, this  is hopefully a pretty familiar, pretty standard looking React app. Concept two here is how we're using the SDK for  these native capabilities. So here we're importing the SDK. Um, and it's commented here if you want  to pull the code and and follow along. But yeah, we're using a few of these different SDK  capabilities. So we're calling ready,

which signals that the app is ready when it  loads. Add mini app to save it to the user's uh the user's app. View profile  to open user's profile. Compose cast. Some of these different actions  are are throughout the codebase here. Uh, this little effect is important.  This is kind of the most important part if you're building a mini app. This  is what hides the splash screen and says, "Hey, my app is ready to render." This just makes  them feel nice and performant when they load. Um, but yeah, we're doing two things in  here. We're grabbing the context, storing that in some state, and also saying,  "Hey, this mini app is is ready to load." So, this example is like a simple NFT mint. Um,  it's just connected up to a smart contract and lets you uh tap a button to mint a token.  And I won't go through like all the all

the details of these components here, but we  have a little card that shows the artwork, um, a button that does the the  actual contract interaction, and then a little bottom sheet that  pops up here on success or failure. In fact, let's pop over and demo it for a  sec. Here's what this looks like in the feed. So in this component up here at the top, we are  reading the app context. So this is showing who has opened the app and launched it. If you demo  this and try this yourself, this will read the context for uh for your own interaction with  the app and should show your username and PFP.

Uh, and then I have this wired up  right now so that you can kind of just swap out the the config and  the details to a highlight NFT, just a simple NFT that you can set up. But  if we tap here, we'll do a wallet request and then I can share this back to my home feed. So  that's really the core of like the viral loop in building a mini app is uh you know open the app  user discovers it through an embed do something hopefully interacting with an Ethereum wallet or  doing something interesting on chain uh and then share it back to the feed to get other people to  to find it and discover it and continue that loop.

Um, okay. So, that's sort of the first  two concepts. Mini apps are web apps. Uh, secondarily, you can use the SDK to to do  stuff in your app. Let's look at the third, which is connecting to an Ethereum wallet.  So, here's where we're using uh using WagMe, kind of a standard library for interacting with  with React and doing Ethereum stuff with a React app. Um, and here's where we're configuring this  connector. We're importing a custom Farcaster mini app connector uh which you just sort of pass  into your usual WagMe config. Uh and this this is cool as well because it can live alongside  other uh other connectors for WagMe. So you can kind of have an app that exists both outside  the Farcaster feed and as a mini app in feed.

And in terms of the actual interactions, these are in this collect button  component. Here's how this works. We're importing kind of standard WagMe hooks  here. Use write contract connect to wallet. Use wait for transaction receipt. And  then here's this actual interaction with the wallet when you are uh  minting the token to make a request. So, if you've already minted, we'll prompt  you to add the mini app. If you're doing a new transaction, we clear the state. Uh,  if your wallet's not already connected, connect it up. And then here, just  use write contract async to call

the mini app. Call the uh call  the uh smart contract function. All right, concept for uh embeds. So invite this is a little bit tricky. We're  doing this by uh at build time reading and inserting these embed tags. So this is one  thing that I couldn't like really clearly show in this simple react example. Um, but  if you look here in in this vite config, we're pulling in some config from this  file here that defines our metatags.

Here's our embed config. And then we have basically a little  buildtime script that reads that and injects it here into the markup  of the page to to create an embed. But you can just imagine here  right uh we have a metatag here type equals FC mini app it has  some content and this just gets um gets injected at at build time  into our app to create this embed. And the tool you can use to  test these in the development environments is this embed tool  in the Farcaster mini app tools.

Let me in fact show you how this  embed appears in the markup. Cool. So here it is. You can see  this page has this embed tag. If we go grab the URL for this mini app entry  point and we fetch it through the dev tools, we parse out, we find that that  embed tag and here's the preview of the the embed that we would render in the feed.

So when you see this in the feed,  this says here's an entry point to my mini app. Click this, open it,  and and launch the mini app from here. Okay, final concept is the manifest. So you can find this in here as a static  file in this public well-known directory. Um yeah, and here's this simple file publishing  information about this mini app. So other apps and clients and users can find this and index  it. So concretely on the web, you can find it right here.

This is always at this path  well-known forecaster.json. Okay. And there it is. So yeah, anyone  who sees this mini app on the web, right, when we see an embed, we see there's a  new a new mini app, we can go parse this uh pull this data and ingest it to index  this and and surface it in Farcaster. And the simple way you can do this, right, this  is just a JSON file that's on your web server. uh you sort of fill this out, put this in a static  location uh where anyone can find it. So the hard part here is probably signing generating this  account association and signing it. To do this, you can use the miniapp manifest tools built  into the forecaster dev tools. Uh yeah, and there docs on how to kind of use these tools  and and how to use all this at miniapps.xyz.

Let me put the uh the replet back up here. Cool. Cool. So yeah, if you want to try this  forkable example uh or find the GitHub repo, you can scan that QR, hit that URL,  and I think this is a good framework, like a uh starting point for for playing  around with the exact demo that I just just showed you there. Uh cool. We have  like two minutes if anyone has questions.

Yeah, it's called Cryptoals, but we didn't uh we  kind of push it through very very fast. So, we didn't like thought about notifications,  all the stuff that you um uh talked about. So, we didn't build like a like a a user uh like  a user base enough for the app to show up in the like when you search it, it it doesn't  show. We just have to share the the link. So, um so people to see it. I'm actually I'm just a  graphic designer. I made the graphic design. Uh I have a my brother is the developer and our friend  is the UX designer. But what do you recommend us

uh like to move on to the next thing or keep  pushing with this app? Yeah. Um so we're tuning that a little bit and hopefully you don't need  to like hopefully a few interactions with that app should be enough to start surfacing it  in in indexing and in the feed. But my main piece of advice is to try to surface your  app through embeds, right? Because that's natively how people will find it. Like that's  natively where they'll see it in in the feed. uh and actually like looking at the data.  Something like 85% of users get to mini apps through seeing embeds in the feed and not by like  going to the search page and finding it. Um yeah, but also we want in apps to be indexed and found.  So like you can always reach out to us if it's not indexed and you expect it to be like maybe it's  a bug and we'll fix it. Yeah. Cool. Thanks. Yeah.

Cool. Thanks everyone. Um, I'll hang out  for the rest of the day. If folks have questions about Farcaster apps or the docs,  I'm happy to uh to sit down and help you. Uh, yeah, and I think Nikolai's going to  show specifically using Scaffold ETH, kind of an example of using those tools  next, which should be really cool. Thanks,