<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: colinclerk</title><link>https://news.ycombinator.com/user?id=colinclerk</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 07 May 2026 14:27:08 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=colinclerk" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by colinclerk in "From Supabase to Clerk to Better Auth"]]></title><description><![CDATA[
<p>Clerk cofounder here - appreciate the feedback and forwarding to the mobile team!</p>
]]></description><pubDate>Thu, 07 May 2026 01:26:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48044312</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=48044312</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48044312</guid></item><item><title><![CDATA[New comment by colinclerk in "From Supabase to Clerk to Better Auth"]]></title><description><![CDATA[
<p>Clerk cofounder here: I hope this isn’t a Clerk stakeholder! It’s definitely misaligned with our culture around not speaking about competitors and instead playing our own game.</p>
]]></description><pubDate>Thu, 07 May 2026 01:20:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=48044279</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=48044279</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48044279</guid></item><item><title><![CDATA[Client Trust: Clerk's free credential stuffing killer]]></title><description><![CDATA[
<p>Article URL: <a href="https://clerk.com/changelog/2025-11-14-client-trust-credential-stuffing-killer">https://clerk.com/changelog/2025-11-14-client-trust-credential-stuffing-killer</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45920469">https://news.ycombinator.com/item?id=45920469</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 13 Nov 2025 21:00:29 +0000</pubDate><link>https://clerk.com/changelog/2025-11-14-client-trust-credential-stuffing-killer</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=45920469</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45920469</guid></item><item><title><![CDATA[New comment by colinclerk in "Stripe V2"]]></title><description><![CDATA[
<p>I wrote the tweet that Brandur quoted...<p>I think the bigger shifts are that developers use Checkout more, and complete more admin tasks in Stripe's Dashboard. By providing end-user UX (for both customers and backoffice), Stripe has reduced the API surface area that most developers need to consume. These changes end up having no impact on them.</p>
]]></description><pubDate>Mon, 30 Dec 2024 01:35:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=42545499</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=42545499</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42545499</guid></item><item><title><![CDATA[Easie SSO (SAML Alternative over Google/Microsoft OIDC)]]></title><description><![CDATA[
<p>Article URL: <a href="https://easie.dev">https://easie.dev</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42217278">https://news.ycombinator.com/item?id=42217278</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 22 Nov 2024 20:52:48 +0000</pubDate><link>https://easie.dev</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=42217278</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42217278</guid></item><item><title><![CDATA[New comment by colinclerk in "Comparing Auth from Supabase, Firebase, Auth.js, Ory, Clerk and Others"]]></title><description><![CDATA[
<p>Appreciate that. We have many thousands of apps like yours on the platform, and I’m glad to hear the free plan is working for you.<p>Forgetting about your auth provider is indeed the dream!</p>
]]></description><pubDate>Wed, 23 Oct 2024 17:56:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=41927589</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=41927589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41927589</guid></item><item><title><![CDATA[New comment by colinclerk in "Comparing Auth from Supabase, Firebase, Auth.js, Ory, Clerk and Others"]]></title><description><![CDATA[
<p>Cofounder of Clerk. I agree - our pricing has been significantly reduced since this was written (partially in response to this post)<p>We do intend to build more products, but if you're using us for pureplay auth we shouldn't cost 1% of revenue at scale.<p>(As far as I know, we don't cost 1% at any scale, except very early startup days pre-revenue who opt not to use our free plan.)</p>
]]></description><pubDate>Wed, 23 Oct 2024 17:39:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=41927386</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=41927386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41927386</guid></item><item><title><![CDATA[New comment by colinclerk in "Comparing Auth from Supabase, Firebase, Auth.js, Ory, Clerk and Others"]]></title><description><![CDATA[
<p>Cofounder of Clerk here - we dramatically lowered our prices starting December 2023:
<a href="https://clerk.com/blog/new-pricing-plans" rel="nofollow">https://clerk.com/blog/new-pricing-plans</a><p>10,000 MAUs are now included in every plan.  We also now offer "First Day Free", so if a user churns in their first 24 hours after signing up, they are never counted as active. For GenAI, this has led to 60-70% of sign ups never being charged as active users.</p>
]]></description><pubDate>Wed, 23 Oct 2024 17:13:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=41927132</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=41927132</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41927132</guid></item><item><title><![CDATA[New comment by colinclerk in "[dead]"]]></title><description><![CDATA[
<p>Fun!<p>I just put our logo up.  It took me two tries before it took, so maybe a twodollarhomepage :)<p>What's the stack?</p>
]]></description><pubDate>Wed, 16 Oct 2024 07:57:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=41856668</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=41856668</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41856668</guid></item><item><title><![CDATA[New comment by colinclerk in "Launch HN: Stack Auth (YC S24) – An Open-Source Auth0/Clerk Alternative"]]></title><description><![CDATA[
<p>Cofounder of Clerk here - we definitely want free plan users to be aware of this limitation - any suggestions to improve visibility?<p>On <a href="https://clerk.com/pricing" rel="nofollow">https://clerk.com/pricing</a> , “Customizable session duration” is listed as a primary benefit of the pro plan, and in the chart we show that the free plan is “Fixed to 7 days”<p>Apologies we failed to make it clear before you started, that’s definitely not intended. We thought this was a good limitation for the free plan because it doesn’t impact your ability to learn if your product is resonating. If it is, and our default doesn’t work for your app, then we hope you can upgrade now that your product is validated. (It’s maybe worth mentioning that the default of 7 days was selected by copying Google’s session lifetime, also not meant to be nefarious.)</p>
]]></description><pubDate>Fri, 09 Aug 2024 14:57:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=41202484</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=41202484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41202484</guid></item><item><title><![CDATA[New comment by colinclerk in "Mitigating OAuth's recently discovered Open Response Type vulnerability"]]></title><description><![CDATA[
<p>Hey - cofounder of Clerk here<p>Glad we were able to mitigate this one for our customers, but have also been a bit surprised this vulnerability hasn't been generating more chatter.<p>tl;dr: if you use Google OAuth, any XSS on your site can likely be chained into a long-lived account takeover. In a roundabout way, it works around the protections afforded by HttpOnly cookies.<p>You can mitigate by always redirecting to a URL with an empty fragment (#) if your oauth callback URL experiences any failure.</p>
]]></description><pubDate>Wed, 07 Aug 2024 17:54:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=41183697</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=41183697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41183697</guid></item><item><title><![CDATA[Mitigating OAuth's recently discovered Open Response Type vulnerability]]></title><description><![CDATA[
<p>Article URL: <a href="https://clerk.com/blog/open-response-type-vulnerability">https://clerk.com/blog/open-response-type-vulnerability</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41183585">https://news.ycombinator.com/item?id=41183585</a></p>
<p>Points: 7</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 07 Aug 2024 17:41:48 +0000</pubDate><link>https://clerk.com/blog/open-response-type-vulnerability</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=41183585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41183585</guid></item><item><title><![CDATA[New comment by colinclerk in "Ask HN: Who is hiring? (March 2024)"]]></title><description><![CDATA[
<p>Answering 2 first because it's easier: Yes.<p>1. It's a great question and we're still learning the answer. But, I believe the approach is ~95% compatible, and the last 5% just needs tweaking on the margins vs a major overhaul. Let me try to explain...<p>First: SSR definitely makes the framing of "frontend api" vs "backend api" very confusing. So ignore that, and think of it purely as "api authenticated with a session token" vs "api authenticated with a secret key."<p>I think authenticating via session token is the key to enabling faster development with Clerk than tools like Auth0 (or even Stripe/Twilio/etc). The reason why is that it shifts the problem of _authorization_ from our customer's backend to Clerk's backend.<p>As an example, consider a user updating their email...<p>In the past, you would build a frontend for collecting their new email, send it to your backend, ensure that the user is updating their own name (the authorization step), then forward the update along to your account system (Auth0, your own database, whatever).<p>With Clerk, you build a frontend for collecting their new email, then send it straight to Clerk to handle the update with the user's session token. We are responsible for ensuring the update is to the users own account, and there's no requirement to hop to your backend to relay the secret key.<p>In the end, that hop to the backend and authorization check is responsible for a lot of the "clunk" that Clerk eliminates. And ultimately, SSR doesn't change our ability to make things easier – we can authenticate our API with a session token just-as-well during SSR as we can from the frontend.<p>This feels like a paradox, right? A session token has such limited power compared to secret key, so <i>surely</i> it can't be used to build an easier API. But in practice, confidently knowing which user is making the request is necessary for shifting the authorization step to our service.<p>I'd add that this idea isn't particularly novel. Stripe Checkout depends on a Checkout<i>Session</i> object, which you initialize by passing in the active user's ID. So there, you see that Stripe having the active user's ID enables them remove a ton of steps for building a checkout. Implicitly, under-the-hood Checkout relies on an API that uses a session token for authentication.<p>We just took the idea one step further and are exposing the API, instead of only using it to power a single, fairly rigid UI. With Clerk, developers can use React Hooks to build their own UI.<p>---<p>Now, regarding the 5% that we still need to figure out. It pertains exactly to the currentUser() and currentOrg() functions you're calling out. Those <i>are</i> compatible, but they require some extra thoughtfulness.<p>As an example, Clerk's User object has a field called "privateMetadata". From the backend, it's completely okay for currentUser() to return this private data, but Clerk needs to make sure it doesn't leak to the frontend.  That creates some oddities - the User object on frontend is different than on backend, and I don't think we've really nailed the ergonomics / education on this part yet. But it generally feels like a solvable problem.</p>
]]></description><pubDate>Fri, 01 Mar 2024 19:54:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=39566070</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=39566070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39566070</guid></item><item><title><![CDATA[New comment by colinclerk in "Ask HN: Who is hiring? (March 2024)"]]></title><description><![CDATA[
<p>Clerk | Frontend & Backend SWE | Remote or in-person in SF<p>Clerk is hiring frontend and backend engineers, remote or in-office in San Francisco<p>We build developers tools for authentication. We're known for our React components like SignIn and UserProfile that "just work" when they're added to the page.<p>Our components are powered by a new type of API: a frontend-facing API that relies on session tokens for authorization, instead of a backend-facing API that relies on a secret key.<p>We've found this pattern unlocks a new level of efficiency. Developers can implement Clerk faster than traditional APIs because it comes built-in with UX and UI. To learn more about the approach, see our talk on A Component is Worth a Thousand APIs:<p><a href="https://www.youtube.com/watch?v=enUuBY3HXh4" rel="nofollow">https://www.youtube.com/watch?v=enUuBY3HXh4</a><p>We're especially excited to work with engineers who are thoughtful about speed and craft. Clerk is defining the gold standard for components-as-a-service, and we are constantly searching for new ways to evolve and improve our approach. Apply here:<p><a href="https://jobs.ashbyhq.com/Clerk/308e77a2-872b-4835-aaf3-532bb44f4e76">https://jobs.ashbyhq.com/Clerk/308e77a2-872b-4835-aaf3-532bb...</a><p>Separately, I'm one of Clerk's cofounders, and I'll be watching this thread through the day if I can be help with any questions. Or feel to email me (colin@ our domain)</p>
]]></description><pubDate>Fri, 01 Mar 2024 16:01:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=39562999</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=39562999</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39562999</guid></item><item><title><![CDATA[New comment by colinclerk in "Passage by 1Password: Add passkey support to your app or website"]]></title><description><![CDATA[
<p>Does the crowd on HN expect passkey support to become more ubiquitous in the future, similar to Google OAuth today?<p>I’ve been surprised at how few sites seem to be adopting rapidly since there are UX gains, but I suppose Google had a fairly slow trajectory as well.</p>
]]></description><pubDate>Thu, 18 May 2023 14:37:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=35988593</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=35988593</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35988593</guid></item><item><title><![CDATA[New comment by colinclerk in "Twilio’s toll fraud problem"]]></title><description><![CDATA[
<p>If anyone's facing this in their auth flows, we're happy to help at <a href="https://clerk.dev" rel="nofollow">https://clerk.dev</a><p>We're in the same cat-and-mouse game with the attackers as everyone else, but since we're an auth company, we have full-time folks monitoring for issues and resolving when they come up.<p>It's worth mentioning that Twilio is in an understandably tough position here. They only receive API requests from your server, and real requests look the same as attack requests except for the phone number.<p>Clerk is in a better position to help because our API accepts traffic directly from the attacker (e.g. POST /verify-phone-number). We know their IP, user agent, whether they're connecting from AWS, etc, etc. We very much rely on this data to help stop them.</p>
]]></description><pubDate>Thu, 05 Jan 2023 21:05:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=34266565</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=34266565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34266565</guid></item><item><title><![CDATA[New comment by colinclerk in "Tell HN: Stytch Login SaaS Unicorn has common auth vulnerabilities"]]></title><description><![CDATA[
<p>SameSite=Lax plus CORS does the trick.<p>Block requests where origin=helpdesk.mysite.com.<p>Also, since you're concerned about subdomain attacks, make sure you set the cookie on a subdomain rather than the naked domain to prevent it from leaking.<p>Edit: you <i>can</i> put it on the naked domain if your app is on the naked domain. If you do that, do not set the Domain= attribute in your Set-Cookie because that will cause it to leak to subdomains.</p>
]]></description><pubDate>Tue, 11 Oct 2022 16:42:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=33165534</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=33165534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33165534</guid></item><item><title><![CDATA[New comment by colinclerk in "Let's stop arguing about JWTs and just fix them"]]></title><description><![CDATA[
<p>I don’t agree that the complex system is mediocre.<p>I like it because it’s faster and it’s enabling more powerful integrations.<p>We (Clerk) abstracted away the complexity so it’s just an implementation detail, and think other tools should do the same instead of letting developers trip over the hazards.</p>
]]></description><pubDate>Thu, 06 Oct 2022 02:23:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=33103591</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=33103591</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33103591</guid></item><item><title><![CDATA[Let's stop arguing about JWTs and just fix them]]></title><description><![CDATA[
<p>Article URL: <a href="https://clerk.dev/blog/lets-stop-arguing-about-jwts-and-just-fix-them">https://clerk.dev/blog/lets-stop-arguing-about-jwts-and-just-fix-them</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=33102911">https://news.ycombinator.com/item?id=33102911</a></p>
<p>Points: 5</p>
<p># Comments: 2</p>
]]></description><pubDate>Thu, 06 Oct 2022 00:26:18 +0000</pubDate><link>https://clerk.dev/blog/lets-stop-arguing-about-jwts-and-just-fix-them</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=33102911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33102911</guid></item><item><title><![CDATA[New comment by colinclerk in "Go Auth Lib"]]></title><description><![CDATA[
<p>Usually people experience this when they're using a React frontend that's served from a CDN, while the backend is served from a separate service.<p>If that's the case, the pattern you're describing is pretty normal and not an inherent cause for concern.<p>If you really want to workaround it, you can do this:<p>First, host your backend and your frontend from the same origin, so the initial window navigation includes the httpOnly cookie (make sure your cookie is set to SameSite=Lax, NOT SameSite=Strict).  Then, before the CDN serves your static content, run some middleware to ensure the httpOnly cookie is valid, and add some kind of marker to the page body to indicate they're signed in (or redirect away if they're signed out).<p>The not-so-trivial part is running middleware in front of the CDN, but that's possible with things like Cloudflare Workers, and these days it's built-in to Next.js for most hosts.<p>For this approach you'll also want to make sure you can check cookie validity quickly at the edge, or else you'll be slowing down your CDN a lot.</p>
]]></description><pubDate>Mon, 03 Oct 2022 03:24:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=33063155</link><dc:creator>colinclerk</dc:creator><comments>https://news.ycombinator.com/item?id=33063155</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33063155</guid></item></channel></rss>