Skip to content

chore(studio): vector buckets contents#39705

Merged
ivasilov merged 9 commits intoivan/depr-91-add-skeleton-of-vector-bucket-contents-to-storagefrom
dnywh/chore/vector-bucket-contents
Oct 21, 2025
Merged

chore(studio): vector buckets contents#39705
ivasilov merged 9 commits intoivan/depr-91-add-skeleton-of-vector-bucket-contents-to-storagefrom
dnywh/chore/vector-bucket-contents

Conversation

@dnywh
Copy link
Contributor

@dnywh dnywh commented Oct 21, 2025

What kind of change does this PR introduce?

Chore: UI improvements to the vector buckets and their details

What is the current behavior?

  • @ivasilov has graciously added a bunch of basic scaffolding for both the root vector buckets and page the individual vector bucket details page

What is the new behavior?

  • UI and copywriting improvements to the above pages
  • Empty state
  • Reused existing patterns from analytics buckets where appropriate
  • Reused existing components from analytics buckets where appropriate

Additional context

Based on #39597.

Still to come:

  • Empty state within vector bucket (no indexes/tables)
  • Modals

To test

Use MOCK_VECTOR_INDEXES for allIndexes in VectorBucketDetails (here) if you need mock table data.

@vercel
Copy link

vercel bot commented Oct 21, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
studio-self-hosted Ready Ready Preview Comment Oct 21, 2025 6:50am
studio-staging Ready Ready Preview Comment Oct 21, 2025 6:50am
6 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
cms Ignored Ignored Oct 21, 2025 6:50am
studio Ignored Ignored Oct 21, 2025 6:50am
design-system Skipped Skipped Oct 21, 2025 6:50am
docs Skipped Skipped Oct 21, 2025 6:50am
ui-library Skipped Skipped Oct 21, 2025 6:50am
zone-www-dot-com Skipped Skipped Oct 21, 2025 6:50am

💡 Enable Vercel Agent with $100 free credit for automated AI reviews

@supabase
Copy link

supabase bot commented Oct 21, 2025

This pull request has been ignored for the connected project xguihxuzqibwxjnimxev because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@dnywh dnywh changed the base branch from master to ivan/depr-91-add-skeleton-of-vector-bucket-contents-to-storage October 21, 2025 06:33
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Renamed to VectorBucketDetails just to match elsewhere. Figured this would be helpful clarity as we jump around various bucket types in code.

Comment on lines +79 to +81
// TODO: replace with proper check for wrappers extension state
const wrappersExtensionState = 'installed'

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Just hardcoding a wrappers state.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We could reuse the existing CreateSpecializedBucketModal (for analytics) because it’s so similar.

Or we could just rename that one to be more clearly about analytics.

label="Bucket name"
labelOptional="Cannot be changed after creation"
description="Must be between 3–63 characters. Valid characters are a-z, 0-9, hyphens (-), and periods (.). A target schema will be created that matches this name."
description="A target schema will be created that matches this name."
Copy link
Contributor Author

Choose a reason for hiding this comment

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

It’s a bit of a mouthful with the field validation spelt out. I know it’s (on paper) bad practice to hide the requirements, but they are so obvious that I want to sprinkle them in as needed.

Supabase will install the{' '}
{wrappersExtensionState !== 'installed' ? 'Wrappers extension and ' : ''}
S3 Vectors Wrapper integration on your behalf.{' '}
<InlineLink href={`${DOCS_URL}/guides/database/extensions/wrappers/overview`}>
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Need to replace with the docs page for S3 Vectors when it’s ready. Just like Iceberg for analytics. CC @ChrisChinchilla and @burmecia

Copy link
Contributor

Choose a reason for hiding this comment

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

@dnywh I am about to push a WIP branch for that

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Reusing the generic EmptyBucketState instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Following the pattern from analytics buckets here by having its own Details component inside of Interfaces.

})

// Mock data for development - replace with real data when backend is ready
// const allIndexes = MOCK_VECTOR_INDEXES
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Use this instead of data?.vectorBuckets if you aren’t able to populate with real data.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This naming is a bit trippy but I don’t have a better idea!

Comment on lines +35 to +40
const filteredBuckets = bucketsList.filter((bucket) =>
filterString.length === 0
? true
: bucket.vectorBucketName.toLowerCase().includes(filterString.toLowerCase())
)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Search functionality

</div>
)}
<>
{!isLoadingBuckets && bucketsList.length === 0 ? (
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Loading state. Just like analytics.

Comment on lines +24 to +35
{bucketType === 'files' && (
<CreateBucketModal buttonSize="tiny" buttonType="primary" buttonClassName="w-fit" />
) : (
)}
{bucketType === 'analytics' && (
<CreateSpecializedBucketModal
bucketType={bucketType}
buttonSize="tiny"
buttonType="primary"
buttonClassName="w-fit"
disabled={bucketType === 'vectors'}
tooltip={
bucketType === 'vectors'
? {
content: {
side: 'bottom',
text: 'Vector buckets are not supported yet',
},
}
: undefined
}
/>
)}
{bucketType === 'vectors' && <CreateVectorBucketDialog />}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

As mentioned in the PR body, we could reuse CreateSpecializedBucketModal. Having three separate ones for clarity doesn’t hurt, I suppose.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Renamed [bucketId] to match other bucket types.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Renamed [bucketId] to match other bucket types.

@dnywh dnywh marked this pull request as ready for review October 21, 2025 06:48
@dnywh dnywh requested a review from a team as a code owner October 21, 2025 06:48
@ivasilov ivasilov merged commit 4ba6290 into ivan/depr-91-add-skeleton-of-vector-bucket-contents-to-storage Oct 21, 2025
16 of 17 checks passed
@ivasilov ivasilov deleted the dnywh/chore/vector-bucket-contents branch October 21, 2025 11:46
ivasilov pushed a commit that referenced this pull request Oct 31, 2025
* language

* match analytics buckets

* shared empty state

* proper loading state

* create dialog cleanup

* simplify copywriting

* proper details

* filtering

* use real data
ivasilov added a commit that referenced this pull request Nov 4, 2025
* Initial work on vector buckets.

* Add more queries and UI.

* chore(studio): vector buckets contents (#39705)

* language

* match analytics buckets

* shared empty state

* proper loading state

* create dialog cleanup

* simplify copywriting

* proper details

* filtering

* use real data

* chore(studio): vector buckets polish A (#39759)

* empty state

* better checks

* bucket name in sheet

* fix typo

* sheet improvements

* rename vector index to vector table

* cleanup

* More work on the vector indexes.

* Add delete for bucket and indexes. Create index should now work.

* chore(studio): vector buckets polish B (#39794)

* loading

* delete modal

* fix modal behaviour

* Add modal for deleting vector buckets.

* Bring back the shimmering loader.

* chore(studio): vector buckets polish C (#39887)

* fix bucketname on deletion dialog

* empty states

* remove extraneous padding

* proper loading and not-found cases

* Minor fixes.

* Minor updates to the vector components.

* Add more instructions to the cursor rules.

* Some refactors and shifting files around

* Refactor analytics buckets detial to improve time to fcp

* Fix

* Refactors + simplify

* Last few nits, just leaving comments

* If the bucket is not empty, delete all indexes first.

---------

Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
Rodriguespn pushed a commit that referenced this pull request Nov 25, 2025
* Initial work on vector buckets.

* Add more queries and UI.

* chore(studio): vector buckets contents (#39705)

* language

* match analytics buckets

* shared empty state

* proper loading state

* create dialog cleanup

* simplify copywriting

* proper details

* filtering

* use real data

* chore(studio): vector buckets polish A (#39759)

* empty state

* better checks

* bucket name in sheet

* fix typo

* sheet improvements

* rename vector index to vector table

* cleanup

* More work on the vector indexes.

* Add delete for bucket and indexes. Create index should now work.

* chore(studio): vector buckets polish B (#39794)

* loading

* delete modal

* fix modal behaviour

* Add modal for deleting vector buckets.

* Bring back the shimmering loader.

* chore(studio): vector buckets polish C (#39887)

* fix bucketname on deletion dialog

* empty states

* remove extraneous padding

* proper loading and not-found cases

* Minor fixes.

* Minor updates to the vector components.

* Add more instructions to the cursor rules.

* Some refactors and shifting files around

* Refactor analytics buckets detial to improve time to fcp

* Fix

* Refactors + simplify

* Last few nits, just leaving comments

* If the bucket is not empty, delete all indexes first.

---------

Co-authored-by: Danny White <3104761+dnywh@users.noreply.github.com>
Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants