Skip to content

Reference

Limits & edge cases

A consolidated list of PropUI's hard limits and the behavior that most often surprises people.

Hard limits

Limit Value
Entry hierarchy depth 12
Sub-panel nesting depth 12
Array size 1–32
Property ID length 63
Label / Editor Label length 255
Tooltip length 512
Row height scale 0.25–15.0
Row inset amount 0.1–10.0
Single row column weight 0.05–10.0

The two layers

  • The Entry List and Generated Layout are separate. Removing something from the layout does not delete the source entry.
  • Text, Custom, Display Link, and Operator Button entries do not create managed custom properties.
  • A Display Link draws a source entry again; it does not duplicate the source property's storage.

Storage

  • Property IDs must be unique per target. PropUI auto-suffixes duplicates where needed.
  • If Property Storage cannot resolve, Apply/Generate reports an error.
  • If a per-entry Target Override cannot resolve, Apply/Generate reports the entry that failed.

Layout

  • Sub-panels cannot interleave with loose parent-body rows — Blender child panels always draw below the parent body.
  • Empty sub-panels stay in the editor but are skipped in generated output.
  • Sub-panels start open unless Collapsed by Default is enabled.
  • Row boxes cannot span containers.
  • Row boxes can nest only as fully contained ranges, not partial overlaps.
  • Auto Fill Row can make a shared row resize when conditional children disappear; Keep Empty Slot keeps spacing stable.

Generated output & lifecycle

  • If no sidebar is selected for output, PropUI uses the 3D Viewport.
  • If no Properties tab is selected for output, PropUI uses Object Properties.
  • Stopping a generated UI is session-scoped unless you remove/delete its saved data.
  • Remove From Editor Only can leave a panel running even though it is no longer listed as an owned editor row.
  • Imported generated UI scripts become managed Generated UIs rows. Remove Everything also deletes their managed Text datablock.
  • Generated panels are saved in the .blend as Text datablocks / slot data. Use Export .py Files ZIP for standalone files.

Sources & operators

  • Custom RNA paths can become invalid when objects/data are renamed or deleted.
  • Operator buttons depend on Blender operator polling and context — an operator that cannot run in the panel's current context can cancel or fail.

Import

  • A full setup JSON import from Editor Settings creates a UI Variant. It does not overwrite the current setup until you load that variant.