So, you've heard people like Theo, Cody, or Jack talking about Convex and decided it sounds like a good fit for your next project. So, you fire up your favorite coding agent and tell it to get cracking. Then, it starts talking about queries, mutations, actions, deployments, and components, and you're just sitting there wondering, "What on earth does this stuff mean?" Now, this is 2026, and you're not going to go back and rewrite all this code yourself, are you? You're not some sort of savage, but you probably should just understand just enough about what your agents are building to be able to give it sensible instructions and maybe notice when it's heading down the wrong direction. So, that's what I'm going to do in this video. I'm going to give you guys the bare minimum you need to know about convex. So, without further ado, grab yourself a lovely cup of tea and let's get into it. So [snorts] in this video I did about a year ago now, I described convex as four things: database, functions, sync, and components. And I think that's probably still the best way to think about it. So let's quickly talk about each one of those. Firstly, convex is primarily a database. It's a new kind of database. It's a bit like a relational database, a bit like a document database, if you know what those terms are. The important thing you need to know is that it stores your app's data and gives you an efficient way to query it and is designed to let your agent grow with the app in a sane way without accidentally corrupting any of your data. It also has something called indices. You don't need to know how they work, but you should probably expect that your agent is going to use them when it needs to query um large amounts of data efficiently. The second big thing you need to know about Convex is that in addition to storing your data, it also lets you run code on the server. So not on your users's devices, on the server. And this serverside code is a bit like AWS Lambda or CloudFare Workers if you've heard of those. So you don't need to provision any hardware, any servers yourself. Convex just takes care of all that for you. Comx differs a little bit from AWS Lambda or Cloud Workers though in the fact that it has three different kinds of serverless function that are designed to all work nicely together. The first kind of function is queries and these are functions that can read data from the database but cannot write to it or call third party services. The second kind is mutations and these can read and write data to the database but cannot also call into third party services. And a third kind is actions. These guys can call third party services and run code with side effects, but they cannot directly access the database. But they can call into queries and mutations when they need to read or write data. So you might be wondering at this point, why does convex need three kinds of functions when other platforms like AWS Lambda or Cloudflare workers only need one? Two big reasons. And the first one is by splitting your reading and writing and effects like this. It's a great way to help your app grow over time without your agent getting itself tangled in a big ball of spaghetti after two weeks of development. The second big reason is that it unlocks Convex's big superpower, which is when a mutation changes data, Convex knows which subscribed queries depend upon that data, and it automatically updates the clients listening to them. This means you can build a really interactive real-time application that just feels great to use because everything just updates instantly. In practice, this means that your agent normally shouldn't need to build polling or manual refresh logic just to keep convex data up to date. Whenever I encounter websites these days, they've got a refresh button or worse just show you stale data until you refresh the page. I'm just like, come on, just use Convex, please. All right, the fourth and final big thing you need to know about Convex is that it has this rich component system. You can kind of think of components as like little building blocks or plugins for your application that your agent can grab to quickly add functionality that is secure and scalable. Components get their own little database and functions and everything else that your application gets actually, but they are segregated from your own applications tables and functions. So it makes them really secure because it creates this clear boundary between your app code and data and the components. You or your agent can obviously poke holes in that boundary to allow data and you know compute to go through but you get to control that explicitly. Now components are great for really common tasks such as cues or rate limits or presence and other stuff like that can be that can be really tricky for you or your agent to get right. There are also components from a number of uh the community and thirdparty vendors for things such as emails, payments, and agents. You don't need to know about all of these, of course. Just be aware that components are a thing. They're there. And have your agent check to see whether one exists for your use case before it starts hacking away and building its own. Right now, you know the basics. Once your agent has finished making a lovely app, you might be wondering, how are you going to share this with the rest of the world? Well, ComX is a back-end platform, so you need a server to host it on to run that database and compute. Now, it is open source and self-hostable, so you can just run it on your own hardware, but I personally wouldn't recommend running it on your own hardware to be honest. It's a lot of extra work. Having seen the lengths that the infrastructure engineers go into uh it convex in order to avoid downtime and things like that. I personally wouldn't want that responsibility myself. Still, it's good to know the option is there. Alternatively, you should probably just run convex using the cloud service that it provides out of the box. Now, for the front end, that is your HTML, JS, and CSS. You can have your agent host that on something like VLE, Cloudflare, and Netify. or if it's just a a simple site, then we also have something called the static hosting component, which is nice because it keeps everything self-contained inside of your Convex application and it means you don't have to sign up for another service. I did just do a whole another video on this. So, if you want to find out more information on that, check out this video. Talking about other services though, in addition to the database functions and syncing components, comics also has a bunch of other useful features and services built right in that you don't need to know about in detail, but useful to know that they are there. So these are things like the scheduleuler and the crons for running work in the future. We have orth to protect certain you know endpoints in your application. We've got file storage, full text search, vector search and more. It's definitely worth pointing your agent at the Convex docs if you aren't sure whether something is built into Convex or not. Okay, at this point I think we've probably talked enough about what Convex is and why you probably should use it. But I also think it's important when evaluating a new technology to understand some use cases that it is not a good fit for. So, because Convex is what's known as a stateless compute platform, it's not particularly well suited for systems that require extremely high frequency updates. So, I'm thinking things such as firsterson shooters like Fortnite or real-time strategy games like Starcraft. This probably also means that high frequency trading or high herz IoT sensor data would probably not be an ideal fit for Convex either. The same goes if you need direct access to the GPU or some other specific hardware. Convex doesn't give you low-level hardware access like that. For those sorts of workloads, you probably want more specialized infrastructure. Having said that though, a pattern you can use and I use all the time is have convex as the central orchestrator and then just call out to those external services via actions. Oh, and if you need to run some kind of obscure binary .exe file or something like that, then Convex might not be the ideal fit either. But for the vast majority of workloads, Convex should just work great. All right, so the final thing I would say you need to know about Convex is its dashboard. Every Convex project comes with its own little UI called the dashboard. [music] So from the dashboard you can get a nice little overview from your running application, any number of functions, any errors, things like that. You can also see we have on the top we've got this drop down here that lets you um view or create different deployments for your project. Deployments are instances or copies of your project that you can use for different environments like development or production. So this allows you to keep your data separate from um different environments. The dashboard's also got lots of other stuff that I won't go into here, such as your project settings, environment variables, and whatnot, but your agent should probably know about all of these and be able to direct you there if it can't do something itself. To get the absolute best convex experience, I recommend that you install the clawed or codeex plugins for convex, depending on which agent you're using. They come loaded with all the best practices and up-to-date info that your agent can consume while working on your project. The plugins can also proactively let your agent know when a live running project is running into any sort of scaling issue or encountering various runtime errors. Okay. Well, I hope I didn't lose you in all of that. There is obviously a ton more that I could have talked about, but hopefully you now understand the basics and the most important parts of what makes convex convex. If you want any more detail, I've left links to everything down below. And I have heaps more videos on this channel where I go deeper into each one of these topics. Do let me know in the comments if there's anything important that I missed. I read every single comment and I reply to most of them. But that's it for me for today. Until next time, thanks for watching. Cheerio.
So you've heard people like Theo, Cody or Jack talking about Convex and decided it sounds like a good fit for your next project. So you fire up your favourite coding agent and tell it to get cracking.
Then it starts talking about queries, mutations, actions, deployments and components, and you're just sitting there wondering what on earth this stuff means. Here's my agent doing exactly that with a cat video app I asked it to build:
0:00 / 0:00
Now this is 2026, and you're not going to go back and write all this code yourself, are you? You're not some sort of savage 😉
But you probably should understand just enough about what your agent is building to be able to give it sensible instructions, and maybe notice when it's heading off in the wrong direction. So that's what I'm going to give you here, the bare minimum you need to know about Convex.
So without further ado, grab yourself a lovely cup of tea and let's get into it.
What is Convex?
In a video I did a while back I described Convex as four things: database, functions, sync and components, and I think that's probably still the best way to think about it. So let's quickly talk about each one of those.
Database
Firstly, Convex is primarily a database. It's a new kind of database, a bit like a relational database and a bit like a document database, if you know what those terms are.
The important thing you need to know is that it stores your app's data, gives you an efficient way to query it, and is designed to let your agent grow the app in a sane way without accidentally corrupting any of your data.
It also has something called indexes. You don't need to know how they work, but you should probably expect your agent to use them when it needs to query large amounts of data efficiently.
Functions
The second big thing you need to know about Convex is that in addition to storing your data, it also lets you run code on the server. So not on your users' devices, on the server.
This server-side code is a bit like AWS Lambda or Cloudflare Workers if you've heard of those, so you don't need to provision any servers yourself, Convex just takes care of all that for you.
Convex differs a little bit from those guys tho, in that it has three different kinds of function that are designed to all work nicely together.
The first kind is queries. These can read data from the database, but they can't write to it or call third party services, which is why the outside world is crossed out here:
0:00 / 0:00
The second kind is mutations. These can read and write data to the database, but they can't call third party services either:
0:00 / 0:00
And the third kind is actions. These guys can call third party services and run code with side effects, but they can't directly access the database. They can call into queries and mutations when they need to read or write data tho:
0:00 / 0:00
You probably won't be writing these yourself, but so you recognise them when your agent shows you one, here's what each kind looks like in a little made up cat app:
1// a query can read from the database2exportconst listVideos =query({3 args:{},4handler:async(ctx)=>{5returnawait ctx.db.query("videos").order("desc").take(20);6},7});89// a mutation can read and write10exportconst likeVideo =mutation({11 args:{ videoId: v.id("videos")},12handler:async(ctx,{ videoId })=>{13const video =await ctx.db.get(videoId);14if(!video)thrownewError("Video not found");15await ctx.db.patch(videoId,{ likes: video.likes +1});16},17});1819// an action can call the outside world, then save what it got through a mutation20exportconst fetchCatFact =action({21 args:{},22handler:async(ctx)=>{23const res =awaitfetch("https://catfact.ninja/fact");24const{ fact }=await res.json();25await ctx.runMutation(internal.cats.saveCatFact,{ fact });26},27});28
(saveCatFact there is just another little mutation that inserts the fact into a table.)
And Convex does actually enforce this. If your agent tries to call fetch from a query or a mutation then it's going to get yelled at:
1Uncaught TypeError: fetch to https://catfact.ninja/fact failed: Can't use fetch()in queries and mutations. Please consider using an action. See https://docs.convex.dev/functions/actions formore details.
2
So you might be wondering at this point, why does Convex need three kinds of function when other platforms like AWS Lambda or Cloudflare Workers only need one?
Two big reasons. The first is that splitting your reading, writing and effects like this is a great way to help your app grow over time, without your agent getting itself tangled in a big ball of spaghetti after two weeks of development.
The second big reason is that it unlocks Convex's big superpower, which is...
Sync
When a mutation changes data, Convex knows which subscribed queries depend on that data, and it automatically updates the clients listening to them. In this one the yellow bar in the database is the data that changed, then the queries re-run and all four clients get the new result:
0:00 / 0:00
On the frontend that's just one hook, and whenever the result changes your component re-renders with it:
1const videos =useQuery(api.cats.listVideos);2
This means you can build really interactive realtime apps that just feel great to use, because everything just updates instantly. In practice it means your agent normally shouldn't need to build polling or manual refresh logic just to keep Convex data up to date.
Whenever I encounter websites these days that have got a refresh button, or worse just show you stale data until you refresh the page, I'm just like... come on, just use Convex please.
Components
The fourth and final big thing you need to know about Convex is that it has this rich component system. You can kind of think of components as little building blocks or plugins for your application, that your agent can grab to quickly add functionality that is secure and scalable.
Components get their own little database and functions and everything else that your application gets actually, but they're segregated from your own application's tables and functions. That makes them really secure, because it creates this clear boundary between your app's code and data and the component's. You or your agent can obviously poke holes in that boundary to let data and compute through, but you get to control that explicitly.
Components are great for really common tasks such as queues (Workpool), rate limits or presence, and other stuff like that which can be really tricky for you or your agent to get right. There are also ones for things such as email, payments and agents, and some of what's in the directory comes from the community and third party vendors rather than from us.
You don't need to know about all of these of course. Just be aware that components are a thing, and have your agent check to see whether one exists for your use case before it starts hacking away and building its own. It's worth asking too, as on my cat app it hadn't actually looked until I gave it a nudge:
0:00 / 0:00
Hosting
Once your agent has finished making your lovely app you might be wondering how you're going to share it with the rest of the world.
Well Convex is a backend platform, so you need a server to run that database and compute on. Now it is open source and self-hostable so you can just run it on your own hardware, but to be honest I personally wouldn't recommend it. It's a lot of extra work, and having seen the lengths the infrastructure engineers here go to in order to avoid downtime, I wouldn't want that responsibility myself. Still, it's good to know the option is there. Otherwise you should probably just use the cloud service, which is what you get out of the box.
For the frontend, that is your HTML, JS and CSS, you can have your agent host that on something like Vercel, Cloudflare or Netlify. Or if it's just a simple site then we've also got the Static Hosting component, which is nice because it keeps everything self-contained inside your Convex application and means you don't have to sign up for another service. I did a whole other video on that one if you want to find out more.
Other services
Talking about other services, in addition to the database, functions, sync and components, Convex also has a bunch of other useful things built right in. You don't need to know about them in detail, but it's useful to know they're there.
So things like the scheduler and crons for running work in the future, auth to protect parts of your application, file storage, full text search, vector search and more. It's definitely worth pointing your agent at the docs if you aren't sure whether something is built into Convex or not.
What is Convex not for?
Okay, at this point I think we've probably talked enough about what Convex is and why you probably should use it. But I also think it's important when evaluating a new technology to understand some use cases it's not a good fit for.
So because Convex is what's known as a stateless compute platform, it's not particularly well suited for systems that require extremely high frequency updates. I'm thinking things such as first-person shooters like Fortnite or real-time strategy games like StarCraft. This probably also means high-frequency trading or high-hertz IoT sensor data wouldn't be an ideal fit either.
The same goes if you need direct access to the GPU or some other specific hardware, as Convex doesn't give you low-level hardware access like that. For those sorts of workloads you probably want more specialised infrastructure.
Having said that tho, a pattern you can use, and one I use all the time, is to have Convex as the central orchestrator and then just call out to those external services via actions:
0:00 / 0:00
This post from Jashwanth is a good example of doing that with GPU work on RunPod.
Oh and if you need to run some kind of obscure binary or .exe file then Convex might not be the ideal fit either. But for the vast majority of workloads Convex should just work great.
The dashboard
Alright, so the final thing I'd say you need to know about Convex is its dashboard. Every Convex project comes with its own little UI, where you can get a nice overview of your running application, its functions, any errors, things like that.
The green dropdown along the top lets you view or create different deployments for your project:
0:00 / 0:00
Deployments are instances or copies of your project that you can use for different environments like development or production, which lets you keep your data separate between them.
The dashboard has also got lots of other stuff that I won't go into here, such as your project settings, environment variables and whatnot, but your agent should probably know about all of these and be able to direct you there if it can't do something itself.
Getting the most out of your agent
To get the absolute best Convex experience I recommend you install the Convex plugin for whichever agent you're using. For Claude Code and Codex this one command will do it:
1npx convex plugins install2
That command doesn't support Windows yet, and Cursor has its own install from the Cursor Marketplace, so the plugin docs have the commands for each agent.
The plugins come loaded with all the best practices and up-to-date info that your agent can consume while working on your project. They can also proactively let your agent know when your project is running into errors, in development or in production, and they let it read your dev deployment's logs and insights rather than having to guess.
Conclusion
So just to recap: Convex is a database, three kinds of function (queries read, mutations read and write, and actions talk to the outside world), realtime sync that keeps your clients up to date by itself, and components for the common stuff you don't want your agent reinventing. You probably want the cloud service rather than self-hosting, it's not the right fit for really high frequency stuff like games, and the plugin is well worth installing.
Well I hope I didn't lose you in all of that. There's obviously a ton more I could have talked about, but hopefully you now understand the basics and the most important parts of what makes Convex Convex. If you want more detail then the docs are the place to start, How Convex Works by Sujay goes a lot deeper, and I've got heaps more videos on our channel that go into each of these topics.
Until next time, cheerio! 👋
All gas, no breakages
Convex is the reactive backend platform that keeps up with you and your agents. Database, functions, workflow, sync, search, file storage, and more. All TypeScript, zero glue.