Skip to main content
Known Participant
May 8, 2026

Is dynamic show/hide of PF_Param_GROUP_START topics officially supported by the PF API? (PF_PUI_INVISIBLE + PF_UpdateParamUI not surviving panel rebuild)

  • May 8, 2026
  • 0 replies
  • 11 views

Hi SDK team and fellow plugin devs,

I'd like to get a definitive answer on whether dynamically toggling PF_PUI_INVISIBLE on PF_Param_GROUP_START topics is part of the supported PF API surface, or if it's effectively undefined behavior.

Context

I'm building a native PF effect (AE-style, AE SDK 25.6, Skeleton-based, universal binary) that exposes a variable number of editable sub-groups in the Effect Controls Panel — up to 100 topic groups in the worst case. The pattern I'm using is the textbook one:

1. At PF_Cmd_PARAMS_SETUP, declare all 100 PF_Param_GROUP_START / PF_Param_GROUP_END pairs (each enclosing ~10 child params) with ui_flags |= PF_PUI_INVISIBLE on every entry.
2. As the user creates events, dynamically clear PF_PUI_INVISIBLE on the relevant GROUP_START/GROUP_END/children via PF_UpdateParamUI() during PF_Cmd_UPDATE_PARAMS_UI.
3. Same call also reasserts PF_PUI_INVISIBLE on the still-unused groups, with force_update on every tick.

Initial render is correct: only the active groups are visible.

The bug

In Premiere Pro 2026, the moment focus leaves the effect (user clicks another clip / empty area in the timeline) and comes back, all 100 supposedly-hidden GROUP_START topics reappear in the ECP. The runtime ui_flags state is silently discarded on panel rebuild. Re-running PF_UpdateParamUI in PF_Cmd_UPDATE_PARAMS_UI after the rebuild does not re-hide them.

Same symptoms previously documented here (still unresolved):
https://community.adobe.com/t5/premiere-pro-discussions/conditionally-hiding-topic-params-in-the-ecp/m-p/10486726

For non-topic param types (sliders, popups, buttons) the same PF_UpdateParamUI pattern works fine and survives panel rebuilds. Adobe has confirmed PF_UpdateParamUI works in Premiere (referencing the Supervisor sample). The issue appears specific to GROUP_START / topic params.

Things I've tried

1. PF_PUI_INVISIBLE on GROUP_START only.
2. PF_PUI_INVISIBLE on both GROUP_START and GROUP_END.
3. (1) + (2) + propagating PF_PUI_INVISIBLE to every child param of the group.
4. Replacing PF_ADD_POPUPX with raw PF_ADD_PARAM in case the macro was stripping the flag.
5. PF_UpdateParamUI on every PF_Cmd_UPDATE_PARAMS_UI with force_update=true.
6. Intercepting PF_Cmd_EVENT for PF_Event_NEW_CONTEXT, PF_Event_ACTIVATE, PF_Event_DEACTIVATE, PF_Event_CLOSE_CONTEXT and re-running the visibility reconciliation there, with PF_OutFlag_REFRESH_UI | PF_OutFlag_SEND_UPDATE_PARAMS_UI.

None survive the panel rebuild. The Supervisor sample only toggles non-topic params, so it doesn't really cover this case.

I'm aware AEGP_DynamicStreamSuite::SetDynamicStreamFlag with AEGP_DynStreamFlag_HIDDEN is the AEGP-side mechanism for persistent stream visibility, but AEGP is not implemented in Premiere, so it's not viable for a plugin that targets both hosts.

Questions for the SDK team / community

1. Is dynamic toggling of PF_PUI_INVISIBLE on PF_Param_GROUP_START a supported part of the PF API, or is it undefined behavior that just happens to work for non-topic param types?
2. Is the panel-rebuild-drops-runtime-ui_flags behavior a Premiere-only quirk, or also reproducible in AE? (I haven't yet tested the same plugin in AE — would appreciate hearing from anyone who has hit this.)
3. If dynamic topic hiding isn't supported, is there a sanctioned pattern in the SDK for variable-length lists of editable sub-groups in the ECP? Right now I'm planning to fall back to a fixed pool of N visible slots paginated via a "Page" popup, with the underlying data stored in a single arbitrary param. Is that the recommended path?
4. Is there any out_flag (PF_OutFlag / PF_OutFlag2) that I might be missing that could make Premiere honor the runtime ui_flags persistently across panel rebuilds?

I'd really value an authoritative answer here — even just confirmation that the workaround is the only path forward — so other devs hitting this in the future have something concrete to reference. The 2018 thread linked above has been silent for ~8 years.

Plugin specs: AE SDK 25.6, target Premiere Pro 2026 + After Effects 2026, macOS 13+, universal binary, MediaCore plug-in path.

Thanks!