Installation
- npm
- pnpm
- yarn
Terminal
Initialization
To initialize your frontend application, you need to create a client provider component and wrap your application with it. Since Atlas needs to authenticate with your backend and verify that users are only accessing what they can, you will need to place it under your authentication provider. It’s very important that you provide all the required props:getAuth: A function that returns the authentication token. This is only necessary if the authentication with the backend is done with tokens and headers (for example, Clerk).loginCallback: A function that is called whenever the user tries to do an action that requires authentication.userId: The ID of the user.userEmail: The email of the user. Optional.userName: The name of the user. Optional.isUserLoading: A boolean that indicates whether the user is still loading. Optional. Helps Atlas to avoid flickering when the user status changes.
AtlasProvider, wherever you have the rest of your providers and under your authentication provider.
For example, with Clerk:
Using a different host for your backend?
Using a different host for your backend?
You can specify the host of your backend when instantiating the provider.
src/atlas/client.tsx
Use our Atlas widgets
You can use any of our Atlas widgets in your React application by importing them from@runonatlas/react.
PricingComponent Widget
The PricingComponent widget shows the plans in your Atlas pricing model and allows users to purhcase a subscription to a plan via Atlas’ in-line checkout. IMPORTANT: ThesuccessUrl must be absolute. For example, /success is not valid, but https://your-app.com/success is valid.
iFrame. When a visitor selects a plan, they’ll be redirected to your core application where the SDK is installed to sign in and complete the purchase.
To embed pricing on a website outside your app, use the /pricing-embed endpoint and pass the following URL query parameters:
publishableKey- public key with read access to your pricing model (accessible in settings/api-keys)redirectTo- absolute URL to redirect users to your app when they select a plansuccessUrl- absolute URL to return users to after they succesfully purchase a plan
redirectTo andsuccessUrl must be absolute. For example, /success is not valid, but https://your-app.com/success is valid.
CustomerPortalComponent Widget
The CustomerPortalComponent widget shows the current user what plan they are subscribed to, a history of their payments, and allows them to cancel or change their plan at any time. IMPORTANT: ThesuccessUrl must be absolute. For example, /success is not valid, but https://your-app.com/success is valid.
Limit user access based on their subscriptions
You can prevent users from accessing restricted parts of your application based on their subscription. To do so, you can use our UI protection features.UI Protection
Using hooks
You can use theuseFeaturesAllowed hook to check if a user has access to a feature.
useCustomerFeatures hook to get a users access status for all features in your pricing model:
Using components
You can use theFeatureProtect component to check if a user has access to a feature.
Limit-based features
Sometimes, just having a feature as enabled or disabled is not enough, and our pricing models require limits to be set. For example, 5 users per account, or 20GB of storage. Setting this up with Atlas is very easy. And, if at some point the limits change, you won’t need to change the code again!Explanation in the UI
When using both the<FeatureProtect> component and the useFeaturesAllowed() hook, it will automatically check if the user has access to the features you are protecting AND if the limit has not been reached.
However, it is possible that you want to show your user why the access was denied! To to do this, we give you the reasons why the access was denied. For example, with the hook useFeaturesAllowed:
src/routes/home/index.tsx
<FeatureProtect> component, instead of directly providing the FallbackComponent, you can actually provide a function that returns the component to be rendered when the access is denied. For example:
src/routes/home/index.tsx

