Skip to content

Build on Farcaster: The Ultimate 101 Resources To Learn Farcaster!

Note: You do not need to know anything about Farcaster to understand this article. You’ll be taken through the basics and learn how to get started with Farcaster.

What even is Farcaster? It’s a programmable paradise of a social network. It truely is a social network in that conversations and connections are deeply encouraged and part of the culture. Therefore users love their conversations and chatting with each other.

Farcaster users are very active with their crypto wallets and do lots of blockchain transactions, making them an ideal first user group as even outside of blockchain technology they are first adopters and provide a lot of feedback on how to improve the product.

Builders waste weeks wiring brittle APIs before a single user sees value. Farcaster now collapses identity, data, and distribution into one programmable network so you ship in days, not months.

“Farcaster let us put a wallet-to-feed loop in production over one weekend.” — Mini App builder

Product snapshot, what Farcaster offers

  • Identity rails: Sign In with Farcaster, Quick Auth, and App Keys give you verified users without seperate OAuth screens or leaving the flow.
  • Data plane: Farcaster protocol’s Snapchain replicates every cast, reaction, follow graph, so you can query or post without rate limits.
  • Distribution switchboard: Mini apps, share extensions, bots & agents, intents, and direct casts give you three surfaces—feed, inbox, notifications—out of the box.
  • Integrations: allow you to build your own tooling and standalone apps outside of the Farcaster clients, while you can also build your own client integrating mini apps and more.

so who is this guide for?

FAQ — Working backwards from the builder

1. Who is the builder we serve first?

We prioritize teams shipping interactive social, commerce, or agent experiences that need repeatable loops, not one-off campaigns. If you already have a web stack, you bring it. Farcaster provides identity, data, and delivery. Mini Apps in the end are simply web apps.

2. Why do mini apps deliver distribution instantly?

Mini apps are HTML/JS apps rendered inside Farcaster clients. They inherit the host’s identity context, so a tap immediately reveals fid, username, wallet, and notification tokens. No install wall. No SDK fork. They can be launched from feeds, direct casts, share sheets, or universal links. All tied together by the Farcaster mini app sdk with great samples available on dTech’s Github Account.

3. How do we post to Farcaster and Farcaster protocol Snapchain without OAuth 2.0?

Farcaster uses signers. You can use one Signer that you registered yourself or request an App Key from the user, store it, then send signed writes onbehalf of the user. Quick Auth gives you a JWT that maps to the user’s FID. Every cast settles on Snapchain and is available to any client within seconds. The permissions are Signer managed and registered on the blockchain. No heavy OAuth setup flows needed, that need to be synced across the ecosystem.

4. What loops should marketing teams run on Farcaster?

We run three loops: acquisition (feed + share extension), activation (mini app session + direct cast or notification), and retention (automated agents that respond with fresh embeds). Each loop shares the same or similar content primitives so we can reuse assets like graphics and general text outlines.

5. Which metrics tell us it is working?

Track leading indicators. Mini app launches, add-to-collection events, App Key grants if you ask for your own signers to post on behalf of users, DM reply rate, and Snapchain write success. With notifications you can also track the openrate of notifications down to the individual notification. We have built a tool at dTech our customers use to see all these metrics on one dashboard. Reach out if that’s interesting to you too.

6. What are the failure modes and how do we prevent them in development?

Failure modes: unsigned manifests, missing sdk.actions.ready() calls in mini apps, tunnel domains used when prod should be used and vice versa, stale embed images, and unverified notification tokens. We prevent them with automated linting for manifests, sdk.actions.ready() gating, production-only flows, dynamic images with max-age headers set, and webhook verification via @farcaster/miniapp-node and onchain signer checkups so we minimize external dependencies.

What can you do on Farcaster that you can’t do elsewhere?

Farcaster is fully programmable! You don’t get that elsewhere! Especially not the combination of social x wallet aka social data and financial data. Interactions between user’s social media account and their wallets directly in your app! But what does programmable mean? It means that you can programm most if not all parts of it! You can create your own chatbots, automate your customer support or outreach, you can scan and analyze all content on the platform and you can even create your own social network on top of Farcaster. Yes since all follow relationships are also public, you can read them and use them in your app. Need to reach a user? send them a direct message automatically. It’s all programmable whether you want to write or read!

Build fully integrated tools that you would otherwise have to ship in a separate app

If you use mini apps, you already have a mobile app in App Stores via existing Farcaster clients showing your webapp on mobile natively! Meaning your app gets App Store distribution for free! Add that these clients show Farcaster posts and have direct messaging as well as in feed interactive apps. This way you can build a fully integrated experience that you would otherwise have to ship in a seperate app as Twitter etc, don’t allow it.

One such sample is paybot. It’s an app to pay people. Typically you go to the groupchat, see messages that one should be paid and ask for a payment method or they send a link somewhere. With Paybot this isn’t needed anymore. You are on a Farcaster client, open the mini app, create payment links and use that to pay with a transaction from your wallet. Easy as that. Oh and if you want to request funds, same flow just hit request. It’s all within the Farcaster clients and integrated well.

That’s not happening anywhere else!

Here is a sample video showing how you can go from the app to open paybot and get a mini app to pay someone. It is all within the app and you don’t have to leave it. The above sample of doing it in replies also works as it opens the app via composer action, that we will see further along this article.

Using the open data and programmability to bootstrap your network based app

Say you want to build a new short form video app. Then what you have to do is get new users in and post content. If you don’t have enough views the creators, won’t care and if you don’t have enough creators the viewers won’t care. It’s a chicken and egg problem. But on Farcaster you can solve this by creating a mini app that allows users to post and use your app to do it (one example is Face filters for videos to be posted). This way you can bootstrap your app with content and users from Farcaster. This is only possible on Farcaster and not on Twitter or any other web2 platform, since they don’t have mini apps. Oh and they don’t allow you to read all content so you can not just build your own social media app off of their content.

Another way you can achieve it is by using the open social data. You can index all videos people already post to Farcaster clients and that way bootstrap your app’s content. Addiitonally if any of these users with a Farcaster account sign up, use their follows and already existing relationships to surface interesting content to them. This has been the formula of short form video app Drakula by Founder Alex Masmej.

Drakula using Farcaster's Social Graph

Making crypto transactions easier and more social

When using the connected wallets you can now show usernames and profile pictures. That’s what apps like Interface do to make wallet addresses that usually are 0x002312... human.

Because you have access to all the social data, where users can verify wallets they own, you can show beautiful social graphics like this one instead of boring wallet addresses.

Interface using Farcaster Data

The Farcaster Developer Legos (Tools)

What tools are available to leverage Farcaster? What tools can Farcaster developers build with? While there are plenty and they are mostly compatible, we’ll focus on their virality and use in building great experience that matter to you and your intended audience.

If you want to learn how to develop with them and program on Farcaster, please refer to the Farcaster Developer Guides. The individual docs will also be linked throughout this article.

Which tools exist and what are they?

  • Feed of publicly available content + profiles through the hubs (usually shown in Farcaster clients, but you can read it from your infrastructure too!)
  • Connected Wallets (Verifications) - most users connect their crypto wallets so you know their addresses!
  • **Mini Apps - miniapps are web apps within the clients that do everything for you on Farcaster and integrate with the feed, dm’s and sharing easily. They are your Farcaster native user interface.
  • Share Extensions (invoke a command you can define to what it does on any post within Farcaster)
  • Direct Messages (send a direct message to a user)
  • Farcaster Bots (AI agents, automated replies, mentions, reactions, posts, …)
  • Farcaster Intents (your way to direct users to specific content or to instantly take action like posting or sending a direct message)

So with clients (the apps showing you content - think traditional social media apps) and you being able to pull all these details like profiles and post feeds from the network, we now have a full list of tools to build with.

Many viral Farcaster growth loops can be composed of some or all the developer legos. Mostly built with tools, data and integrations that one can leverage to build incredibly integrated outstanding user experiences.

Please open your mind to programmbility, do not think about something being impossible or something not working with each other. This is Farcaster and not a walled garden.

Feed (public content, user profiles)

The feed is where dicovery happens. Users spend their time here (~90% according to founder Dan Romero). In their feed they see posts, mini apps, mentions, posts from bots and all kinds of account. A user can also take action by clicking a context menu and invoking a cast action or reply to a cast. When replying they can leverage composer actions to help create a new reply.

Your backend has full access to all user data (think profile names, location set in profile, profile picture, description, connected wallets) and their content. This means no external API is required to index all that data into your data store and process it. Users also provide consent by using the platform, though you may want to check specifics with your lawyers.

Connected Wallets

Most users have wallet addresses connected to their usernames (FID) that allow identifiaction of onchain actors, assets and more. It enables targeting users specifically using the onchain datasets and to build crypto integrations on top of them. You can easily identify all Farcaster users that hold VeeFriend NFTs, as most will have wallets connected and you can resolve NFT holders to wallets to Farcaster users.

Mini Apps

Mini Apps are displayed in feed or direct messages when sharing/posting a weblink. They enable an authenticated, interactive experience without leaving the app, just in the link preview.

How is a click authenticated? As Rafi puts it: Mini apps have an access to verified identify of the caller, this happens via signIn or quickauth (more in our developer docs. These kinds of cryptographically signed messages are common across Farcaster and let us come up with very fun flywheel experiences.

A mini app is your webpage (web app) loaded full screen in the Farcaster client like Farcaster app with you being able to authenticate the user before they even visit the page tutorial.

That way you can personalize and tailor the experience to the actual user visiting the page. Imagine you had a users full social context AND their financial context right when they visit your landing page the first time. How conversion optimized could you make it? As a user how lovely is it to see a page with helpful and good suggestions for you? The tools being combined are the Hubs (Social data) from Farcaster and the connected wallets that allow you to pull in the blockchain data (e.g. financial) as well.

Typically the way users find mini apps is through seeing a mini app shared that then has an button which when the button is pressed opens the mini app. Remember Mini Apps can be sent via Direct Messages, Posts/Replies and Intent links (include the mini app link in the message or embed). Meaning it’s easy to reach the users and build viral loops if your mini app is good enough so the user wants to share it.

Most importantly it’s a great showcase of how all the above legos/tools combine together. Remember that a share extension can invoke a mini app that can be used to direct to your mini app. Each of these button presses can be customized so you have decision trees at each step so the user gets the perfect experience to just do what they intent to do or be maximally entertained.

NOTE: Technically Mini Apps run on the Mini App developers/companies server. Which is a benefit to you as you can do anything there, it also means they may not be fully decentalized.

Share Extensions

Share Extensions are used from a context menu on the cast (post). When pressing the button to “invoke the action” you will see a small text popup with information you wanted, an eror or even a mini app popup adding context to your mini app so you can develop custom user journeys. This can be used to build experiences based on the post itself using the used data, post content or more. One such example is a custom bookmark tool, where it sends to an integration that will then add into your bookmarking service.

It can also serve flows like look up the user’s wallet, or show me their friends and bring up interactive experiences. Using to display a short message like “cast added to bookmarks” is one fun integration, but imagination should not stop there.

Direct Messages (Direct Casts)

You can send a targeted / automatic message to a user. For example your server/backend from a mini app button/share extension can trigger a direct message. One may also use direct casts (direct messages), to have a Farcaster native notification system of reminders or happenings in your application. Being able to get into the message inbox of a user is powerful!

Farcaster Bots & Farcaster Agents

Automatic replies on posts based on patterns like @mentions or custom business logic are common across all kinds of social media platforms, Farcaster being no different. Though as with Farcaster we do not need to rely on external APIs we control the full experience and have way more data context available. Bots allow you to get into users feeds or notifications (likes, replies, quotes, mentions, …). As with any cast Bots can also include Mini Apps, Images, and all kinds of embeds like links. Meaning it’s a powerful tool to remove friction and have users take action right from their feed! Bots play very well across the Farcaster developer legos.

A Farcaster Bot is a Farcaster account, so it can be created by you or even your own account. It can then be taken back as your own personal account with all forms in between also possible. From the outside the Bot does not look different and is not different to any other account, because it is a regular Farcaster Account (FID).

Farcaster Intents

Intents are linkst that when opened by a user prompt them to take an action. They are the intent to do something within Farcaster, that’s where the name Farcaster Intent comes from.

You can prompt the user via Farcaster Intent to

  • send someone a predefined message (user opens link and see’s the direct message chat with a prefilled message in Farcaster)
  • post a predefined cast (user opens the link and see’s the post composer with a prefilled message in Farcaster)
  • deeplink into opening the mini app (user opens the link and see’s the mini app open in Farcaster)

They are very powerful when combined with the personalized text from business logic or their farcaster social data. Intents are best used to take the friction out of having to come up with what text to use, such they can be used to encourage outreach and virality. Most users will share your marketing copy if you’re building something like a viral mini app that has a button to share a cast intent (intent link to have the user post a cast). They can also be used to reach out to users directly. Say you are working on a marketplace and don’t want to build a new messaging system that the user won’t see, because it’s one more tool they will not keep track of. Now you can use Farcaster Intents to have your user reach out to the other Farcaster user via direct casts (direct messages) and now they are chatting in an app they already both use.

Combining Farcaster Legos to user experiences

You can send a direct message or mention a user in replies/posts by which ever logic you want. You could leverage the social data, blockchain (financial) data based on the connected wallets or something entirely different from your business logic. The social data isa users activity that really shows what they like, recast, interact with in general so it’s proactive data and up to data sentiment.

Sending these posts/direct messages you can include mini apps, that allow the user to take action immediatly. The text you use to get the user to take action can be personalized as shown previously.

Since all of this data is available you can use Artificial Intelligence (AI) to do the personalisation and analysis for you. Assuming you are able to reach the user with a quality text they want to engage with, then one viral loop example is building a mini app that lets the user open a mini app, which then you use to let the user cast (post) with a prefilled message that contains the fame. The mini app and posts in feed serving as entry and exit close the loop and spread the word.

How do these Legos compare?

Farcaster Lego comparison

Discovery - How do users find your app?

NOTE: The discovery overview is focused on Farcaster’s own as a lot of users are on their first party client and most other apps try to be discovered there.

Knowing what the Farcaster “Legos” are and how we can combine them to construct user experiences, we also need to make sure the user knows about our experience. How can we take each of the legos and make sure the user finds our app? How are they discoverable?

Mini Apps

Discovery of Mini Apps is widely done through the feed, though they can be shared via DMs. Say I send you dtech.vision then the mini app will render and you can press the buttons.

Share Extension pick action modalShare Extension pick action modal

If you share casts or replies the same applies. One viral loop for mini apps often done is a share button that then attaches the Mini App and has it in the new cast / reply. This way the Mini App gets shared. As Mini Apps are rendered in casts and direct messages one can use bots to spread them. Share Extensions can also be used to bring up Mini Apps as documented here.

Share Extension explore page

Mini Apps are also features in the Farcaster Explore Page.

Share Extensions

Share extensions once installed can be invoked on EVERY CAST! Though to discover them usually mini apps are leveraged that have an install button (using a Farcaster Intent linking to install the share extension). Installing meaning the user adds them to their list that gets shown if they press the context menu on a cast.

share extension usage visualized

Here’s how using a share extension looks like using Farcaster app as the example Farcaster client and the second screen also showcases a link to the discovery/explore page.

share extension pick action modal

Another way they can discover is via the share extension page. There is a page listing share extensions if a user goes to the list of installed ones and looks to add a new one in Settings.

share extension explore page

Bots

Bots are discovered through the Feed. Yes one can invoke share extensions, mini apps and and then these in the background can trigger your bot, but the discovery itself is the Feed.

Here’s me using askgina to get a summary of an article. Now anyone will see my reply and then see the bot reply if they see the cast and potentially the comments. That way Gina gets discovered.

Farcaster agent discovery to go viral

Mini Apps

Mini apps can be discovered through webpages that have a deeplink or any other link that people click to open them, but most are discovered through the feed by seeing someone post them. By now then can also send push notifications and be stored to a mini app screen, where users can come back to their favorite apps. That is great for retention!

open the mini app via cast composerpick which mini app / composer action to usemini app usage visualized

Most of the discovery need is getting your users to use it once so it’s in their recents and getting users back in. Mini Apps help. Viral Mini App loop with notifications for retention are your friend here.

Webpages/Products/Other

Any other product can be shared via Mini App which could be already used as setter for the app or to authenticate users to be logged in on arrival at the webpage.

What makes Farcaster great for product promotion is you can use Bots, Mini Apps, Share Extensions and Direct Messages to pull together a full army of touch points with each user. And you can target users based on all activity (open data) visible on the Farcaster protocol through Hubs.

In Farcaster and other clients links are also not deranked by the algorithm as otherwise they would derank Mini Apps as well, so you don’t have to fear sharing external links!

Farcaster Discovery Summary

Putting all the discoverability methods together and comparing each Farcaster building block with each other, here’s a matrix to provide an overview.

Farcaster App Discovery Overview