parity(storage): guard against empty transform routing through render endpoint [from supabase-js]
Maintainers usually reply within 1 day
@Tr00d is already working on this.
Since Jul 1, 2026.
Assessment
This issue has not been assessed yet.
Description
SDK Parity: C# implementation needed
A bug fix was made in supabase-js that needs to be applied in supabase-community/storage-csharp for SDK parity.
Reference Implementation (supabase-js)
- Commit:
993bb5fc - PR: https://github.com/supabase/supabase-js/pull/2219
- Module: storage
- Type: bug-fix
What Changed
Empty transform objects were treated as transform requests, routing through /render/image/ unnecessarily. The fix checks for actual properties before switching endpoints.
Current State in supabase-csharp
In StorageFileApi.cs, GetPublicUrl routes to /render/image/public/ and Download routes to /render/image/authenticated/ when transformOptions != null. A new TransformOptions() with no properties set still triggers the render endpoint.
Implementation Guidance
Add an emptiness check on TransformOptions before deciding the render path. For example, check if any transform properties (width, height, resize, format, quality) are non-default before routing to /render/image/.
Key Behaviors to Match
GetPublicUrl(path)without transform uses/object/endpointGetPublicUrl(path, new TransformOptions())with empty transform uses/object/endpointGetPublicUrl(path, new TransformOptions { Width = 200 })uses/render/image/- Same for
Download()
Acceptance Criteria
- Empty TransformOptions does not route through render endpoint
- Actual transforms still route correctly
- Unit tests
- No breaking changes
Context
- supabase-js version: v2.103.1+
- Parity tracking: This issue was auto-generated by SDK parity analysis
Generated with Claude Code /sync-sdk-parity
- Dominant language
- C#
- Stars
- 702
- Forks
- 106
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 51
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from supabase/supabase-csharp
-
OAuth State Error for social providers since Supabase.Gotrue v6.1.0May be free again @Tr00d claimed this 50 days ago, and no pull request is open. Openbug
supabase/supabase-csharp#377 · 4 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
Postgres Changes filters are validated as anon because SetAuth is applied after channel joinMay be free again @Tr00d claimed this 63 days ago, and no pull request is open. Openarea: postgrest bug
supabase/supabase-csharp#345 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
-
parity(functions): never send new-format API key as Authorization Bearer [from supabase-js]May be free again @Tr00d claimed this 88 days ago, and no pull request is open. Openbug parity
supabase/supabase-csharp#279 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
parity(client): unrecognized sb_ API key subtypes are silently accepted, no warning [from supabase-js]May be free again @Tr00d claimed this 88 days ago, and no pull request is open. Openparity
supabase/supabase-csharp#278 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
parity(realtime): add replication_ready broadcast option and system event payload [from supabase-js]May be free again @Tr00d claimed this 102 days ago, and no pull request is open. Openparity
supabase/supabase-csharp#272 · 1 assignee ·
Maintainers usually reply within 1 day
All issues in supabase/supabase-csharp
Similar issues
-
:watch: Not Triaged async-task-programming/subsvc dotnet-csharp/svc
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
Python: Bug: AnnotationContent and StreamingAnnotationContent to_element writes CitationType.X, so annotations in a rendered chat history fail to parsePossibly taken A pull request linked to this issue is open or already merged. Openpython triage
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
microsoft/semantic-kernel#14590 ·
Maintainers usually reply within 3 days
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
Maintainers usually reply within 1 day
-
Needs-Triage
Difficulty 1/5 Under an hour Newbie friendliness 88/100
PowerShell/PowerShell#28194 ·
Maintainers usually reply within 1 day
-
AI Projects Client customer-reported needs-team-attention question Service Attention
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Azure/azure-sdk-for-net#63804 · 3 comments · 1 reaction ·
Maintainers usually reply within 1 day