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)