Bug report: Postgres/Supabase READ patterns fail validation (writes work)
FlutterFlow AI SDK: first observed on 0.0.36 (build 995e259b); retested on 0.0.39
(2026-07-15): identical failure signature, still broken · Dart: 3.12.2 ·
Project: in-sy-sti-vgys6v
Run ID (canonical repro): 2026-07-14T17-04-29-364-ugiya8 (full trace, bundle and replay
workspace in this folder)
Summary
Any DSL pattern that reads Supabase/Postgres rows into page state — and any widget bound
to that state — fails compileDslApp validation. Write actions (PostgresCreate,
PostgresUpdate, PostgresDelete) validate and push fine. This makes it impossible to
author a list/detail screen backed by Supabase from the DSL; users must bind backend queries
manually in the editor.
Minimal repro (40 lines, archived as probe_postgres_state.dart in the bundle)
final t = app.table('probe_items', fields: { ...id + title... });
app.page('ProbePage',
state: {'items': listOf(t), 'firstTitle': string},
onLoad: [
PostgresQuery(t, outputAs: 'itemRows', query: ...),
SetState('items', ActionOutput('itemRows')), // ← fails
PostgresRead(t, outputAs: 'firstRow', query: ...),
SetState('firstTitle', ActionOutput('firstRow')['title']), // ← fails
],
body: ... ListView(source: State('items'), itemBuilder: (item) => Text(item['title'])) ... // ← fails
);
Actual errors (diagnostics from the trace)
VALIDATION_LOCAL_STATE_UPDATE: Field "items" has an update value that is not properly set
in Update App State action
VALIDATION_GENERATOR_VARIABLE: Dynamic children variable not properly configured for ListView
VALIDATION_PROPERTY_OVERRIDE: Invalid postgres row field operation
VALIDATION_WIDGET_CLASS_CONFIGURATION: Page has invalid state variable "items": table not found
VALIDATION_SUPABASE_DATABASE_ACTION: Table not set for Supabase action
Evidence this is an SDK gap, not user error
- The pattern mirrors the SDK's own shipped reference
references/postgres_compile_only_dsl.dart
(state listOf(table) + PostgresQuery/SetState(ActionOutput) + ListView(source: State))
— that reference is compile-only and appears to never have been validated against the server.
- The identical pattern works for Firestore (
references/social_feed_data_dsl.dart:
FirestoreQuery → SetState(ActionOutput) → ListView(source: State(...))), so the gap
is Postgres-specific lowering of: (a) query outputs into page-state updates, (b) postgres
row field access (ActionOutput(...)['col']), and (c) generator variables for list widgets.
- The same errors reproduce with real project tables (typed SDK
ff.Tables.* handles) —
the run at 2026-07-14T17:01:30Z in this project's history shows the exact same
signature on a real page (CompaniesPage/CompanyDetailPage).
- Everything else in the same scripts validates: pages, forms,
PostgresCreate/Update/Delete
actions with filters, Navigate, Snackbar.
Expected
PostgresQuery/PostgresRead outputs should be assignable to page state typed as
listOf(<table>) / scalar via ActionOutput(...)[field], and ListView(source: State(...))
over postgres rows should lower to a properly configured generator variable — matching the
Firestore behavior and the shipped Postgres reference.
Impact
Web/admin CRUD screens (list + detail prefill) cannot be authored end-to-end from the DSL for
Supabase-backed projects — a core FlutterFlow + Supabase workflow. Current workaround: author
layout + write actions via DSL, then hand-bind every backend query in the editor.
postgres-read-gap.zip
Bug report: Postgres/Supabase READ patterns fail validation (writes work)
FlutterFlow AI SDK: first observed on 0.0.36 (build 995e259b); retested on 0.0.39
(2026-07-15): identical failure signature, still broken · Dart: 3.12.2 ·
Project: in-sy-sti-vgys6v
Run ID (canonical repro):
2026-07-14T17-04-29-364-ugiya8(full trace, bundle and replayworkspace in this folder)
Summary
Any DSL pattern that reads Supabase/Postgres rows into page state — and any widget bound
to that state — fails
compileDslAppvalidation. Write actions (PostgresCreate,PostgresUpdate,PostgresDelete) validate and push fine. This makes it impossible toauthor a list/detail screen backed by Supabase from the DSL; users must bind backend queries
manually in the editor.
Minimal repro (40 lines, archived as
probe_postgres_state.dartin the bundle)Actual errors (diagnostics from the trace)
VALIDATION_LOCAL_STATE_UPDATE: Field "items" has an update value that is not properly setin Update App State action
VALIDATION_GENERATOR_VARIABLE: Dynamic children variable not properly configured for ListViewVALIDATION_PROPERTY_OVERRIDE: Invalid postgres row field operationVALIDATION_WIDGET_CLASS_CONFIGURATION: Page has invalid state variable "items": table not foundVALIDATION_SUPABASE_DATABASE_ACTION: Table not set for Supabase actionEvidence this is an SDK gap, not user error
references/postgres_compile_only_dsl.dart(state
listOf(table)+PostgresQuery/SetState(ActionOutput)+ListView(source: State))— that reference is compile-only and appears to never have been validated against the server.
references/social_feed_data_dsl.dart:FirestoreQuery→SetState(ActionOutput)→ListView(source: State(...))), so the gapis Postgres-specific lowering of: (a) query outputs into page-state updates, (b) postgres
row field access (
ActionOutput(...)['col']), and (c) generator variables for list widgets.ff.Tables.*handles) —the run at
2026-07-14T17:01:30Zin this project's history shows the exact samesignature on a real page (CompaniesPage/CompanyDetailPage).
PostgresCreate/Update/Deleteactions with filters, Navigate, Snackbar.
Expected
PostgresQuery/PostgresReadoutputs should be assignable to page state typed aslistOf(<table>)/ scalar viaActionOutput(...)[field], andListView(source: State(...))over postgres rows should lower to a properly configured generator variable — matching the
Firestore behavior and the shipped Postgres reference.
Impact
Web/admin CRUD screens (list + detail prefill) cannot be authored end-to-end from the DSL for
Supabase-backed projects — a core FlutterFlow + Supabase workflow. Current workaround: author
layout + write actions via DSL, then hand-bind every backend query in the editor.
postgres-read-gap.zip