---
title: Disable Sign Up
description: Learn how to disable the sign up flow
sidebar:
  order: 80
---

Learn how to disable the sign up flow for the `EmailPassword` recipe.

---


## Overview

In order to prevent users from signing up directly through the frontend, you can disable the sign up flow.
This can be done in two steps:
- Update the **UI** to get rid of any sign up information
- Change the **Backend SDK** to prevent sign up attempts


## Before you start

This guide assumes that you already have configured your application to use **SuperTokens** for authentication.
If you have not, please check the [Quickstart Guide](/quickstart).


## Remove the sign up UI

<UITypeSwitch />

<VariantContent storageKey="ui-type" value="prebuilt">


<DependentContent passive group="frontend-prebuilt-ui">
<ContentOption title="Reactjs" value="reactjs">
Remove the sign up UI by overriding the `AuthPageComponentList` component and setting the `showSuperTokensAuth` prop to `false`.
</ContentOption>
<ContentOption title="Angular" value="angular">
Remove the sign up UI by customizing the `CSS` of the authentication page.
</ContentOption>
</DependentContent>

<CodeGroup group="frontend-prebuilt-ui">
<Tab title="Reactjs" value="reactjs">
```tsx
import React from "react";
import { SuperTokensWrapper } from "supertokens-auth-react";
import { AuthRecipeComponentsOverrideContextProvider } from "supertokens-auth-react/ui";
import { EmailPasswordComponentsOverrideProvider } from "supertokens-auth-react/recipe/emailpassword";
import { ThirdpartyComponentsOverrideProvider } from "supertokens-auth-react/recipe/thirdparty";

function App() {
  return (
    <SuperTokensWrapper>
      <AuthRecipeComponentsOverrideContextProvider
        components={{
          AuthPageComponentList_Override: ({ DefaultComponent, ...props }) => {
            return <DefaultComponent {...props} hasSeparateSignUpView={false} />;
          },
        }}
      ></AuthRecipeComponentsOverrideContextProvider>
    </SuperTokensWrapper>
  );
}

export default App;
```
</Tab>
<Tab title="Angular" value="angular">
```tsx check=false reason="This example omits surrounding application and SuperTokens configuration."
// this goes in the auth route config of your frontend app (once the pre built UI script has been loaded)

supertokensUIInit({
  appInfo: {
    apiDomain: "...",
    appName: "...",
    websiteDomain: "...",
  },
  style: `
        [data-supertokens~=authPage] [data-supertokens~=headerSubtitle] {
            display: none;
        }
    `,
  recipeList: [
    /* ... */
  ],
});
```
</Tab>
</CodeGroup>

</VariantContent>

<VariantContent storageKey="ui-type" value="custom">

If you have a custom UI, this step will depend on your implementation.
Just make sure that the user will not be able to view any sign up elements on the authentication page.

</VariantContent>


## Disable the Backend SDK sign up endpoints

Override the **Backend SDK** API functions to prevent sign up attempts.

<CodeGroup group="backend-language">
<Tab title="Node.js" value="nodejs">
```tsx
import SuperTokens from "supertokens-node";
import EmailPassword from "supertokens-node/recipe/emailpassword";

SuperTokens.init({
  appInfo: {
    apiDomain: "...",
    appName: "...",
    websiteDomain: "...",
  },
  supertokens: {
    connectionURI: "...",
  },
  recipeList: [
    EmailPassword.init({
      override: {
        apis: (originalImplementation) => {
          return {
            ...originalImplementation,
            signUpPOST: undefined,
          };
        },
      },
    }),
  ],
});
```
</Tab>
<Tab title="Go" value="go">
```go
import (
	"github.com/supertokens/supertokens-golang/recipe/emailpassword"
	"github.com/supertokens/supertokens-golang/recipe/emailpassword/epmodels"
	"github.com/supertokens/supertokens-golang/supertokens"
)

func main() {
	supertokens.Init(supertokens.TypeInput{
		RecipeList: []supertokens.Recipe{
			emailpassword.Init(&epmodels.TypeInput{
				Override: &epmodels.OverrideStruct{
					APIs: func(originalImplementation epmodels.APIInterface) epmodels.APIInterface {
						originalImplementation.SignUpPOST = nil
						return originalImplementation
					},
				},
			}),
		},
	})
}
```
</Tab>
<Tab title="Python" value="python">
```python check=false reason="This example omits surrounding application and SuperTokens configuration."
from supertokens_python import init, InputAppInfo
from supertokens_python.recipe import emailpassword
from supertokens_python.recipe.emailpassword.interfaces import APIInterface

def apis_override(original_impl: APIInterface):
    original_impl.disable_sign_up_post = True
    return original_impl

init(
    app_info=InputAppInfo(api_domain="...", app_name="...", website_domain="..."),
    framework='...',
    recipe_list=[
        emailpassword.init(
            override=emailpassword.InputOverrideConfig(
                apis=apis_override
            ),
        )
    ]
)
```
</Tab>
</CodeGroup>


## See also


<CardGroup cols={3}>
    <Card title="Account Creation" href="/migration/account-migration">
Import accounts using the SuperTokens API.
</Card>
	<Card title="User Management" href="/post-authentication/user-management/common-actions">
SDK functions that can be used to manage users.
</Card>
    <Card title="Dashboard" href="/post-authentication/dashboard/introduction">
UI exposed by the SuperTokens SDK that allows you to view and manage users.
</Card>
</CardGroup>
