
Dont Roll Your Own Auth with Clerks Dev Agrawal and Jeff Escalante
An in-depth look at Clerk's authentication, multi-tenancy, and future billing features plus developer experiences and frameworks shaping the React ecosystem
Episode Description
Jeff Escalante, Dev Agrawal, and Colin from Clerk join JavaScript Jam to discuss authentication, multi-tenancy, and Clerk's expanding vision beyond auth.
Episode Summary
This episode of JavaScript Jam features Jeff Escalante and Dev Agrawal from Clerk, later joined by co-founder Colin via phone call, discussing why developers shouldn't roll their own authentication and what sets Clerk apart from competitors like Auth0. The conversation begins with the case against building auth from scratch, emphasizing the sheer complexity of passwords, encryption, OAuth, device tracking, and multi-factor authentication. The guests then explain Clerk's layered SDK architecture, which starts with a raw API and builds up through JavaScript, React, and framework-specific adapters for Next.js, Remix, and Redwood, making it usable even without React via a simple script tag. A significant portion of the discussion centers on Clerk's multi-tenancy features, which allow developers to manage organizations, roles, and shared resources out of the box. Colin elaborates on Clerk's roadmap, including plans for billing integration tied to organizations and enhanced authorization with custom roles and permissions. The episode also touches on React Server Components, with excitement around Redwood's RSC exploration, and veers into a lively tangent about marketing strategy, landing page testing, and the challenges of empowering non-technical editors. The overarching theme is Clerk's ambition to be a zero-effort, full-stack user management solution that handles far more than just sign-in screens.
Chapters
00:00:00 - Introductions and Getting Started
The episode opens with the JavaScript Jam crew getting settled in a lively, informal atmosphere as they sort out recording logistics and banter back and forth. Jeff Escalante introduces himself as a former Vercel and HashiCorp employee now working at Clerk, describing it as a small company of around 35 people where everyone wears many hats.
Dev Agrawal then shares that he joined Clerk as a developer advocate exactly one month prior, making it his first job out of college. He explains how he fell in love with Clerk after seeing a demo at Jamstack Conf about six or seven months earlier, and how that experience convinced him he never wanted to build authentication from scratch again.
00:03:03 - Why You Shouldn't Roll Your Own Auth
The conversation shifts to the core question of why developers should avoid building their own authentication systems. Dev outlines the many moving parts involved — user interfaces, password security, encryption, hashing, multi-factor authentication, OAuth, and social providers — while Jeff adds device tracking to the list. They discuss liability questions and Jeff argues that auth is essentially a solved problem, recommending developers build it once as a learning exercise and then use an off-the-shelf solution going forward.
Anthony then steers the discussion toward what differentiates Clerk from other auth providers like Auth0. Dev explains that Clerk prioritizes fast onboarding and a seamless developer experience, particularly for the React and Next.js ecosystem. Jeff elaborates on Clerk's layered architecture — a base API, a vanilla JavaScript SDK, a React SDK, and framework-specific adapters — noting that while Clerk's marketing emphasizes React, the underlying technology is stack-agnostic.
00:07:06 - Pre-Built Components and Backend Integrations
The hosts dig into Clerk's pre-built UI components and how they actually work under the hood. Jeff explains that the components can render without the developer using React at all — Clerk injects its own isolated React instance, enabling a script-tag-only approach for vanilla JavaScript projects. Anthony suggests that this capability isn't well communicated in the current documentation and recommends creating a vanilla JS example, which Jeff agrees would be valuable.
The discussion then broadens to Clerk's backend integrations with services like Fauna, Firebase, Hasura, and others. Jeff reiterates that Clerk's React-heavy branding is a strategic marketing choice rather than a technical limitation, and that the company plans to expand its framework support as it grows, including potential mobile SDKs for iOS development.
00:11:46 - Multi-Tenancy and Organizations
Dev introduces multi-tenancy as one of Clerk's most compelling features, explaining that modern applications often require multiple groups of users — companies, teams, or families — to share resources within isolated workspaces. He defines multi-tenancy and describes how Clerk's organization switcher component enables personal workspaces, organization creation, and member invitations with minimal setup.
Jeff and Dev discuss the current role system, which includes admin and basic user roles, and note that custom roles and permissions are actively being explored. The conversation segues into Clerk's plans for billing integration, where Jeff hints at upcoming features that would allow developers to define subscription plans and entitlements directly within Clerk's UI, further reducing the work needed to monetize applications.
00:17:40 - Colin Joins and Discusses Clerk's Architecture
Clerk co-founder Colin joins the call and provides deeper technical context on how Clerk handles backend authentication through JWTs containing user IDs, organization IDs, and other claims that backends can verify using Clerk's public key. He also explains how MetaMask integration works, with Clerk managing sessions and user identity even when wallet-based authentication is used on the front end.
Colin then articulates Clerk's broader value proposition compared to competitors: while other auth tools focus narrowly on sign-up and sign-in, Clerk provides a full user management experience including profiles, two-factor authentication setup, and organization management. He outlines the long-term vision of combining user identity, organization roles, billing plans, and entitlements into a unified system that can power both frontend gating components and backend authorization checks.
00:24:12 - React Server Components and Framework Ecosystem
The conversation shifts to React Server Components, with Colin expressing excitement about Redwood's RSC exploration. Jeff emphasizes how important it is for framework teams adopting RSC to maintain close collaboration with the React core team, noting that the architecture is still evolving and that the tight feedback loop between Vercel and React was key to making RSCs work in Next.js.
Dev adds that he's working on a video about React Server Components and considers them still in early stages given that nearly all existing opinions are shaped by the Next.js implementation. Jeff offers to help facilitate connections between the Redwood team and the React team, underscoring the collaborative spirit of the conference setting and the importance of diverse framework implementations for the health of the ecosystem.
00:29:50 - Marketing Strategy and CMS Integrations
A lively tangent develops around marketing strategy, sparked by Scott's enthusiasm about combining Clerk's React components with Makeswift's visual editing capabilities. Jeff draws on his experience at previous companies to discuss the challenges of empowering non-technical marketing teams to create and edit landing pages without compromising brand quality, noting the importance of providing constrained editing tools rather than full open access.
The group discusses the value of A/B testing multiple landing pages with different messaging for different audience segments, and Jeff shares cautionary tales of marketers uploading oversized images and pasting paragraphs into headline fields. The underlying point connects back to Clerk: authentication components are part of the overall application experience, and giving marketing teams appropriate control over how they appear — with guardrails — is an important consideration for any developer tool.
00:38:26 - Wrapping Up and Where to Find Everyone
Colin returns briefly to offer his closing thoughts, emphasizing that Clerk's core value is helping developers get up and running in about five minutes and then getting out of the way. He directs listeners to clerk.com where they can sign up and find framework-specific tutorials. Dev shares information about his Twitch streaming activities, including Serverless Sunday and Framework Friday series.
The episode winds down with the crew sharing their Twitter handles and joking about domain names, mistyped URLs, and the costs of securing the right online identity. Jeff shares anecdotes about buying misspelled domain names at HashiCorp and Vercel, and the group playfully debates buying dev.dev before signing off with plans to grab dinner together.
Transcript
00:00:00 - Dev Agrawal
Recording, recording.
00:00:02 - Scott Steinlage
All right, do the Nolia clap.
00:00:05 - Anthony Campolo
Let's all clap and not listen.
00:00:08 - Jeff Escalante
Okay?
00:00:08 - Anthony Campolo
You need to clap. Oops.
00:00:12 - Scott Steinlage
Set, set. So, Clerk, don't be a jerk.
00:00:16 - Anthony Campolo
Authentication.
00:00:19 - Scott Steinlage
Welcome to JavaScript Jam.
00:00:24 - Anthony Campolo
For listeners now listening.
00:00:26 - Scott Steinlage
Oh, my goodness.
00:00:26 - Anthony Campolo
We went through some things to get to this moment in time.
00:00:30 - Scott Steinlage
We're a lot closer together now. We'll just say that physically, emotionally, mentally,
00:00:36 - Dev Agrawal
psychologically, we could just leave it at that.
00:00:38 - Scott Steinlage
Yeah, I might even just cut that out.
00:00:40 - Anthony Campolo
All right, so we got Dev and we got Jeff. We got Jeff and we got Dev. Introduce yourself.
00:00:46 - Scott Steinlage
We got Jeff.
00:00:47 - Anthony Campolo
You two need to fight to find out who will introduce themselves first. All right? To the death.
00:00:51 - Jeff Escalante
We had a fight. We cut out the footage of that. I came out on top, barely. So here I am.
00:00:58 - Scott Steinlage
Jokes were coming and I didn't say anything.
00:00:59 - Jeff Escalante
I swear, I am Jeff.
00:01:02 - Anthony Campolo
You're working for Vercel, right?
00:01:03 - Jeff Escalante
I work at Clerk. I used to work at Vercel. Before that I worked at HashiCorp. My previous job was managing the Next.js team. My job now is, I don't really know exactly, but I'm at Clerk.
00:01:14 - Anthony Campolo
You do interviews, don't you?
00:01:15 - Jeff Escalante
It's been a lot of fun. I've been doing all sorts of things, trying to make things happen here, you know. That's all I got.
00:01:22 - Scott Steinlage
That was beautiful.
00:01:23 - Dev Agrawal
Part-time manager, part-time engineer, part-time devil.
00:01:26 - Jeff Escalante
You know, just do what it takes. Clerk is a small company. People don't know.
00:01:29 - Scott Steinlage
Yeah, we wear many hats.
00:01:30 - Jeff Escalante
I feel like there's a lot of talk about Clerk on Twitter, but people don't realize it's a very small company. It's like 35 people.
00:01:36 - Anthony Campolo
Redwood was using Clerk a year ago. We were way ahead.
00:01:40 - Jeff Escalante
That's amazing. Thank you. But, yeah, we're still kind of trying to figure things out and get everything in order. It's been great. It's gone super well. I'm super thrilled to be there. Really nice people that I'm working with, including this guy right here who's about...
00:01:53 - Anthony Campolo
What do you do at Clerk, Dev?
00:01:55 - Dev Agrawal
I joined Clerk as a developer advocate exactly a month ago.
00:01:59 - Anthony Campolo
As of recording this episode, first job ever.
00:02:01 - Dev Agrawal
Yeah, first job ever.
00:02:02 - Jeff Escalante
Nice.
00:02:03 - Dev Agrawal
First job ever after graduating from college. Yes, yes.
00:02:07 - Anthony Campolo
I joined...
00:02:08 - Dev Agrawal
I joined on May 1, so exactly a month ago. Thank you.
00:02:13 - Jeff Escalante
Ready?
00:02:14 - Dev Agrawal
Start that.
00:02:14 - Scott Steinlage
Okay. No, you're good now. You're good.
00:02:16 - Anthony Campolo
Just make sure to talk into the mic. Yeah. Like Chris Coyer.
00:02:19 - Jeff Escalante
Busted.
00:02:21 - Dev Agrawal
Chris Coyier. Chris Coyier is a good person. He's a good, good person to be like.
00:02:26 - Anthony Campolo
He's one of the best podcasters of all time. Doesn't know how to use a frickin' mic.
00:02:31 - Jeff Escalante
Toasted.
00:02:34 - Scott Steinlage
[unclear].
00:02:35 - Dev Agrawal
Yeah. So I joined Clerk as a developer advocate a month ago. I started using Clerk about six or seven months ago after I saw Colin give a demo at Jamstack Conf. And pretty much since then I've been in love with Clerk. Never wanted to build auth again, and I want other people to never build auth again.
00:02:52 - Anthony Campolo
So you're saying we should roll our own auth? Is that what you're saying?
00:02:54 - Dev Agrawal
I'm saying, yeah, that you should not roll your own.
00:02:56 - Scott Steinlage
That debate went on for like a month.
00:02:58 - Jeff Escalante
I feel like that's a very unreasonable amount of time. Just do whatever you want to do.
00:03:03 - Anthony Campolo
All right, well, let's start there. Why should we not roll our own auth?
00:03:07 - Dev Agrawal
Auth is a very complicated problem. It's not just one thing. It's having your user interface, your user experience of login and sign-up. It's having the security of your passwords, password strength, encryption, hashing, everything on the back end, multi-factor auth, OAuth. These are so many different things. Social providers, yeah.
00:03:29 - Jeff Escalante
Devices, device tracking too. Yeah, I mean, there's so much.
00:03:33 - Anthony Campolo
If I use Clerk and I get hacked, is Clerk liable if you get hacked?
00:03:37 - Dev Agrawal
That depends on how you got hacked.
00:03:39 - Jeff Escalante
Interesting.
00:03:40 - Dev Agrawal
Did your servers or your data get hacked, or were your Clerk credentials compromised? Depends.
00:03:47 - Anthony Campolo
Okay.
00:03:48 - Jeff Escalante
I mean, I feel like the answer for me is everyone makes auth, so why do you need to make it yourself again? It's just one of those things that has been done over and over and over and everyone who does it does it exactly the same way.
00:04:02 - Anthony Campolo
Really? I thought there was a million ways to do it. You got cookies, you got JWTs, you got sessions. So that's true.
00:04:09 - Jeff Escalante
But auth providers should just cover all of them, right?
00:04:13 - Anthony Campolo
Do you do all of those?
00:04:14 - Jeff Escalante
Yes. I mean, yes is the answer to that. Genuinely, any way that you want to set up auth. I just feel like auth is a relatively solved problem at this point. So if you're like, I'm going to make auth from scratch, it's okay as a learning device. And honestly, I recommend doing it if you haven't done it before, to figure out how to do it and learn it.
00:04:33 - Scott Steinlage
See how complicated.
00:04:34 - Jeff Escalante
Yeah, exactly. And then you make your decision the next time you have to do auth. Like do you want to do this from scratch again? Or do you say, I'm going to take something off the shelf that just does this for me and it's done and I can move on and focus on, like, actually building the application I want to be building.
00:04:48 - Anthony Campolo
Yeah. So I've bought into the "don't roll your own auth" thing for a long time. So I think the more interesting question is why Clerk instead of Auth0 or another auth solution?
00:04:58 - Jeff Escalante
That's a good one.
00:04:59 - Dev Agrawal
At Clerk, we try to make the experience of getting started, getting up and running, and never having to think about auth again as fast as possible, as seamless as possible. Right now we know everyone's, or most people, trying to build a React or Next.js app. We try to focus on that area, that market.
00:05:17 - Anthony Campolo
So you're kind of React-heavy. If I have a Vue app, would Clerk not necessarily work?
00:05:22 - Jeff Escalante
You could get it to work, but
00:05:24 - Anthony Campolo
it would be a little more effort.
00:05:25 - Jeff Escalante
It would be more effort.
00:05:26 - Colin
Right.
00:05:26 - Anthony Campolo
I might have to.
00:05:27 - Jeff Escalante
It won't be that way. Yeah, we're working on building that out.
00:05:31 - Anthony Campolo
But, like, ChatGPT can write a lot of extra frameworks.
00:05:34 - Dev Agrawal
Yeah.
00:05:35 - Jeff Escalante
What I learned shortly after joining, which is interesting, is that Clerk has built-in layers in such a way that there's an API, and if you just want to use the API, you can do that. And then on top of that there's a JavaScript SDK, which is just like window.Clerk, and you can run that without any framework and do the whole thing still. On top of that is a React SDK, and on top of that is a Next.js or a Remix SDK. Okay.
00:05:57 - Anthony Campolo
Because when I saw your announcement for, I think it was your Series A, like, you kind of like branded yourself as for React apps specifically, but it sounds like that's not necessarily the case.
00:06:07 - Jeff Escalante
It sort of is. We're using that branding because everyone writes React apps. It's a very common, very popular thing. And if you use our React, or Next, or Remix, or whatever, like a Gatsby adapter or Redwood, yeah, or Redwood, we do have one for Redwood, it's just zero effort. You just drop it in. It's done. It's not only that, though. We have the layers built up such that we can add any other framework relatively easily by just adding an SDK for that framework that makes the developer experience smoother. We're talking to some mobile devs who are looking to make some hires there to say, if you want an iOS app that has the same type of zero-effort auth, we'll give you an SDK for that. So we have a foundation, and on top of that foundation is layer upon layer upon layer of convenience additions for each type of way that you could want to use it. So there's nothing that you couldn't use it in. It's just a question of how much work you have to do with any given thing.
00:07:06 - Anthony Campolo
And you have a lot of pre-built React components, which is pretty nice.
00:07:09 - Jeff Escalante
They're not even React components. Those components will render in pure JavaScript.
00:07:13 - Anthony Campolo
They're web components, right?
00:07:15 - Jeff Escalante
No they're not. No they're not.
00:07:19 - Anthony Campolo
Don't get me wrong, I'm confused. They're components that are not React and they're not web components. What are they?
00:07:25 - Jeff Escalante
Maybe they are React, actually, but they will render without React, if I'm not mistaken. Do you know more about this? I know that we render into a separate React root, even if you have a React app, because it gives you this kind of sandbox where you don't have conflicts between things. I know because I just did this the other day that you can not load any framework or library at all, load up a script tag that has Clerk in it, and render a full UI component that shows your user profile and settings and the sign-in and sign-up window and everything without any libraries.
00:07:56 - Dev Agrawal
I could be technically wrong here in some cases, but I believe it injects a new instance of React root.
00:08:06 - Jeff Escalante
I think we create a React root.
00:08:07 - Anthony Campolo
So whether you go to the app or not, if you go to the UI components in your docs, you pull in the Clerk React package.
00:08:14 - Jeff Escalante
You don't have to in order to render Clerk's UI.
00:08:17 - Anthony Campolo
Well, no, but, but I'm saying for the pre built components is what I'm talking about. Sign in, sign out, stuff like that.
00:08:23 - Dev Agrawal
Right. So if you're using something like React Router, or you're in a Remix or Next.js app, you can just npm install all the dependencies, import the components, render them. I believe what Jeff was talking about is that even if you're not npm installing your dependencies, you can just add a script tag and use that. That will make a window.Clerk global available to you, and you can literally just use that.
00:08:45 - Jeff Escalante
You don't have to be involved in React at all. You can just fire up a blank website, load the script, and it will render the UI for you. I think that the UI is built using React and it injects a copy of React, if I'm not mistaken. But it doesn't require you to also be using React for your app. It's just like a little sandbox.
00:09:02 - Anthony Campolo
That makes sense. I think from the docs that's not super clear. So you should create, like, a vanilla JS kind of example. That'd be my piece of advice.
00:09:11 - Jeff Escalante
Yes. Thank you, though. That is good advice. I was thinking exactly the same thing. I'm just kind of getting started. But yeah, I do think that it's important.
00:09:19 - Anthony Campolo
I like stomping Devrel, so I'm sorry.
00:09:21 - Jeff Escalante
No, no, no, it's good.
00:09:22 - Scott Steinlage
Anytime we have a guest on, he's like, by the way, your docs look like you need to do something right here.
00:09:26 - Anthony Campolo
Your docs do need work. Your docs are great. Like, your docs are extremely high quality. So, like, props to...
00:09:32 - Dev Agrawal
Except for these nitpicks that I'm about to do over the next 10 minutes.
00:09:36 - Anthony Campolo
But let's talk about your backends, though. You also have a whole bunch of different backend integrations. You've got, like, Fauna, Firebase, Graphbase, Hasura. So if you were to create your canonical Clerk example, what would be your stack that you would want to use? I'd be curious to get both your answers on this.
00:09:53 - Dev Agrawal
Want to take this one?
00:09:55 - Jeff Escalante
I don't know. I don't think that there's a canonical. So, yeah, I mean, we have a Next.js example that works really well. We have a raw React example that works really well. We have vanilla JS, like vanilla JS, I say as if it's a framework, examples that work well. I think Clerk's marketing is centered around React because there are so many people using it. As a small early-stage company, we want to be marketing towards the audience that we think is most receptive. But as for Clerk itself, it's not a React thing, and there's not any specific overall bias. And so I think as we continue to grow as a company, we'll continue broadening that messaging out to be like, it's great to use React, it's great to use this, it's great to use that. We're just trying to handle auth. Wherever you're trying to do auth, we want to take 100% of the work out of that. And I feel like, sorry for going back to Vercel again, but I feel like there's some parallels to Vercel in that the goal for Vercel, in my mind, is to give you zero-effort deployment.
00:10:58 - Jeff Escalante
I've deployed a lot of things throughout my career. I would set up something on...
00:11:01 - Anthony Campolo
a digital, one-click deploy kind of...
00:11:03 - Jeff Escalante
idea, but this is like: push the code to GitHub and you don't think about any ops at all. You don't have to set up a deployment script, you don't have to manage any of your servers. It's like deployment just completely exits from anything that you have to think about, and the whole problem's just gone, right? You push the code to GitHub, somebody else takes care of the rest. And that's sort of a similar type of aim that we're looking for with auth. You don't have to wire things up to APIs, you don't have to set up your own databases, you just drop in the library and the whole thing is done. If that's not what you want, you can customize it, obviously. But I think that's the most attractive point. It's just a truly zero-effort auth solution.
00:11:46 - Dev Agrawal
And it's not just auth. How many times are we building applications that one person is going to log in, do something, log out, and then leave? Like, how many times are we building something that people are going to share with each other, something in the application that people are going to collaborate on, people are going to create teams, workspaces, groups, and have shared resources in there? So we try to take care of all of that. Multi-tenancy was really the biggest thing that attracted me toward Clerk the first time I saw it.
00:12:17 - Anthony Campolo
Let's talk about that then, because that's a topic that is fairly high-level, even just the term itself. Why did that specifically compel you?
00:12:27 - Dev Agrawal
So for the last three or four years, most of the apps that I've built in my life have been multi-tenant in some way.
00:12:35 - Anthony Campolo
You define the term?
00:12:36 - Dev Agrawal
Yeah. So multi-tenancy is when, if you're building an application or a product, your target user is not just a group of users that share with each other and share resources with each other, but multiple different groups of individuals. That can be companies, that can be organizations, it can be specific teams, it can be groups of friends or families that have some shared resources. So if you're building something for that kind of audience, where you have these groups of individuals that share data between them but not among the other groups all the time, I define that as multi-tenancy.
00:13:23 - Jeff Escalante
And that's a big part of our offering currently. So you can create organizations, multiple ones. People can be members of organizations, orgs...
00:13:32 - Scott Steinlage
in orgs and orgs.
00:13:33 - Jeff Escalante
Orgs on top. Orgs on top of orgs. Yeah, yeah, yeah.
00:13:36 - Dev Agrawal
Like Slack, Discord. Those are the canonical examples of multi-tenant apps, yeah.
00:13:42 - Scott Steinlage
Super deep.
00:13:43 - Jeff Escalante
We've started thinking about like billing, like integration stuff too, which I'm very excited about.
00:13:48 - Scott Steinlage
Any hints?
00:13:49 - Anthony Campolo
Say more?
00:13:50 - Jeff Escalante
Don't steal our ideas on that.
00:13:53 - Scott Steinlage
I mean, share what you can.
00:13:54 - Jeff Escalante
I mean, I think it's probably coming relatively soon. Soon, I'm hoping. But the concept is, if you have an account, you're building an app with authentication, oftentimes a natural next step for you as the person building the app is to figure out how I can make this financially viable, right? You're paying for servers, you're paying for the time of people building the apps. And so oftentimes you have to charge people for something, whether it's a membership, a subscription, a pro tier, or something like that.
00:14:25 - Scott Steinlage
Got it.
00:14:26 - Jeff Escalante
And so adding in capabilities like that is something that we're... I mean, that's on our public roadmap.
00:14:31 - Scott Steinlage
Connecting to Stripe API or something.
00:14:34 - Jeff Escalante
It would just be something that was built in and zero effort, like add-in plans. We'd give you a page for that. We'd render the UI and you'd be able to just have that be part of your thing. It's just another...
00:14:45 - Scott Steinlage
But you could choose like you can
00:14:48 - Jeff Escalante
make your own plans and customize how they would be.
00:14:50 - Scott Steinlage
Right. But I'm saying you can choose your processor.
00:14:53 - Jeff Escalante
I don't know, we haven't gotten that.
00:14:54 - Scott Steinlage
Well, you should. Don't. Don't make it you guys. No, nobody's gonna use it.
00:14:59 - Anthony Campolo
Sorry.
00:14:59 - Jeff Escalante
I mean, we don't do payment processing.
00:15:02 - Scott Steinlage
I'm saying if you did.
00:15:03 - Anthony Campolo
Right.
00:15:03 - Scott Steinlage
I'm saying if you, if you. I didn't know. But I'm saying give the opportunity for multiple different things.
00:15:10 - Jeff Escalante
That's good feedback.
00:15:12 - Scott Steinlage
Yeah, I've been in e-commerce and I've been in... I worked for ClickFunnels for like three years, and we had many different integrations when it came to payment methods. And that's why so many people use it, because a lot of people don't want to drop what they've been with for 10 years just because you only have something.
00:15:27 - Anthony Campolo
Right.
00:15:27 - Jeff Escalante
Yeah. I think we'll probably start with limited options.
00:15:30 - Scott Steinlage
Oh sure.
00:15:30 - Jeff Escalante
You got to start somewhere, expand from there. And it's sort of the same way that Clerk is overall, right? We start focusing in one area where we know most people will be, and then we expand.
00:15:39 - Anthony Campolo
I mean, 80/20 rule, right?
00:15:40 - Scott Steinlage
There's a couple, right?
00:15:41 - Anthony Campolo
Exactly. There's a couple.
00:15:42 - Scott Steinlage
Very big ones.
00:15:43 - Colin
Yeah, right.
00:15:44 - Scott Steinlage
Not to go down a rabbit hole, but it's like [unclear], Stripe, you know, anyway.
00:15:48 - Dev Agrawal
But like that.
00:15:49 - Jeff Escalante
I think it would be nice. Feedback's welcome on whether that would be something that would be useful for folks who are listening or who are here.
00:15:55 - Scott Steinlage
But sure, yeah. And it's not just my opinion that matters, right?
00:15:57 - Jeff Escalante
Yeah.
00:15:58 - Dev Agrawal
But that again connects with the broader point, which is that we try to cover more than just simple authentication. Multi-tenancy is a part of it, billing is a part of it. The other thing that I'm looking at right now is authorization. So there's a distinction between authentication and authorization.
00:16:15 - Anthony Campolo
I was going to ask about that, actually. So authentication is: are you who you say you are? And then authorization is: do you have the permissions to access what you want to access? So what's the authorization story for Clerk?
00:16:31 - Dev Agrawal
So currently, once you enable multi-tenancy, or you don't have to enable it, you just have to literally add an organization switcher component, and you have personal workspaces, you can create new organizations, you can invite people. And within organizations you have the admin role and the member role. I believe it's just called the user...
00:16:52 - Anthony Campolo
Admin being the super-user can do whatever they want, and then the user can only do what you tell it it can do.
00:16:59 - Dev Agrawal
Correct. So for now, the permissions that an admin has simply means that you can add a new user, you can remove access, you can invite new people, and things like that. You can change someone else's role. But a regular user can only log into an organization, and that's it. They can be promoted to an admin, but those are the only two roles and the only permissions so far. We don't have custom roles, custom permissions, for anything specific to your application. So now we are looking into how do we integrate with either other services, or do we provide something on our own that lets you customize those roles, those permissions?
00:17:40 - Anthony Campolo
Okay, so what are we doing here? Are we bringing them on or not?
00:17:43 - Jeff Escalante
We can call him and bring them on. I feel like this is right.
00:17:45 - Scott Steinlage
Anthony won't be able to hear him. So Anthony, you should just take this.
00:17:48 - Jeff Escalante
All right. You want to make the call? Do you want me to say a thing to, like, bring...
00:17:52 - Dev Agrawal
Is that being recorded?
00:17:53 - Scott Steinlage
Yeah. All right, it should be.
00:17:57 - Jeff Escalante
I can call whenever you want.
00:17:58 - Anthony Campolo
You want me to go do [unclear]?
00:18:00 - Scott Steinlage
through last time so I'm assuming he's going to bleed through again. If it doesn't, then we made the phone call for nothing.
00:18:07 - Anthony Campolo
See what happens.
00:18:09 - Dev Agrawal
There we go.
00:18:10 - Jeff Escalante
I can hear it now.
00:18:11 - Colin
Hello? Hello?
00:18:12 - Jeff Escalante
Oh, hey, what's going on? Can you, can you hear us?
00:18:16 - Colin
I can hear, if you're asking Colin that. Who am I on the line with?
00:18:21 - Anthony Campolo
You're on the line with Jeff, Dev, Scott and Anthony.
00:18:25 - Colin
Great, thanks for having me.
00:18:27 - Jeff Escalante
This is awesome.
00:18:28 - Scott Steinlage
I think it's recording because I can see the.
00:18:29 - Jeff Escalante
Okay, cool.
00:18:30 - Anthony Campolo
Thanks for being on, man.
00:18:31 - Jeff Escalante
Let's cut back in.
00:18:32 - Anthony Campolo
Why don't you introduce yourself?
00:18:34 - Colin
Hey, I'm Colin. I'm the co-founder of Clerk.com, and we do auth for React.
00:18:43 - Anthony Campolo
Oh, that's interesting. Is it only React?
00:18:48 - Colin
I mean, it's a lot more than React. I think most of our customers are using React, but technically the technology is all stack-agnostic, so you could make it work in anything.
00:18:58 - Jeff Escalante
We were just kind of getting into some of the details of what it is beyond just auth. Dev was talking about organizations and multi-tenancy. We were talking about the potential to add sort of billing integrations. Yeah, I was like, you know what, we should call Colin.
00:19:16 - Colin
Yep.
00:19:18 - Jeff Escalante
I bet he has something to say about this.
00:19:21 - Colin
Yeah, definitely. Anything you want me to dive into in particular?
00:19:25 - Anthony Campolo
I mean, I would be curious, in general, with authorization, are you locked into whatever back end you're using, or is the authorization kind of abstracted from that? Like, you're talking about row-level security and things like that. Is that kind of locked into whatever database you're using, or is that actually in the Clerk libraries themselves?
00:19:46 - Colin
The Clerk libraries are relatively thin, and so I guess what's actually happening when you're running auth on your backend, we're sending a JWT to your backend and you're just kind of looking at the claims in that JWT. All you really need is the public key to be able to verify that Clerk authored that JWT. You need to check that it hasn't expired yet. But then from there, inside the JWT is what user ID is making the request, if they're making it, and if they're making it on behalf of an organization, it'll tell you what the organization ID is.
00:20:24 - Anthony Campolo
So all of that is contained within the JWT itself.
00:20:28 - Colin
Exactly.
00:20:29 - Anthony Campolo
Fascinating. What if I wanted to use Clerk with something like MetaMask?
00:20:35 - Jeff Escalante
Yeah, softballing him.
00:20:38 - Anthony Campolo
That's not a softball. You bring up Web3, that is the opposite of a softball.
00:20:44 - Colin
So we support MetaMask, but then the mechanism for auth on your back end doesn't actually change. So, like, MetaMask will kind of do the point-in-time authentication while you're on the sign-in screen. But then from there Clerk is still responsible for setting and persisting the session and kind of conveying to your backend which user ID is making the request. You won't use the MetaMask wallet ID as a user ID. We'd still suggest you use a Clerk user ID. And there's a utility to that. It lets someone, in theory, attach multiple MetaMask wallets to a single account or attach their name and profile image to a MetaMask. So there's extra utility to the full Clerk user object. But yeah, the auth method doesn't actually change at all. So it's just a JWT with a user ID in it.
00:21:40 - Anthony Campolo
Scott just figured out how to plug in our fourth pair of headphones.
00:21:44 - Jeff Escalante
We were short one headphone pair.
00:21:47 - Anthony Campolo
Hell yeah.
00:21:47 - Jeff Escalante
We've just been hearing none of this.
00:21:49 - Anthony Campolo
All right, cool. Now we got everybody here. I want to actually take it back a couple steps. A question I had asked Jeff and Dev, which I'll be curious to get your take on. So the pitch, "don't roll your own auth," I think is pretty obvious, and I think we're all on board with that. But the question of why use Clerk over other auth solutions like an Auth0, where do you see your biggest value-add there?
00:22:14 - Colin
A lot of it is more in user management broadly rather than kind of just the sign-in screen. I think a lot of whether it's open source or Auth0 or some of our other competitors, they kind of look at the bounds of the problem as the sign-up and the sign-in. And I think where Clerk tends to shine is the full user object and all the things we add to it. And so, like, we give a whole user profile, and that has profile image, first name, last name. Someone can actually self-serve and set up 2FA, and all that stuff is just kind of baked in. Whereas when you use these other tools, you end up needing to do a lot of extra work. You might get the baseline integration relatively easily, but then you have to do a lot more work to kind of layer everything else on. That's what I'd say for just the simple comparison. But then I think there's also this down-the-road comparison, and we started on this already, and I think Dev, it sounds like, brought it up. We're starting to think about organization management.
00:23:14 - Colin
So if you're building a B2B SaaS, how can Clerk help you build the UI that is really pretty common across all B2B SaaSes of, hey, create an organization, invite your whole team, set your team's roles and permissions going forward? Like, we're going to add SAML to that, we're going to add billing to that. And so Clerk will have not just the information of, hey, who is the user, what is their organization, and what is their role in this organization, but also what plan is that organization on and what entitlements come with that plan. And that's kind of the first 75, 80% of the authorization question. Like, what is the user allowed to do? And ideally we can answer that question easily on both front end and backend, right? So not just should your backend allow this request, but can we provide a gate component in React that kind of decides in the first place, should we even show the button, dude? So that's the kind of stuff we're thinking about long-term, yeah.
00:24:12 - Anthony Campolo
Do you have a question, Scott?
00:24:14 - Scott Steinlage
No, I'm just super excited about it.
00:24:16 - Anthony Campolo
Actually, I did have one question that I'll pass back to the other three boys. What is your favorite React meta-framework, and why is it Redwood?
00:24:30 - Jeff Escalante
Bold question.
00:24:32 - Colin
I am actually very excited about the RSC exploration that Redwood's doing.
00:24:40 - Jeff Escalante
Yeah, that's the way right there. Is Redwood going to be the second framework to really put out RSCs?
00:24:48 - Anthony Campolo
I hope so. I was telling them to use RSC back in 2020.
00:24:53 - Colin
Well, they announced this in the last couple days, right?
00:24:57 - Anthony Campolo
Yeah, yeah, no, we have finally gone all in on RSC according to the blog post.
00:25:03 - Jeff Escalante
I think that's the right move.
00:25:04 - Anthony Campolo
Yeah, I agree.
00:25:06 - Colin
Yeah. I think that in general, the React community, you have to be really close to the separation of where React ends and where Next.js starts, I think, to realize just how much Next.js is dictating of that experience. And so I'm really excited to see what kind of ergonomics Redwood comes up with, because there's just so much room to play in. Like the router, for example, there's a lot of variation that they can still drive. And so I am indeed very excited to see where it lands, I think.
00:25:52 - Jeff Escalante
It's also important that they are in close contact with the React team for this because RSC is still being worked on. I mean, I have to acknowledge that it has been released as stable in Next.js, and I don't want to put myself too deep in the weeds here, but it still is in pretty early phases. And I think that as you're working on it, especially if you're doing something different than the way that Next.js did it, it's going to be important that the React team and the Redwood team are in good contact.
00:26:21 - Anthony Campolo
Well, I'm in.
00:26:22 - Jeff Escalante
Let me know if I can.
00:26:23 - Anthony Campolo
Dan's DMs.
00:26:25 - Dev Agrawal
I mean, you heard what I said, Jeff, and I'm working on a video on React Server Components, and I said in there that I wouldn't even consider RSCs bleeding edge just because there are so many ways to use it that we have no idea. Like, every opinion around React Server Components is wrapped around Next.js.
00:26:43 - Jeff Escalante
Right. And the thing is, when you run into these edges, you need to have a good collaboration with the React team itself because the architecture is still, still being figured out. I mean, I think that it's come a long way since it was announced more than two years ago as a theoretical architecture, for sure. And I witnessed that occurring during my time at Vercel. But there's still a lot that needs to be figured out, and I think it's really crucial that if you're working on RSCs, you need to have a really close feedback loop with the team that's working on React. I think that's the only thing that made it successful with Next.js, was that feedback loop. And so I hope that Redwood is able to get that same thing.
00:27:27 - Anthony Campolo
I'll bring that feedback to the team.
00:27:29 - Jeff Escalante
If I can help at all, let me know, please.
00:27:32 - Scott Steinlage
Awesome. I love collaboration.
00:27:35 - Jeff Escalante
I do too.
00:27:36 - Scott Steinlage
So good.
00:27:36 - Jeff Escalante
Me too.
00:27:37 - Scott Steinlage
That's what these conferences are for, folks. Yeah, man, I was super excited about just hearing you talk about the billing piece of it a little more in-depth because it just made some things click for me, just with my background. And I used to work for ClickFunnels for like three years. When I heard you say things like, oh, we'll know what the product is, we'll know what they're getting, we'll know when they need access to it or they don't need access to it, and that's huge, because a lot of membership things don't have either that functionality baked in, or they do, but it's not that great. So having that baked in at this level...
00:28:15 - Jeff Escalante
Yeah, it's like permissions and billing.
00:28:18 - Scott Steinlage
Yeah, it needs... I think it needs to be on...
00:28:21 - Jeff Escalante
that level for sure. It absolutely does.
00:28:23 - Scott Steinlage
I think that's so crazy. Why hasn't that been done before, you know? Well, I'm sure maybe it's... But it's, you know... Yeah, I think that's amazing because that also protects the creator, you know, the company who's creating the content as well. I mean, that's just incredible. It almost makes me start thinking of NFT stuff too, like all kinds of stuff that you could be using this for. But anyway, yeah, yeah, that's super cool. Super cool.
00:28:52 - Colin
It's funny too. It's very natural in hindsight, and I think React actually helps make this more clear. The last generation of APIs was very vertical-driven, where it was like Stripe, charge, and user email, or not user email, SendGrid email, Twilio SMS, whatever it was. But when you're thinking about building dev tools for React, it's like your abstraction is now the component. So Clerk isn't really so much a user object on the back end as much as we're like the user profile screen on the front end. And that's where the billing information normally lives, right? Either in the organization profile screen or it's in the user profile screen. And so because we're thinking about things in terms of React and just front-end UIs, it ends up feeling very natural.
00:29:50 - Jeff Escalante
And that's sort of the goal of the stack that I was talking about earlier. If we have a really strong foundational permissions and authorization and authentication model, we can then just pull that down into the way that each framework and architecture wants to work and give them that absolutely super-smooth experience for each vertical that we're working in. And right now, obviously, we're focusing on React, but there's nothing that's holding us to React, dude.
00:30:19 - Scott Steinlage
I mean this just makes me think of like my talk earlier with Makeswift.
00:30:22 - Jeff Escalante
Yeah, I was just like, that's awesome, dude. Love those.
00:30:25 - Scott Steinlage
If you would combine that, because they use React components for other stuff...
00:30:28 - Anthony Campolo
Right.
00:30:28 - Scott Steinlage
And you can customize your...
00:30:30 - Jeff Escalante
We talked to them about doing... What if you took...
00:30:31 - Scott Steinlage
Yeah, what if you took your components, put them in there.
00:30:34 - Jeff Escalante
[unclear].
00:30:35 - Scott Steinlage
And then it's like, shabam, Makeswift...
00:30:37 - Jeff Escalante
Makeswift is awesome. And I mean, there's no reason that you can't add Makeswift hooks to Clerk. Yeah.
00:30:44 - Scott Steinlage
I'm saying, what if they had allowed...
00:30:45 - Jeff Escalante
them to customize through a CMS how your login components look.
00:30:49 - Scott Steinlage
Exactly.
00:30:49 - Jeff Escalante
Your marketing team wants to have input into that.
00:30:51 - Scott Steinlage
Exactly. Because they definitely do.
00:30:53 - Jeff Escalante
Yep.
00:30:53 - Scott Steinlage
And what if they do?
00:30:55 - Jeff Escalante
Right.
00:30:56 - Dev Agrawal
If they exist.
00:30:57 - Jeff Escalante
Right? Yeah, yeah, yeah, yeah. We're working on that. It could be internally one person with 10 hats.
00:31:01 - Scott Steinlage
All right, so what if Makeswift has this cool library of almost, like, extensions, integrations, whatever you want to call them, that are React components from different companies, like Circle or whoever.
00:31:15 - Jeff Escalante
Sure, yeah. I think it's great co-marketing.
00:31:18 - Dev Agrawal
Did he just call out Circle?
00:31:19 - Scott Steinlage
I almost did, yeah.
00:31:20 - Jeff Escalante
Yeah. I mean, the logo said CircleCI. I mean, I think Makeswift's great. I think those folks I've known for a while, and I'm excited for the possibility for us to do something like that. Yeah, do some co-marketing, because figuring out how to open up portions of your app to non-technical editors is challenging.
00:31:43 - Scott Steinlage
This stuff excites me.
00:31:44 - Jeff Escalante
If you open everything up, it usually goes down the tubes because it just ends up being crazy. And if you open nothing up, then your dev team is just constantly hammered by requests from growth marketing and marketing to like make changes and make updates and make landing pages.
00:31:59 - Scott Steinlage
Oh, you're still gonna get that, you know.
00:32:01 - Jeff Escalante
Sure. But like neither of those two extremes is what you want. And so if you can find something in the middle where you give those editors the freedom to make changes with constraints, where things don't go super crazy, you can find yourself in this place where you're like at least the happiest medium you can get. Right. Of like reducing the impact on the dev team of like just doing rote changes for the sake of marketing as much as possible.
00:32:26 - Colin
Yeah.
00:32:26 - Jeff Escalante
While also ensuring that changes that are made by people who are not designers and not developers still end up being good. Right. And no shade on marketers. But like it's really hard to make changes to a website, big changes, when you don't have the background in design or in web development to do so. And it's easy to make mistakes and it's easy to let your kind of brand image slip when you know something rolls out that just went through a CMS and you're like, you know, this looks terrible.
00:32:53 - Scott Steinlage
Yeah.
00:32:54 - Jeff Escalante
Because trust me, I've been through this.
00:32:56 - Scott Steinlage
Sure.
00:32:56 - Jeff Escalante
Many, many times in my career, I've seen this happen and been like, how do you find that balance?
00:33:02 - Scott Steinlage
Yeah, it's really hard to. And it's really hard to make both
00:33:05 - Jeff Escalante
sides, and I think dialing that in is important, and there's no reason that Auth isn't part of that. Right. Auth is an important part of every app, so. So.
00:33:12 - Scott Steinlage
And I would also say that polarity is important at the same time, especially when it's coming from the point of selling your service.
00:33:21 - Anthony Campolo
Right?
00:33:21 - Scott Steinlage
Because if you're not polar, then you're not attracting anything.
00:33:24 - Jeff Escalante
I don't know what you're talking about, man. Sorry.
00:33:28 - Anthony Campolo
All right, explain.
00:33:30 - Scott Steinlage
All right.
00:33:30 - Jeff Escalante
You got to tell me more.
00:33:32 - Anthony Campolo
No worries.
00:33:33 - Jeff Escalante
Does anyone else know?
00:33:34 - Scott Steinlage
It's probably because I'm talking marketing.
00:33:36 - Colin
Yeah.
00:33:36 - Anthony Campolo
No, I don't know what polarity means in this.
00:33:39 - Jeff Escalante
So I'm not the only one, at least.
00:33:41 - Dev Agrawal
Yeah, you're not.
00:33:41 - Anthony Campolo
I know that polarity means there's a north pole and a south pole.
00:33:44 - Jeff Escalante
Okay.
00:33:45 - Scott Steinlage
And it attracts things.
00:33:46 - Jeff Escalante
Right.
00:33:46 - Scott Steinlage
Negative, positive, polar opposites. Right. And if you're a happy medium, right. And you're trying to make both sides happy, marketing and development, then you're not creating an attractiveness to either side. It's just a medium. So it's important to have the marketing piece to have polarity. And so you're gonna have to have two different stories, is what I'm saying. And marketing and storytelling is important.
00:34:09 - Jeff Escalante
Let me extend my thing. So I've done these experiments in previous roles where you empower marketing to build out full pages, right? You build out a structure and a set of components, and you're like, you can take these things and arrange them into pages so you can make a marketing landing page for something. ClickFunnels, yeah, right? And ultimately, I feel like one of the most effective ways to do marketing is to do a shitload of landing pages because you test out your messaging. A/B testing is fast, and you have different audiences that resonate with different messaging. And so you say, like, are you having trouble building out a custom authentication system? Two different stories.
00:34:49 - Scott Steinlage
Exactly.
00:34:50 - Jeff Escalante
Check this out. Or, like, do you have multiple different authentication systems, and it's hard for you to coordinate them? Those are two different, like, problem areas.
00:34:58 - Dev Agrawal
How many landing pages does the bagel shop have?
00:35:00 - Jeff Escalante
A lot. I mean, the thing is, you test out a huge number of different landing-page messages in your marketing, yep, absolutely. And then you measure which ones are effective to which verticals. And it's not for the point of collapsing on one marketing message. That's the best... you're going to have different ones. You have a bunch of different ones because people have different things that bring them into your product, because your product does a lot of different things. Absolutely. I do some marketing consulting, and oftentimes this is the primary pivot, that people try to do marketing by describing what their product does. And I say you flip that backwards and you say, what problems do people have that are causing them pain? There could be 5, 6, 10, 20 that all feed into something that your product does, and you present them with those problems.
00:35:44 - Scott Steinlage
Right, absolutely. And then you also have to take the vehicle...
00:35:51 - Jeff Escalante
Okay.
00:35:52 - Scott Steinlage
Which is what you have.
00:35:53 - Jeff Escalante
Yes.
00:35:53 - Scott Steinlage
Your service.
00:35:54 - Jeff Escalante
Yes.
00:35:55 - Scott Steinlage
And then you have internal and external beliefs that these people have, okay? Problems.
00:36:00 - Jeff Escalante
Yeah.
00:36:00 - Scott Steinlage
But ultimately, getting your service...
00:36:03 - Jeff Escalante
or product, trying to bring it back to the original.
00:36:06 - Anthony Campolo
Yeah, yeah, sure.
00:36:07 - Jeff Escalante
If you believe me, and that is a normal part of effective marketing, this means that your people who are working on your marketing are constantly churning out new pages and also constantly editing existing pages to massage the messaging and see how much of a difference that makes in bringing people into your product. If those people have no access to being able to make changes to your pages, this results in a torrent of tickets to your dev team, which takes up all their time and makes it hard for them to work on the actual product. And so you have to find some sort of middle ground in there. But if you just open the floodgates and say, here's a system that I've given you to piece together pages, what you end up with is subpar-quality pages coming out and being pushed in advertising campaigns that represent your brand. And as we all know, it's really important to have a super polished brand image because then people believe that you're a legitimate company that cares about quality and consistency and details, and that image in your marketing reflects the same quality in your product.
00:37:13 - Anthony Campolo
Yeah, but the developers aren't.
00:37:15 - Scott Steinlage
They aren't coming up with the polished look. They're coming up with the components. And then they, the marketing creates the polishing.
00:37:20 - Colin
Right.
00:37:21 - Jeff Escalante
I mean, but they don't, is the truth of the matter, right?
00:37:23 - Scott Steinlage
Well then who's gonna, who's gonna.
00:37:24 - Jeff Escalante
They end up piecing together these Frankenstein pages that are just horrible. So you have to be very careful. I mean, I've seen the world here. I've seen people paste a giant paragraph into the headline...
00:37:35 - Colin
Yeah.
00:37:36 - Jeff Escalante
area. And if you didn't have a character limit on your headline, they're like, great, this works, bang, they send it out because they're not designers, you know? And so they're like, this is the text I wanted to put here and it's done.
00:37:47 - Scott Steinlage
Well, you got the wrong person in the wrong job.
00:37:48 - Jeff Escalante
I've seen people upload images from a DSLR camera to a blog post, and it's 10 megabytes.
00:37:55 - Scott Steinlage
Yeah, well, yeah, they don't know what they don't know.
00:37:57 - Jeff Escalante
And then they say, hey, why does this blog post take 10 seconds? Compress it.
00:38:02 - Scott Steinlage
Okay.
00:38:02 - Jeff Escalante
Yeah, but that's why you need to be very careful what you allow people to edit and what you don't allow them to edit. And when you allow people to edit things, you have to put in place constraints that make sure they can't fuck things up for themselves. Yeah, yeah, sorry. I've been way too...
00:38:15 - Scott Steinlage
No, I love that. This is. This is my jam.
00:38:17 - Jeff Escalante
Okay.
00:38:17 - Scott Steinlage
Yeah, I love this stuff.
00:38:20 - Jeff Escalante
It's turned into, like, a Makeswift promotion.
00:38:23 - Dev Agrawal
I was just gonna say that.
00:38:25 - Jeff Escalante
Sorry.
00:38:26 - Scott Steinlage
No, I was like, yeah, I mean, it's a great product. So anyway, for sure. Awesome. Colin, you still there?
00:38:33 - Jeff Escalante
Yeah. Are you actually here?
00:38:35 - Colin
I'm here, yeah. Hanging out.
00:38:37 - Jeff Escalante
Okay, cool. You have any more, Colin?
00:38:40 - Colin
Should I go?
00:38:40 - Scott Steinlage
Oh, I mean, Anthony, do you have anything else to say?
00:38:43 - Anthony Campolo
Anything else you want to let our listeners know about Clerk that we haven't already covered?
00:38:48 - Colin
Not really. Not to undersell Clerk, but I think our biggest value is just getting you going and getting out of the way, right? Get set up in five minutes, and then you're focusing on the rest of your app.
00:39:00 - Anthony Campolo
So if someone wants to get started with Clerk, where would they go and what would they do?
00:39:03 - Colin
Just Clerk.com. After they sign up and create an application, there's links for the meta-framework of their choice, and that'll push you to a tutorial to get started.
00:39:13 - Scott Steinlage
Yes.
00:39:14 - Anthony Campolo
Awesome. Well, thank you so much for joining us. It was a real pleasure.
00:39:18 - Scott Steinlage
Yeah, thanks.
00:39:18 - Colin
Thanks for having me.
00:39:19 - Scott Steinlage
Thanks for taking the call.
00:39:20 - Colin
Bye.
00:39:24 - Anthony Campolo
Cool. We could probably start closing it out here. Dev, talk about streaming.
00:39:30 - Dev Agrawal
Talk about streaming. I started streaming in April. It's been pretty fun. I started streaming as a way to work on my projects live, as a way to make myself more accountable for them.
00:39:41 - Anthony Campolo
I hear you have Serverless Sunday and Framework Friday.
00:39:47 - Dev Agrawal
Yes. So those are two things that I'm trying to maintain.
00:39:50 - Anthony Campolo
What do you do on Thursday?
00:39:52 - Dev Agrawal
On Thursday, I just chill and make videos.
00:39:57 - Jeff Escalante
Call them out.
00:39:59 - Scott Steinlage
Today's Thursday.
00:40:01 - Dev Agrawal
If only.
00:40:03 - Scott Steinlage
It is.
00:40:03 - Dev Agrawal
If only I like alcohol that much.
00:40:05 - Jeff Escalante
That's my point.
00:40:06 - Anthony Campolo
So if someone wanted to watch you stream, where would they go?
00:40:10 - Dev Agrawal
I'm not gonna try to say my Twitch username here. It's too long. Put it in the notes, put it in the description.
00:40:16 - Scott Steinlage
You need to get a URL. You...
00:40:19 - Anthony Campolo
need a dev.live. That's what you need.
00:40:22 - Dev Agrawal
I have a devagr.me. I'm going to update that to have all my links in there.
00:40:26 - Anthony Campolo
devagr.me.
00:40:28 - Jeff Escalante
Yeah, we need dev.dev.
00:40:29 - Scott Steinlage
Yes.
00:40:30 - Jeff Escalante
Who's going to, who's going to sell it to you?
00:40:32 - Dev Agrawal
I have no idea.
00:40:33 - Jeff Escalante
We gotta make some... Clerk's gonna charge dev.dev. Let's go.
00:40:39 - Scott Steinlage
Clerk now owns you.
00:40:42 - Dev Agrawal
Yeah, but I have clerks.
00:40:44 - Jeff Escalante
I imagine that was probably a significant investment.
00:40:47 - Scott Steinlage
I'm sure.
00:40:47 - Jeff Escalante
But you know what? You need it.
00:40:49 - Colin
Yeah.
00:40:49 - Jeff Escalante
Because otherwise people just mistype your URL.
00:40:51 - Scott Steinlage
all the time and you need the mistyped ones too.
00:40:54 - Jeff Escalante
That's true. I remember getting all of the mistyped URLs at HashiCorp. We got hash-a-corp and, like, yeah, we had like 20 different URLs, and Vercel got...
00:41:07 - Dev Agrawal
Vercelona at some point.
00:41:08 - Jeff Escalante
Yeah, we got that one. I remember at every high-growth company, somewhere around the 300-employee mark, they're like, ah, it's time to buy up all the mistyped domains. Maybe we can beat the curve and get it before we even get to 100 employees.
00:41:22 - Scott Steinlage
Before somebody else.
00:41:23 - Anthony Campolo
Where do you stream?
00:41:24 - Jeff Escalante
I do not stream.
00:41:26 - Anthony Campolo
You don't stream?
00:41:27 - Jeff Escalante
I do not stream.
00:41:27 - Anthony Campolo
How else may I get my hot takes on Vercel?
00:41:29 - Jeff Escalante
You can just reach out.
00:41:30 - Scott Steinlage
I want to watch you make bagels.
00:41:31 - Jeff Escalante
You can reach out to me on Twitter. You can watch me make bagels.
00:41:34 - Dev Agrawal
You should livestream making bagels.
00:41:35 - Jeff Escalante
I could live stream making bagels. That'd be fun.
00:41:37 - Anthony Campolo
No, I just want to know why Jamstack is the best stack.
00:41:40 - Jeff Escalante
Okay, you want to know that?
00:41:43 - Anthony Campolo
I guess.
00:41:46 - Scott Steinlage
I thought we were wrapping this up.
00:41:49 - Anthony Campolo
I want to know why I should make good websites. That's what I want to know.
00:41:53 - Jeff Escalante
That one kind of went down the
00:41:54 - Anthony Campolo
tubes, but yeah, that community failed hard.
00:41:57 - Jeff Escalante
I told everyone I was not going to put any work.
00:42:01 - Anthony Campolo
I'm going to build this community and put no effort into it and it's going to be great.
00:42:05 - Jeff Escalante
I was like, someone else has to be the one who does the work.
00:42:08 - Anthony Campolo
Someone tried to do the work. It doesn't matter. There's more than work involved in building
00:42:12 - Dev Agrawal
a community at this point.
00:42:14 - Jeff Escalante
What is involved?
00:42:15 - Anthony Campolo
To me, it's having something worth coming to.
00:42:18 - Jeff Escalante
Okay. Okay. Well, we were working on that. We almost had a conference at some point, but yeah, there you go.
00:42:23 - Anthony Campolo
You gotta have the value.
00:42:24 - Jeff Escalante
The value.
00:42:26 - Anthony Campolo
Anyway, where can people find you on Twitter?
00:42:28 - Jeff Escalante
You can find me on Twitter at J, E S C A L A
00:42:32 - Scott Steinlage
N. There you go.
00:42:33 - Anthony Campolo
[unclear].
00:42:34 - Jeff Escalante
That's the one.
00:42:35 - Dev Agrawal
You can find me on Twitter at D E V A G R A W A L 0 9 0. It's gonna be... yes, it's my date of birth.
00:42:45 - Anthony Campolo
You know, you were born 2009.
00:42:47 - Dev Agrawal
You couldn't get it. May 9th.
00:42:53 - Jeff Escalante
He is 12.
00:42:55 - Dev Agrawal
That's why I said date.
00:42:56 - Colin
I know.
00:42:57 - Dev Agrawal
Yeah, there was a phase when everyone put the date they were born in...
00:43:03 - Jeff Escalante
Sure.
00:43:03 - Dev Agrawal
Username.
00:43:04 - Anthony Campolo
I think that happens every year.
00:43:05 - Jeff Escalante
And still keep the username. There's someone taken here.
00:43:08 - Dev Agrawal
I've tried a bunch of different variations of names.
00:43:11 - Scott Steinlage
He's got too much clout.
00:43:12 - Jeff Escalante
Yeah. Everybody's ripping him off, man.
00:43:14 - Anthony Campolo
He's a clout chaser.
00:43:15 - Jeff Escalante
You're gonna have to buy it.
00:43:17 - Dev Agrawal
I wanted dev.dev at some point, but [unclear].
00:43:21 - Scott Steinlage
I'm gonna go buy Dave dot Dave for like Dave. I'm gonna buy it.
00:43:25 - Dev Agrawal
That's not a TLD.
00:43:28 - Jeff Escalante
Let's go.
00:43:31 - Scott Steinlage
I'm gonna buy dev.dev and then I'm gonna charge you, like, $1.25 million for it.
00:43:35 - Jeff Escalante
1.25. That's the number. That's.
00:43:37 - Scott Steinlage
That's it, bro.
00:43:38 - Jeff Escalante
That's the final offer.
00:43:39 - Scott Steinlage
All you need.
00:43:40 - Anthony Campolo
All right, let's get dinner. All right.
00:43:44 - Scott Steinlage
Thank you all so much for joining us, as always. We love you and we'll see you
00:43:48 - Anthony Campolo
in the next one.
00:43:50 - Jeff Escalante
Peace.
00:43:57 - Scott Steinlage
This is gonna get cut out anyway.
00:43:59 - Dev Agrawal
Blah, blah.
00:44:04 - Anthony Campolo
Yeah.
00:44:07 - Jeff Escalante
All right. Well, it was something.
00:44:09 - Dev Agrawal
Something.