skip to content
Podcast cover art for Dont Roll Your Own Auth with Clerks Dev Agrawal and Jeff Escalante
Podcast

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

Open .md

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.

On this pageJump to section