Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
55e340c
chore(clerk-js, shared): Expose `useCheckout` as experimental
panteliselef Jun 24, 2025
f000508
wip nested useCheckout
panteliselef Jun 24, 2025
1689aac
wip singleton checkout
panteliselef Jun 24, 2025
a1cea14
remove singleton
panteliselef Jun 25, 2025
f46e630
flatten properties
panteliselef Jun 25, 2025
ffbbd05
remove duplicate code from mutation methods
panteliselef Jun 25, 2025
6d6d527
wip
panteliselef Jun 25, 2025
87d3e6a
derive state in manager
panteliselef Jun 25, 2025
752a244
introduce CheckoutProvider
panteliselef Jun 25, 2025
24a22f0
refactor subscribe of useSyncExternalStore
panteliselef Jun 25, 2025
f3e2c79
create vanilla js api
panteliselef Jun 26, 2025
17e54ed
export useCheckout to nextjs
panteliselef Jun 26, 2025
2e1a850
fix isomorphicClerk.ts
panteliselef Jun 26, 2025
e1ed2c7
track inflight requests
panteliselef Jun 26, 2025
ba5f4bc
Merge branch 'refs/heads/main' into elef/com-960-useCheckout
panteliselef Jun 27, 2025
6b275b5
expose `getState()` from useCheckout
panteliselef Jun 27, 2025
f563d05
mark checkout as experimental and cleanup
panteliselef Jun 27, 2025
078e5db
add unit tests for manager
panteliselef Jun 27, 2025
61fe81d
experimental provider
panteliselef Jun 27, 2025
ec9ea1c
introduce `ClerkAPIResponseError` in @clerk/types
panteliselef Jun 27, 2025
907d149
handle public types
panteliselef Jun 27, 2025
33e17b3
Merge branch 'main' into elef/com-960-useCheckout
panteliselef Jun 27, 2025
f501d70
update snapshot
panteliselef Jun 27, 2025
79972b2
Merge branch 'refs/heads/main' into elef/com-960-useCheckout
panteliselef Jul 4, 2025
9a16e29
update snapshots
panteliselef Jul 4, 2025
5a1ffa3
remove `__internal_checkout`
panteliselef Jul 7, 2025
a5c79ec
add vitest type tests
panteliselef Jul 7, 2025
dcc566b
change return value to `{checkout}`
panteliselef Jul 7, 2025
ba655f9
rename finalize to complete
panteliselef Jul 7, 2025
c00ab42
update to use finalize again
panteliselef Jul 10, 2025
6d8195c
handle mutations not throwing
panteliselef Jul 10, 2025
8472a7b
bump bundlewatch.config.json
panteliselef Jul 10, 2025
1021a2f
Merge branch 'refs/heads/main' into elef/com-960-useCheckout
panteliselef Jul 10, 2025
81c0076
bump bundlewatch.config.json
panteliselef Jul 10, 2025
df81e52
Merge branch 'main' into elef/com-960-useCheckout
panteliselef Jul 11, 2025
dca8c73
add changesets
panteliselef Jul 11, 2025
64bcee8
Merge remote-tracking branch 'origin/elef/com-960-useCheckout' into e…
panteliselef Jul 11, 2025
46773ac
Merge branch 'main' into elef/com-960-useCheckout
panteliselef Jul 11, 2025
b7a27ea
remove jsodcs
panteliselef Jul 11, 2025
598ad25
bump bundle
panteliselef Jul 11, 2025
8612f95
bump bundle
panteliselef Jul 11, 2025
94bcf36
fix lint issue
panteliselef Jul 11, 2025
167406a
Merge branch 'main' into elef/com-960-useCheckout
panteliselef Jul 11, 2025
64c24fb
fix linting issues
panteliselef Jul 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/every-buttons-travel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@clerk/tanstack-react-start': minor
'@clerk/react-router': minor
'@clerk/nextjs': minor
'@clerk/shared': minor
'@clerk/clerk-react': minor
'@clerk/remix': minor
---

[Billing Beta]: Introduce experimental `useCheckout()` hook and `<CheckoutProvider/>`.
7 changes: 7 additions & 0 deletions .changeset/great-roses-punch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@clerk/clerk-js': minor
'@clerk/clerk-react': minor
'@clerk/types': minor
---

[Billing Beta]: Introduce experimental `Clerk.__experimental_checkout()` for managing the state of a checkout session.
9 changes: 9 additions & 0 deletions .changeset/stale-pillows-sneeze.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@clerk/clerk-js': minor
'@clerk/nextjs': minor
'@clerk/shared': minor
'@clerk/clerk-react': minor
'@clerk/types': minor
---

wip
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will update this :)

6 changes: 3 additions & 3 deletions packages/clerk-js/bundlewatch.config.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"files": [
{ "path": "./dist/clerk.js", "maxSize": "612kB" },
{ "path": "./dist/clerk.js", "maxSize": "612.37kB" },
{ "path": "./dist/clerk.browser.js", "maxSize": "72.2KB" },
{ "path": "./dist/clerk.legacy.browser.js", "maxSize": "115KB" },
{ "path": "./dist/clerk.headless*.js", "maxSize": "55KB" },
{ "path": "./dist/ui-common*.js", "maxSize": "111.9KB" },
{ "path": "./dist/ui-common*.legacy.*.js", "maxSize": "113.67KB" },
{ "path": "./dist/ui-common*.js", "maxSize": "110KB" },
{ "path": "./dist/ui-common*.legacy.*.js", "maxSize": "113.72KB" },
{ "path": "./dist/vendors*.js", "maxSize": "40.2KB" },
{ "path": "./dist/coinbase*.js", "maxSize": "38KB" },
{ "path": "./dist/stripe-vendors*.js", "maxSize": "1KB" },
Expand Down
11 changes: 11 additions & 0 deletions packages/clerk-js/src/core/clerk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import {
import { addClerkPrefix, isAbsoluteUrl, stripScheme } from '@clerk/shared/url';
import { allSettled, handleValueOrFn, noop } from '@clerk/shared/utils';
import type {
__experimental_CheckoutInstance,
__experimental_CheckoutOptions,
__internal_CheckoutProps,
__internal_ComponentNavigationContext,
__internal_OAuthConsentProps,
Expand Down Expand Up @@ -137,6 +139,7 @@ import type { FapiClient, FapiRequestCallback } from './fapiClient';
import { createFapiClient } from './fapiClient';
import { createClientFromJwt } from './jwt-client';
import { APIKeys } from './modules/apiKeys';
import { createCheckoutInstance } from './modules/checkout/instance';
import { CommerceBilling } from './modules/commerce';
import {
BaseResource,
Expand Down Expand Up @@ -197,6 +200,7 @@ export class Clerk implements ClerkInterface {
};
private static _billing: CommerceBillingNamespace;
private static _apiKeys: APIKeysNamespace;
private _checkout: ClerkInterface['__experimental_checkout'] | undefined;

public client: ClientResource | undefined;
public session: SignedInSessionResource | null | undefined;
Expand Down Expand Up @@ -339,6 +343,13 @@ export class Clerk implements ClerkInterface {
return Clerk._apiKeys;
}

__experimental_checkout(options: __experimental_CheckoutOptions): __experimental_CheckoutInstance {
if (!this._checkout) {
this._checkout = params => createCheckoutInstance(this, params);
}
return this._checkout(options);
}

public __internal_getOption<K extends keyof ClerkOptions>(key: K): ClerkOptions[K] {
return this.#options[key];
}
Expand Down
Loading
Loading