This video dropped at just the right time - I'm a Supabase user but have been watching your videos using Convex with Clerk and I'm torn between the two. I only want to choose 1 of them going forward so this video could help!
I think convex could very much be that sweet spot between when you manage everything yourself, databases authentication... And low code where you don't have to write code really, I'm not sure it just feels like that to me
yeah, i have to say, a lot of this vid is from the perspective of someone who hasn’t used supabase much and doesn’t know what it can do. also - “i prefer to write all the backend code myself”?? noob 😂
Something I've always wondered is how well these scale and if they're suitable for projects beyond a SaaS? If I'm not mistaken, most, if not all, BaaS are just wrappers around AWS? I get that the DX is the main selling point of them, but what is the tradeoff from using these all in one backend solutions versus building up your own infrastructure via AWS? I mean the function calls on convex are $2 per million versus $0.2 per million on AWS lamda (or $0.60 per million for edge). That's a 10x markup! Btw great video on the comparison. Love your vids as always. This was just something I've always been curious about.
That is a good question. When we talk about software, we have to consider the context of the project, company, and team size. Many software projects are small in scale and do not have that much traffic. Paying $2 per million or $0.2 per million does not make much of a difference in the grand scale of things. How many users would you need to hit your app daily to generate one million requests? Probably a decent amount right? Paying 10x more for requests to get the ability for moving fast and shipping to market faster is worth it for most small scale projects. For larger projects (Netflix, Facebook, Google), they almost always will be running their own VMs & dedicated machines because that is sometimes the only way to save on operational costs (but this also requires expert engineers who are paid a LOT of money).
Hey, thanks for this video, has helped me understand convex more. I’ve ran into some of the issues you’ve pointed out with supabase, going to try out convex now 🙏
I attended a coding bootcamp and we used Supabase for the first couple months… It allowed us to get feel for backend development so when we continued on to learning Express and PostgreSQL, we were more familiar with the concepts (Tables, Joins, SQL, Auth, RLS, etc). I think it’s the perfect tool when you’re learning or just want to get an app up and running.
Would also use all these nice services if the Rand/$ wasnt so stupidly expensive... Many of these services are just completely out of reach to anyone outside the US... Especially if you need more than one to run an app... Milk free tiers and open source as far as possible until your app fails is our poa....
Yea but manually doing it using web socets like Socket Io or something else is a much better learning experience and more rewarding, on top of more scalable
i just enjoy this little "easter egg" on this channel, all new viewers must be confused as to why this "strange" woman keeps posting "i love you babe" on every single post and she don't miss 🤣🤣, some think you are a wierd bot fr🤣🤣💀
Thanks for the video! I've been using Supabase for work over the past 6 months. You can generate types based on your schema using the Supabase CLI and pass it as a type arg when using the SDK to provide type safety. I've enjoyed using it, but I'm interested in trying Convex for a personal project.
I am glad you're using Supabase for production. I am working on a mobile app which should use Supabase as backend. Do you think, from your experience, that Supabase is solid for production apps? or will I suffer with it? either bugs or slow performance
@@yasserhy My experience is rather limited in that I can only compare it to Firebase. Between the two though, I prefer Supabase for its docs and DX. I found it very easy to set up and the docs are easy to understand.
If you use drizzle then you’re not even using supabase client or rls; you’d just be using Postgres and at that point I could just spin up a database on railway
regarding vendor lock-in, I think convex was just open-sourced today (like 4 hours ago), I think convex is pretty cool, however, I'd still prefer Postgres over convex's custom db, but that's only because I've used Postgres for almost all my professional career, and I think the Postgres is literally the best db available.
Postgres is great, but doesn’t really have the real time capabilities I’ve seen in convex without a lot of extra code. Also, convex is more than just a database, it’s an entire backend as a service. Hard to compare the two
cody, i very much disagree with you on the security (authorization) part, here's why... 1. When figuring out whether a user is allowed to *read* a row or *write* to a table, him getting the permission depends on what state/data they have in the DB, for example, say you want a user to not be able to create a shop if he's not verified, you can write an RLS policy to deny him *write* access to that table if he doesn't meet the requirements, compare that to having authz rules on the application layer, you'll have to make a network req to get the appropriate data in-order to evaluate the conditions on the server, this add more latency!!! 2. i believe separating authz rules from business logic gives you better security because you don't have to worry about having to write a bunch of *WHERE* clauses in order to protect the data, it add too much fluff on the actual SQL that deals with business logic, this problem become bigger once you have a sizable team where all devs have to simultaneously think of authz and business logic EVERYTIME!!!, that's crazy talk!!! Have a good one
that's fine to disagree; I just don't think encoding security rules at the database level is a good approach for a maintainable system. Additionally, RSL is limiting. Let's say I have 3 different user roles and each role has a different type of access to the columns in the row. This would involve adding database views which is more complexity added onto the database which is actually business rules.
Not yet, but I haven’t built anything substantial in either. A bunch of the founders at convex worked at Dropbox engineering a lot of the hard stuff, so I’m pretty sure they have a handle on everything.
Convex looks super easy to use and sounds great but looking at thier investors the top of the list is Andreessen Horowitz and that dude is aspiring to Lex Luther levels of bad guy. Looks like he is also a key invesor in Clerk too. I'll stick with Supabase 😁
1. Can I create a database that is linked to the respective users with Convex? 2. I have created a schema that references the user and then creates a table with sunbeds based on the `tokenIdentifier`. At least that's the plan. It is not working yet.
23:20 Haha yes that is how i feel right now. Got sucked into Supabase because of how easy auth is, and the simple premade client for next/react, but then hit some big walls as I tried to create some user roles. I am deep in postgres rabbitholes right now, which is exactly what i was initially trying to avoid. Oops.
With Convex they only host it right? Like there's no way to actually own your app/platform/data like is at least possible with Supabase (and with other BaaS)?
with supabase, we can connect to postgresql with third party data analyst and follow everything we want. And in convex? How to connect with other data analyst tools?
Did you try using a server actions to call a Supabase. Basically you define all functions in actions.ts file or what ever and use them to call supabase from server components, kid of similar seperation of concerns ))
Thank you for this video! I may give convex a try and see how it goes. I've been trying to use supabase for a side project but have run into a lot of the pitfalls mentioned in this video.
you can use a convex action and just do a normal fetch request, then when you get the response back, pass the response data to a mutation to store that info somewhere if you want.
I think Supabase being "just Postgres" is potentially a pro or a con depending on how you look at it. The trade off of it being something you might have to learn is that if you ever want to migrate from Supabase it'll be much easier, since you can deploy/host Postgres pretty much anywhere. Not sure you'd get the same benefits with Convex Also, I feel like Postgres is pretty much a "figured out" system. I know that whatever I'd need to do I can more easily find a solution through pg extensions or even ChatGPT. Probably not the case with Convex (as much)
Yeah idk how truthful “just Postgres” actually is. I’m assuming there is a lot of extra configuration and work needed to build your own api which wraps postgres and hooking into the real-time capability. Self hosting supabase seems like a more feasible option, but a complete removal of supabase and going straight to Postgres probably involves a lot of work, especially if you didn’t structure your code properly to abstract away your use of supabase.
I agree, learning curve is crazy, but I prefer "database lockin" over "vendor lockin" as well as, Auth in supabase is sweet! Supabase is more battle tested. I am starting a project, I decided to go with supabase... Maybe next time I will do convex. But your content seems like it will shift towards convex :(
Convex seems awesome. I hate supabase. When I started a new job at a startup where the juniors that I took over from had supabase queries straight in reaction components, the first thing I did was to take all of that out and wrap Prisma around a standard db string to supabase until the we eventually migrated the db itself to RDS, but had I known about Convex back then I would probably switch to that. For permissions (authZ) I use casl. It has a plugin for Prisma. I'll see if I can write a Convex plugin but even without that it's fairly straightforward to use it out the box
I think supabase is fine if all you want is a postgres db host (although I'd probably trust AWS RDS more to guarantee my database will always stay online); but yeah I agree if your react code is doing queries to the supabase API, you're going down an unmaintainable path.
Does convex Have support for Svelte,Vue ? you should have included front end Framework support in the comparison. Convex is only focused on react on the frontend
Hi. I am an aspiring web developer. I am building projects in nodejs with express, mongodb and vite- react. I’m not a fan of nextjs. However I’ve seen you have plenty videos with tech, not only using nextjs. Do you have a video presenting tech stacks of js in 2024? I mean I want to be focused on ts, node, react.
@@leojohn6702 I agree that pricing is bit of a ripoff, but that is VERCEL, not Nextjs. I was talking about the framework, not the company or the platform. To your second point, I guess that's fair to not be a fan of sth you find hard to understand. Fair enough!
Going to give convex another shot after watching this. I'm a supabase fan but you've articulated my fusturations over some of the things like rpc very well. Convex for me is a slight learning curve and I really wish there was more guides and tutorials and tutorials that are not 3 hours long going over it.
definitely type safety and atomicity are two reasons why I would pick convex without hesitation I've been using convex for some time and I like it I got a bit sidetracked by actions and mutations distinctions. The docs tell you to use mutations as much as possible and schedule actions from the mutations. But I noticed that in practice what you want by default is to call an action directly from the frontend, for, say, calling a 3rd party and then writing the response in the DB and show a loading state while this happens
use mutation unless you need to make an async request to a third party service, then I'd just invoke the action directly from the frontend and have that action call mutations
@@WebDevCody Yes, that was my conclusion too. The alternative would be to call a mutation from the client and the mutation schedules an action call, which can be done if we don't need or want a loading spinner in the client that shows the state of the request. There's also the possibility to schedule mutations from a mutation (I think). This is might be useful for things which can be done in the background and might take a while, for example, recursively batch delete all the records related to a specific user the docs seem to suggest as default to call a mutation that schedules an action, but then I can't show a loading spinner in the client because the client doesn't know when the action completes. Or at least, I didn't see a way that is not awkward and overly complicated (like adding a "pending" property to the record that is going to be updated)
@@luiswebdev8292 the way I'd recommend doing that is actually adding a status field to your record. Since convex will automatically update your UI, if you just initialize your record as "pending" and then later change it to "processed", your UI can easily show a spinner / show the results when it's done. It sounds like you are running a long running async process (like an open ai request), and I think having a status property is the best approach.
@@WebDevCody it's a sequence of open ai calls. I think you're actually correct, if I do as you say, then it's possible to show a spinner even if the user refreshes the page as the status at any given time comes directly from the DB
Great video , a very thorough comparison. Convex looks really good and they should continue to work with content creators because they are the first resource folk use to learn a new tech and you have some excellent examples. Btw I use Supabase because of their auth and Postgress support. Attended their launch weekend where their cofounder talked about their auth service .
Really nice video! :D Have you compared price scaling for Convex + Clerk compared to Supabase? Another question, is there something you have found in Convex that Supabase is completely missing or vice versa? (other than Auth missing within Convex)
Something I think you didn't mention is that you can't really write complex queries with the Supabase "ORM". You can't do a left join or a simple join between two tables that don't share a foreign key. I started a project with Supa and was pretty disappointed that I had to jump to table views or functions the moment I needed more than a basic select
One thing you missed is that you can't self host convex at this point. While supabase does provied self hosting through the docker image but it's not that good as compared to their service.
This video dropped at just the right time - I'm a Supabase user but have been watching your videos using Convex with Clerk and I'm torn between the two. I only want to choose 1 of them going forward so this video could help!
Both are so much better than Firebase lol 😀
@@eshw23 convex is so much easier than firebase...
I think convex could very much be that sweet spot between when you manage everything yourself, databases authentication... And low code where you don't have to write code really, I'm not sure it just feels like that to me
I mean you do still need to write code, but it makes things easier for sure
You missed probably one of the most important points of interest. Pricing. Which is more cost effective and at scale...
Not Open Source
Convex now has authentication and it deserves another look
Why not using Prisma+Postgres+NextAuth without any edge stuff around it
Concerning the "Paradigm" section, Supabase allows you to make request to your backend with their Supabase js client as well!
yeah, i have to say, a lot of this vid is from the perspective of someone who hasn’t used supabase much and doesn’t know what it can do.
also - “i prefer to write all the backend code myself”?? noob 😂
because convex cuts me a check
haters gonna hate - I've haven't felt this productive until I started using convex
@@WebDevCody fair -- i take it back, love your content
@@parkerrex did you participate in the hackathon? Your name seems familiar
Something I've always wondered is how well these scale and if they're suitable for projects beyond a SaaS? If I'm not mistaken, most, if not all, BaaS are just wrappers around AWS? I get that the DX is the main selling point of them, but what is the tradeoff from using these all in one backend solutions versus building up your own infrastructure via AWS?
I mean the function calls on convex are $2 per million versus $0.2 per million on AWS lamda (or $0.60 per million for edge). That's a 10x markup!
Btw great video on the comparison. Love your vids as always. This was just something I've always been curious about.
That is a good question.
When we talk about software, we have to consider the context of the project, company, and team size. Many software projects are small in scale and do not have that much traffic. Paying $2 per million or $0.2 per million does not make much of a difference in the grand scale of things. How many users would you need to hit your app daily to generate one million requests? Probably a decent amount right?
Paying 10x more for requests to get the ability for moving fast and shipping to market faster is worth it for most small scale projects. For larger projects (Netflix, Facebook, Google), they almost always will be running their own VMs & dedicated machines because that is sometimes the only way to save on operational costs (but this also requires expert engineers who are paid a LOT of money).
@@WebDevCody That makes a ton of sense. Thank you for your detailed response!
Hey, thanks for this video, has helped me understand convex more. I’ve ran into some of the issues you’ve pointed out with supabase, going to try out convex now 🙏
Phenomenal post. Thank you Cody! Always providing relevant and insightful content
I attended a coding bootcamp and we used Supabase for the first couple months…
It allowed us to get feel for backend development so when we continued on to learning Express and PostgreSQL, we were more familiar with the concepts (Tables, Joins, SQL, Auth, RLS, etc).
I think it’s the perfect tool when you’re learning or just want to get an app up and running.
No hate though! I’m a big fan of your vids Cody!
This honestly just seems way too convoluted, I'd rather stick with a traditional API backend and call endpoints in my frontend
if you code in react, try convex for yourself. so far this has been the best DX I've found in my 10 years of coding.
Would also use all these nice services if the Rand/$ wasnt so stupidly expensive... Many of these services are just completely out of reach to anyone outside the US... Especially if you need more than one to run an app... Milk free tiers and open source as far as possible until your app fails is our poa....
Convex is incredible. Makes it stupid easy to create apps.
Yea but manually doing it using web socets like Socket Io or something else is a much better learning experience and more rewarding, on top of more scalable
If your goal is to learn websockets than sure.But if you want to build a web app quickly this is the way.@@eshw23
Im the only one here thinking memerank has a great potential?
I love you babe! You’re doing great!!!
Thank you my love!
I love him more
@@untalentedwebdev lol not possible
awww
i just enjoy this little "easter egg" on this channel, all new viewers must be confused as to why this "strange" woman keeps posting "i love you babe" on every single post and she don't miss 🤣🤣, some think you are a wierd bot fr🤣🤣💀
Thanks for the video! I've been using Supabase for work over the past 6 months. You can generate types based on your schema using the Supabase CLI and pass it as a type arg when using the SDK to provide type safety. I've enjoyed using it, but I'm interested in trying Convex for a personal project.
I am glad you're using Supabase for production. I am working on a mobile app which should use Supabase as backend. Do you think, from your experience, that Supabase is solid for production apps? or will I suffer with it? either bugs or slow performance
@@yasserhy My experience is rather limited in that I can only compare it to Firebase. Between the two though, I prefer Supabase for its docs and DX. I found it very easy to set up and the docs are easy to understand.
Supabase + Prisma or Drizzle solves most of the issues
If you use drizzle then you’re not even using supabase client or rls; you’d just be using Postgres and at that point I could just spin up a database on railway
@@WebDevCody well I say in this case you don’t get too locked in to Supabase and your business logic remains in your application
Hello can you create a video how you handle stripe taxes across 200+ countries?
regarding vendor lock-in, I think convex was just open-sourced today (like 4 hours ago), I think convex is pretty cool, however, I'd still prefer Postgres over convex's custom db, but that's only because I've used Postgres for almost all my professional career, and I think the Postgres is literally the best db available.
Postgres is great, but doesn’t really have the real time capabilities I’ve seen in convex without a lot of extra code. Also, convex is more than just a database, it’s an entire backend as a service. Hard to compare the two
cody, i very much disagree with you on the security (authorization) part, here's why...
1. When figuring out whether a user is allowed to *read* a row or *write* to a table, him getting the permission depends on what state/data they have in the DB, for example, say you want a user to not be able to create a shop if he's not verified, you can write an RLS policy to deny him *write* access to that table if he doesn't meet the requirements, compare that to having authz rules on the application layer, you'll have to make a network req to get the appropriate data in-order to evaluate the conditions on the server, this add more latency!!!
2. i believe separating authz rules from business logic gives you better security because you don't have to worry about having to write a bunch of *WHERE* clauses in order to protect the data, it add too much fluff on the actual SQL that deals with business logic, this problem become bigger once you have a sizable team where all devs have to simultaneously think of authz and business logic EVERYTIME!!!, that's crazy talk!!!
Have a good one
that's fine to disagree; I just don't think encoding security rules at the database level is a good approach for a maintainable system. Additionally, RSL is limiting. Let's say I have 3 different user roles and each role has a different type of access to the columns in the row. This would involve adding database views which is more complexity added onto the database which is actually business rules.
Would it be possible to compare convex with appwrite ? And how they compare in terms of the cloud functions
if I get time, I haven't tried appwrite yet.
Appwrite is the best and easy❤❤
nice video, im curious what you think appwrite?
Appwrite is easy and powerfull❤
You notice much in terms of performance between them? I've used Supabase, and there was a lot of situations where performance was a problem.
Not yet, but I haven’t built anything substantial in either. A bunch of the founders at convex worked at Dropbox engineering a lot of the hard stuff, so I’m pretty sure they have a handle on everything.
Interesting. First time hearing about Convex
Thoughts on pricing between both services?
Convex looks super easy to use and sounds great but looking at thier investors the top of the list is Andreessen Horowitz and that dude is aspiring to Lex Luther levels of bad guy. Looks like he is also a key invesor in Clerk too. I'll stick with Supabase 😁
😂 I have no info on any of that. What makes it so bad?
I use appwrite❤😂
You should switch the icons in the thumbnail, the heaviest side should be the best, in this case, convex.
Very important information
First thing I noticed 😂
no pricing on the list?
you sold me on convex ngl
Greatly explained each aspects from both!
really2 good video.
my last project I tried to use supabase and really frustrated with all the things you mentioned.
good to know about convex.
1. Can I create a database that is linked to the respective users with Convex?
2. I have created a schema that references the user and then creates a table with sunbeds based on the `tokenIdentifier`. At least that's the plan. It is not working yet.
we use drizzle orm with postgresql database which gives best developer experience.
You are a machine bruh, great vid!
is there a concurrent connection limit for realtime updates in Convex? For Supabase its 100
Supabase all day
23:20 Haha yes that is how i feel right now. Got sucked into Supabase because of how easy auth is, and the simple premade client for next/react, but then hit some big walls as I tried to create some user roles. I am deep in postgres rabbitholes right now, which is exactly what i was initially trying to avoid. Oops.
With Convex they only host it right? Like there's no way to actually own your app/platform/data like is at least possible with Supabase (and with other BaaS)?
convex now open source can you make a video about it like what your thoughts?
with supabase, we can connect to postgresql with third party data analyst and follow everything we want. And in convex? How to connect with other data analyst tools?
Did you try using a server actions to call a Supabase. Basically you define all functions in actions.ts file or what ever and use them to call supabase from server components, kid of similar seperation of concerns ))
I always wanted to like Supabase. I do like a few things, but I have always felt friction. Will give Convex a go, thanks!
Great overview, loads of knowhow. Thank you.
Hi junior dev here, do you mind showing how to host convex in the cloud or a server now that its open source
In terms of schema, you can do it all in code with supabase too, you have both options. You actually don't have to use the ui at all.
Great introspection. Thanks for your unfiltered review :)
Thank you for this video! I may give convex a try and see how it goes. I've been trying to use supabase for a side project but have run into a lot of the pitfalls mentioned in this video.
i am having a seperate backend that used for generating ai response. How can i use convex to make an api request to my be endpoints. Thank you
you can use a convex action and just do a normal fetch request, then when you get the response back, pass the response data to a mutation to store that info somewhere if you want.
In the first 5 minutes I was already sold on convex
I think Supabase being "just Postgres" is potentially a pro or a con depending on how you look at it. The trade off of it being something you might have to learn is that if you ever want to migrate from Supabase it'll be much easier, since you can deploy/host Postgres pretty much anywhere. Not sure you'd get the same benefits with Convex
Also, I feel like Postgres is pretty much a "figured out" system. I know that whatever I'd need to do I can more easily find a solution through pg extensions or even ChatGPT. Probably not the case with Convex (as much)
Yeah idk how truthful “just Postgres” actually is. I’m assuming there is a lot of extra configuration and work needed to build your own api which wraps postgres and hooking into the real-time capability. Self hosting supabase seems like a more feasible option, but a complete removal of supabase and going straight to Postgres probably involves a lot of work, especially if you didn’t structure your code properly to abstract away your use of supabase.
I agree, learning curve is crazy, but I prefer "database lockin" over "vendor lockin" as well as, Auth in supabase is sweet! Supabase is more battle tested. I am starting a project, I decided to go with supabase... Maybe next time I will do convex. But your content seems like it will shift towards convex :(
Nah my niche is still just general web dev, react, and next
Convex seems awesome. I hate supabase. When I started a new job at a startup where the juniors that I took over from had supabase queries straight in reaction components, the first thing I did was to take all of that out and wrap Prisma around a standard db string to supabase until the we eventually migrated the db itself to RDS, but had I known about Convex back then I would probably switch to that.
For permissions (authZ) I use casl. It has a plugin for Prisma. I'll see if I can write a Convex plugin but even without that it's fairly straightforward to use it out the box
I think supabase is fine if all you want is a postgres db host (although I'd probably trust AWS RDS more to guarantee my database will always stay online); but yeah I agree if your react code is doing queries to the supabase API, you're going down an unmaintainable path.
Does convex Have support for Svelte,Vue ? you should have included front end Framework support in the comparison. Convex is only focused on react on the frontend
I’m working on Svelte & supabase for my project , would you like to connect ? @blujosi
Cody please tell me what you use for the flowcharts, do you use a graphics tablet? Or normal mouse? You have strong eraserio skills lol
I use my track pad on my macbook
Cuz It’s simple Convex is the sponsor of the this video 😂
this wasn't a sponsored video
Could the recompilation of convex be a problem if I don't have a performant laptop?
I have a shit laptop and it runs fine 😂
Thanks for going in such details man! Much appreciated!
man I love tech so much!
Strapi never being included as an option in comparisons like these makes me think they will sooner or later go bankrupt😅
Strapi is a cms, I wouldn’t compare it
@@WebDevCody I know, but it is also a layer over a database that allows you to work with data.
loving these comparison videos :)
Hi. I am an aspiring web developer. I am building projects in nodejs with express, mongodb and vite- react.
I’m not a fan of nextjs. However I’ve seen you have plenty videos with tech, not only using nextjs.
Do you have a video presenting tech stacks of js in 2024?
I mean I want to be focused on ts, node, react.
I only use next now honestly; it's less complexity imo
you said you are an aspiring web developer and you already don't like Next. Have you used it a lot and used alternatives? Why do you not like it?
@@sagarsubedi in the first place, I hate the pricing plan. It’s a ripoff.
Secondly, I find it hard to understand.
@@leojohn6702 I agree that pricing is bit of a ripoff, but that is VERCEL, not Nextjs. I was talking about the framework, not the company or the platform. To your second point, I guess that's fair to not be a fan of sth you find hard to understand. Fair enough!
Thanks for this video
What about firebase?
In wonder if you ever tried firebase. I am curious what your thoughts are.
I haven’t tried it yet
@@WebDevCody 👀 quite rare to find people using latest tools on daily basis but not the established tool
great video again!
Going to give convex another shot after watching this. I'm a supabase fan but you've articulated my fusturations over some of the things like rpc very well. Convex for me is a slight learning curve and I really wish there was more guides and tutorials and tutorials that are not 3 hours long going over it.
I have a crash course 12 min video on my channel you should check out
@@WebDevCodycan you make 30-40 min crash course
definitely type safety and atomicity are two reasons why I would pick convex without hesitation
I've been using convex for some time and I like it
I got a bit sidetracked by actions and mutations distinctions. The docs tell you to use mutations as much as possible and schedule actions from the mutations. But I noticed that in practice what you want by default is to call an action directly from the frontend, for, say, calling a 3rd party and then writing the response in the DB and show a loading state while this happens
use mutation unless you need to make an async request to a third party service, then I'd just invoke the action directly from the frontend and have that action call mutations
@@WebDevCody Yes, that was my conclusion too. The alternative would be to call a mutation from the client and the mutation schedules an action call, which can be done if we don't need or want a loading spinner in the client that shows the state of the request. There's also the possibility to schedule mutations from a mutation (I think). This is might be useful for things which can be done in the background and might take a while, for example, recursively batch delete all the records related to a specific user
the docs seem to suggest as default to call a mutation that schedules an action, but then I can't show a loading spinner in the client because the client doesn't know when the action completes. Or at least, I didn't see a way that is not awkward and overly complicated (like adding a "pending" property to the record that is going to be updated)
@@luiswebdev8292 the way I'd recommend doing that is actually adding a status field to your record. Since convex will automatically update your UI, if you just initialize your record as "pending" and then later change it to "processed", your UI can easily show a spinner / show the results when it's done. It sounds like you are running a long running async process (like an open ai request), and I think having a status property is the best approach.
@@WebDevCody it's a sequence of open ai calls. I think you're actually correct, if I do as you say, then it's possible to show a spinner even if the user refreshes the page as the status at any given time comes directly from the DB
Do you have a MS in CS?
no just a bachelors
Great video , a very thorough comparison. Convex looks really good and they should continue to work with content creators because they are the first resource folk use to learn a new tech and you have some excellent examples. Btw I use Supabase because of their auth and Postgress support. Attended their launch weekend where their cofounder talked about their auth service .
Convex has auth now! In case you want to check it out for a future project
Really nice video! :D
Have you compared price scaling for Convex + Clerk compared to Supabase?
Another question, is there something you have found in Convex that Supabase is completely missing or vice versa? (other than Auth missing within Convex)
Something I think you didn't mention is that you can't really write complex queries with the Supabase "ORM". You can't do a left join or a simple join between two tables that don't share a foreign key. I started a project with Supa and was pretty disappointed that I had to jump to table views or functions the moment I needed more than a basic select
of course you need foreign keys to perform joins. it's a relational db jc
You can use it with prisma
One thing you missed is that you can't self host convex at this point. While supabase does provied self hosting through the docker image but it's not that good as compared to their service.
I talk about that in the video.
Front end devs will do anything to avoid learning a real backend language
How’d that comment make you feel? Did it make you feel powerful?
Sometimes speed matters.....
What are you talking about lol, Nodejs literallly is a backend language lmao, hes using the API routes
This was super useful. Thanks so much Cody. Definitely switching to Convex as a default BaaS