Skip to Main Content
Feature Request FR-5021
Product Area User Interface
Status OPEN

1 Voters

Native “Initially Hidden” attribute for Regions and Items (independent from item type)

tibor2 Public
· Sep 11 2026

Description:

Oracle APEX currently does not provide a native, declarative way to render regions or items in an initially hidden state while still keeping them in the DOM and allowing them to be shown later without flicker.

This limitation affects both usability and performance, especially on slow networks or slow client machines, where hidden components briefly appear before being hidden by Dynamic Actions. In practice, this means that elements intended to be hidden are visibly displayed for a moment, which is disruptive and cannot be avoided with existing declarative features.

Current limitations

1. Regions

APEX offers only:

  • Server-side Conditions
  • Client-side Dynamic Actions (Hide/Show)
  • Template-based visibility (Header/Footer CSS hacks)

None of these behave as a true “initially hidden” region.

1.1 Server-side Condition

  • Prevents rendering → no flicker, but
  • The region is not present in the DOM, therefore
  • It cannot be shown later via Dynamic Action. This makes it unusable for toggle-based UIs.

1.2 Client-side DA Hide

  • The region is fully rendered first
  • Then hidden via JavaScript
  • On slow networks or slow computers, this causes visible flicker, because the user briefly sees the region before it disappears. This is the core problem: hidden components are visible for a moment.

1.3 Template-based hiding (Header/Footer CSS hacks)

  • The region is rendered hidden
  • But the template-level CSS cannot be overridden by DA Show
  • Therefore the region cannot be made visible later.

1.4 “Comment out”

  • Not a solution, because the region is removed from the DOM
  • Many regions contain items that store values, which are required for page logic
  • Commenting out removes these items entirely, breaking functionality.

2. Items

APEX provides a Hidden item type, but this is not an attribute — it replaces the item’s original type.

This leads to multiple problems:

2.1 Loss of item-specific settings

When an item is switched to Hidden type:

  • it loses all type-specific configuration, such as
    • checkbox settings,
    • display-only formatting,
    • select list LOV configuration,
    • template options,
    • validation behavior,
    • alignment,
    • icons,
    • custom attributes.
  • When switching back from Hidden to the original type, these settings are not restored.

This makes the Hidden type unusable for temporary visibility control.

2.2 No independent visibility dimension

An item cannot be:

  • Checkbox + Hidden
  • Display Only + Hidden
  • Select List + Hidden

There is no “visibility” attribute independent of the item type.

2.3 Workarounds are not acceptable

  • CSS hide → causes flicker
  • DA Set Style → causes flicker
  • Removing the item → breaks page logic
  • Hidden type → destroys configuration

Requested Enhancement

Introduce a native “Initially Hidden” attribute for both regions and items:

  • Works independently of item type
  • Applies before rendering → no flicker
  • Keeps the component in the DOM
  • Allows DA Show/Hide without JavaScript hacks
  • Does not remove items that store values
  • Does not destroy item-specific configuration
  • Provides a clean, declarative way to control visibility

Benefits

  • Flicker-free initial page load
  • Clean, declarative UI logic
  • No need for CSS or template hacks
  • Items retain their original type and settings
  • Regions remain dynamically controllable
  • More consistent component model
  • Better support for modern, toggle-based interfaces (advanced search panels, collapsible sections, conditional UI blocks)
This idea is open.

Comments

Comments

  • jayson hanes Admin OP 4 days ago

    I'm not sure why CSS is not the answer to this - you can apply some css that prevents any page component from being visible, and then simply toggle that off to show it..

  • tibor2 OP 4 days ago

    Thank you for the suggestion. CSS can indeed hide a region or item at render time, and technically it works in certain cases. The issue is that this is still only a workaround, not a declarative APEX feature.

    The main problem is that CSS‑based hiding is not compatible with the declarative Show/Hide behavior provided by APEX Dynamic Actions.   A Dynamic Action manages visibility declaratively, and this behavior should be complemented by an “initially hidden” state that the DA could override dynamically in the same way it does today.

    CSS, however, is only a forced styling rule, and if a component has display:none applied through CSS, the DA Show/Hide cannot override it, because a DA only modifies inline styles, not external CSS. This means that if the initial hiding is done via CSS, the built‑in DA Show will not make the component visible — achieving that would require a separate, custom DA or JavaScript workaround, which is no longer part of the declarative Show/Hide mechanism.

    Additionally, CSS does not appear in the Page Designer, is not declarative, is not transparent, and does not align with the APEX component model. This is why a native, declarative “Initially Hidden” attribute is needed — one that applies before rendering and is fully compatible with the DA Show/Hide behavior.