Bug report
Describe the bug
When uploading a file with custom metadata (e.g. metadata: { filename: "My Real Filename.txt" }), the .list() method only returns system metadata fields (eTag, size, mimetype).
Custom metadata is not included, even though it is stored correctly in storage.objects (and retrievable via .info()).
To Reproduce
Steps to reproduce:
-
Upload a file with custom metadata:
const { data, error } = await supabase.storage
.from("bucket")
.upload("path/file.txt", file, {
metadata: { filename: "My Real Filename.txt" },
});
-
List files:
const { data } = await supabase.storage.from("bucket").list("path");
console.log(data[0].metadata); // only shows system fields, no custom filename
-
Fetch file info:
const info = await supabase.storage.from("bucket").info("path/file.txt");
console.log(info.data.metadata); // shows custom fields as expected
Expected behavior
storage.list() should return both system and custom metadata, not just system fields.
This would avoid needing N .info() calls for N files, which has a significant performance impact.
System information
- OS: macOS
- Browser: Chrome
- supabase-js: 2.50.0
- Node.js: v22.18.0
Additional context
Confirmed that custom metadata exists in storage.objects.
.info() retrieves it correctly, but .list() omits it.
This looks like a storage server issue rather than a storage-js issue.
It would also be very useful to have a first-class way to update custom user metadata after upload (for example, renaming the filename field in metadata without re-uploading the file).
Bug report
Describe the bug
When uploading a file with custom metadata (e.g.
metadata: { filename: "My Real Filename.txt" }), the.list()method only returns system metadata fields (eTag,size,mimetype).Custom metadata is not included, even though it is stored correctly in
storage.objects(and retrievable via.info()).To Reproduce
Steps to reproduce:
Upload a file with custom metadata:
List files:
Fetch file info:
Expected behavior
storage.list()should return both system and custom metadata, not just system fields.This would avoid needing
N.info()calls forNfiles, which has a significant performance impact.System information
Additional context
Confirmed that custom metadata exists in
storage.objects..info()retrieves it correctly, but.list()omits it.This looks like a storage server issue rather than a storage-js issue.
It would also be very useful to have a first-class way to update custom user metadata after upload (for example, renaming the filename field in metadata without re-uploading the file).