-
If ft.context.disable_auto_update() is not used, do not add explicit page.update() unless strictly necessary.
-
Apply this page.update() rule to all examples in the touched folder (new, migrated, and already converted).
-
Wrap app content in ft.SafeArea so example renders correctly on mobile.
-
Add expand=True to ft.SafeArea only when needed for correct layout/sizing (for example to avoid Infinity/NaN sizing issues), and avoid adding it when not necessary.
-
When converting legacy page.add(a, b, ...) style examples, wrap the controls in ft.Column(controls=[...]) inside ft.SafeArea(content=...) rather than ft.Row, unless the original code explicitly used a row layout.
-
Apply this to all examples in the touched folder (new, migrated, and already converted), not only files changed by moves.
-
During validation, confirm every <example>/main.py in scope includes a top-level ft.SafeArea around rendered content.
-
For declarative examples using @ft.component, do not pass component instances as regular control children (for example SafeArea(content=App())) because this can raise runtime attribute errors.
-
In declarative examples, ensure the component itself returns regular controls (including SafeArea when needed) and render it at page level with page.render(App) in main().