- Your API is secured behind an API gateway which requires an API Key for every request.
-
- You can use the parameters below to use Supabase client libraries.
-
- {isProjectSettingsError ? 'Failed to retrieve API keys' : 'Failed to update JWT secret'}
-
-
- ) : isProjectSettingsLoading ? (
-
-
-
Retrieving API keys
-
- ) : isApiKeysEmpty ? (
-
-
-
Retrieving API keys
-
+
+
+ Project API
+
+ Your API is secured behind an API gateway which requires an API Key for every request.
+
+ You can use the parameters below to use Supabase client libraries.
+
+
+
+ {isLoading ? (
+
+
+
+ ) : isError ? (
+
) : showJwtLoading ? (
-
-
-
JWT secret is being updated
-
+
+
+
+
JWT secret is being updated
+
+
+ ) : !isLegacyKeysEnabled && !hasNewAPIKeys ? (
+
+ Create a set of API keys from your{' '}
+
+ project settings
+ {' '}
+ to connect to your project
+ >
+ }
+ />
) : (
<>
-
-
+
+
+
+
+
+
+
-
-
-
-
API Key
-
- {anonKey?.name}
- public
+ hasNewAPIKeys ? (
+ 'Publishable API Key'
+ ) : (
+
+
API Key
+
+ {anonKey?.name}
+ public
+
-
+ )
}
- copy={canReadAPIKeys && isNotUpdatingJwtSecret}
- reveal={anonKey?.name !== 'anon' && canReadAPIKeys && isNotUpdatingJwtSecret}
- value={
- !canReadAPIKeys
- ? 'You need additional permissions to view API keys'
- : jwtSecretUpdateStatus === JwtSecretUpdateStatus.Failed
- ? 'JWT secret update failed, new API key may have issues'
- : jwtSecretUpdateStatus === JwtSecretUpdateStatus.Updating
- ? 'Updating JWT secret...'
- : anonKey?.api_key
- }
- onChange={() => {}}
- descriptionText={
+ description={
This key is safe to use in a browser if you have enabled Row Level Security (RLS)
- for your tables and configured policies. You may also use the service key which
- can be found{' '}
-
here
- {' '}
+ {' '}
to bypass RLS.
+ Connect to your project from a variety of frameworks, ORMs, an MCP server, or even
+ directly via connection string.
+
+
- )}
+
>
)}
-
+
)
}
diff --git a/apps/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx b/apps/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx
index 1cee26d7121..55b77743b21 100644
--- a/apps/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx
+++ b/apps/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx
@@ -1,7 +1,9 @@
-import { ExternalLink } from 'lucide-react'
+import { ExternalLink, Settings } from 'lucide-react'
import Link from 'next/link'
import { useParams } from 'common'
+import { DocsButton } from 'components/ui/DocsButton'
+import { InlineLink } from 'components/ui/InlineLink'
import Panel from 'components/ui/Panel'
import { EditorIndexPageLink } from 'data/prefetchers/project.$ref.editor'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
@@ -37,7 +39,7 @@ export const NewProjectPanel = () => {
-
Get started by building out your database
+
Build out your database
Start building your app by creating tables and inserting data. Our Table Editor
makes Postgres as easy to use as a spreadsheet, but there's also our SQL Editor if
@@ -211,28 +213,18 @@ export const NewProjectPanel = () => {
-
Connecting to your new project
-
+
Connect to your project
+
Interact with your database through the{' '}
-
- Supabase client libraries
- {' '}
- with your API keys.
-
-
- More information about your project's keys can be found in your project's API
- settings.
+ Supabase client libraries and
+ your API keys.
-
- }>
-
- About APIs
-
+ }>
+ API settings
+
diff --git a/apps/studio/components/layouts/ProjectLayout/BuildingState.tsx b/apps/studio/components/layouts/ProjectLayout/BuildingState.tsx
index 2287fe84dd6..f869fa1e7ad 100644
--- a/apps/studio/components/layouts/ProjectLayout/BuildingState.tsx
+++ b/apps/studio/components/layouts/ProjectLayout/BuildingState.tsx
@@ -6,9 +6,8 @@ import { useParams } from 'common'
import { ClientLibrary } from 'components/interfaces/Home/ClientLibrary'
import { ExampleProject } from 'components/interfaces/Home/ExampleProject'
import { EXAMPLE_PROJECTS } from 'components/interfaces/Home/Home.constants'
+import { APIKeys } from 'components/interfaces/Home/NewProjectPanel/APIKeys'
import { SupportLink } from 'components/interfaces/Support/SupportLink'
-import { DisplayApiSettings } from 'components/ui/ProjectSettings/DisplayApiSettings'
-import { DisplayConfigSettings } from 'components/ui/ProjectSettings/DisplayConfigSettings'
import { useInvalidateProjectsInfiniteQuery } from 'data/projects/org-projects-infinite-query'
import { useInvalidateProjectDetailsQuery } from 'data/projects/project-detail-query'
import { useProjectStatusQuery } from 'data/projects/project-status-query'
@@ -135,8 +134,7 @@ const BuildingState = () => {
-
-
+
diff --git a/apps/studio/data/config/jwt-secret-updating-status-query.ts b/apps/studio/data/config/jwt-secret-updating-status-query.ts
index c28dd8863e3..f5f429ffefd 100644
--- a/apps/studio/data/config/jwt-secret-updating-status-query.ts
+++ b/apps/studio/data/config/jwt-secret-updating-status-query.ts
@@ -3,7 +3,7 @@ import { useQuery, useQueryClient } from '@tanstack/react-query'
import { useEffect } from 'react'
import { get, handleError } from 'data/fetchers'
-import { UseCustomQueryOptions } from 'types'
+import { ResponseError, UseCustomQueryOptions } from 'types'
import { configKeys } from './keys'
export type JwtSecretUpdatingStatusVariables = {
@@ -45,7 +45,7 @@ export async function getJwtSecretUpdatingStatus(
}
export type JwtSecretUpdatingStatusData = Awaited>
-export type JwtSecretUpdatingStatusError = unknown
+export type JwtSecretUpdatingStatusError = ResponseError
export const useJwtSecretUpdatingStatusQuery = (
{ projectRef }: JwtSecretUpdatingStatusVariables,
diff --git a/packages/common/enabled-features/enabled-features.json b/packages/common/enabled-features/enabled-features.json
index 38902316e0c..c862597b29c 100644
--- a/packages/common/enabled-features/enabled-features.json
+++ b/packages/common/enabled-features/enabled-features.json
@@ -90,8 +90,6 @@
"profile:show_analytics_and_marketing": true,
"profile:show_account_deletion": true,
- "project_connection:javascript_example": true,
- "project_connection:dart_example": true,
"project_connection:show_app_frameworks": true,
"project_connection:show_mobile_frameworks": true,
"project_connection:show_orms": true,
diff --git a/packages/common/enabled-features/enabled-features.schema.json b/packages/common/enabled-features/enabled-features.schema.json
index 2f646230616..bde7a6887c0 100644
--- a/packages/common/enabled-features/enabled-features.schema.json
+++ b/packages/common/enabled-features/enabled-features.schema.json
@@ -309,14 +309,6 @@
"description": "Shows the account deletion section in account preferences"
},
- "project_connection:javascript_example": {
- "type": "boolean",
- "description": "Show the javascript example in the project connection settings. If off, it'll show up as Typescript example instead (both are the same code example)"
- },
- "project_connection:dart_example": {
- "type": "boolean",
- "description": "Show the dart example in the project connection settings"
- },
"project_connection:show_app_frameworks": {
"type": "boolean",
"description": "Show the app frameworks tab in the connect modal"
@@ -510,8 +502,6 @@
"project_settings:log_drains",
"project_settings:restart_project",
"project_settings:database_upgrades",
- "project_connection:javascript_example",
- "project_connection:dart_example",
"project_connection:show_app_frameworks",
"project_connection:show_mobile_frameworks",
"project_connection:show_orms",