So, you can provide a Shape or stream or subscribe function that automatically knows when to invalidate and re-run a live shape request which depends on some data/params.
From:
conn
|> Phoenix.Sync.Controller.sync_render(params, query)
To:
conn
|> Phoenix.Sync.Controller.sync_render(params, {queryFn, dependencies: [Model.Task]})
So shape definitions can be dynamic with function and dependency.