Skip to main content

APEX 26.1 New Features

Release Notes

Referenced on Apex Ideas App Implementations — Implement Edition

1Quick Pick on Lists

The Quick Pick functionality for list-based items has been enhanced. We can now configure Quick Picks using options:

  • Static - The quick picks are based on the static labels and values entered.
  • SQL Query - The quick picks are based on the SQL query entered.
  • Maximum Displayed Entries - The maximum displayed entries that will be rendered.
  • Link Attributes - Enter HTML attributes that are associated with the display of each Quick Pick link.
Example

Type → SQL Query

Query:

SELECT DISTINCT DNAME D, DEPTNO R FROM DEPT

Maximum Displayed Entries: 4

Link Attributes:

class="my-quickpick"

Inline CSS (Pill shape UI):

.my-quickpick {
  display: inline-block;
  padding: 6px 14px;
  margin: 9px 4px 2px 0;
  border: 1px solid #d0d0d0;
  border-radius: 20px;   /* makes it pill shape */
  background-color: #f8f8f8;
  color: #333 !important;
  text-decoration: none;
  font-size: 12px;
  font-weight: 500;
  transition: all 0.2s ease;
}
2Interactive Report Column CSS Class

Interactive Report columns now support CSS Classes, making it easier to style column content without relying on HTML Expressions to wrap values. Simply assign one or more existing CSS classes to the column, separating multiple class names with spaces, to customize the appearance directly.

Example

Appearance > CSS Class: u-bold u-color-17

Custom class: ir-css-bg1

Inline CSS:

.ir-css-bg1 {
    background-color: #FFC0CB;
    opacity: 0.3;
}
3Incorporate Dynamic Actions into Actions in the Cards Region

Dynamic Actions can now be incorporated directly into actions within the Cards region. Trigger Actions allow us to define Dynamic Actions directly for actions, buttons, cards, and menus within the Page Designer tree.

For actions in multi-row regions, we can access row-specific column values by enabling the Available on Client attribute. These values can then be referenced using JavaScript syntax such as $v('COLUMN_NAME'), or by using substitution syntax like &COLUMN_NAME. in success and error message actions. These row-level values remain available only during the execution of the triggered action set.

Additionally, column values can be passed to the server using Items to Submit and Items to Return. For enhanced security, we can enable the Value Protected setting when working with client-available values.

4Add Split Buttons / Multi-Action Buttons

Buttons now include two new default properties: Type and Show as Disabled.


Button Type

The Type property now provides the following options:

  • Standard - A regular button that can submit the page, redirect to a specified location, or trigger Dynamic Actions.
  • Menu - A button that opens a menu containing defined Menu subcomponents. Menu supports three entry types:
    • Menu Entry - A selectable menu item that executes an action.
    • Sub-Menu - Groups multiple menu entries under a nested menu. A sub-menu itself cannot execute an action.
    • Separator - Used to visually divide menu entries into groups. Separators are automatically hidden if there is no adjacent menu entry.

Show as Disabled

The Show as Disabled option allows buttons or menu entries to be rendered as disabled instead of being hidden when the defined Server-side Condition evaluates to FALSE.

5Support Run Page for Modal Dialogs

We can now run APEX applications directly from both the Global Page and Modal Dialogs using Save and Run.

  • Global Page: When Save and Run is used on a Global Page, the currently active page is reloaded, including any open modal dialogs. If no page is currently running, the application's main page (Home or Login) will open.
  • Modal Dialog: When Save and Run is used on a Modal Dialog, the dialog itself is refreshed. If no modal dialog is currently open, the active page will reload. If there is no active page, the application's main page (Home or Login) will be launched.

This enhancement makes it easier to test and preview changes directly while working on shared components and dialog pages.

6Fire on Page Initialization is Now Hidden for Page Load Dynamic Actions

The Fire on Page Initialization option is now hidden for Page Load Dynamic Actions, removing an unnecessary setting that does not affect application behavior. This helps simplify configuration and avoids confusion by displaying only relevant options.

7OAuth2 Enhancements

OAuth2 now includes several enhancements:

  • Client Credentials Flow now supports Refresh Tokens, allowing tokens to be renewed without requiring repeated authentication.
  • Web Credentials now support a new authentication type: OAuth2 Password Flow, which allows passing a username and password along with an optional Client ID and Client Secret.
  • Both OAuth2 Password Flow and OAuth2 Client Credentials now include a new Token Authentication Method attribute, which lets us define how the Client ID and Client Secret are sent to the token server.

These enhancements provide greater flexibility when configuring and managing OAuth2-based authentication in APEX.

8Row-Based Selection Support

With row selection enabled, we can retrieve values based on the configured Primary Key Column, making it easier to work with selected records programmatically.

Additionally, we can configure a Selection Page Item in the Row Selector settings. Based on the selected rows, the corresponding primary key values are automatically set into the configured page item.

  • For single row selection, the selected primary key value is stored directly in the page item.
  • For multiple row selection, the values are stored as colon-separated values.
  • If multiple columns are marked as Primary Key, the selected values are stored in a structured format such as ["PrimaryValue1","PrimaryValue2"].

Selected row values can also be copied to the clipboard for quick reuse.

9Run SQL Blocks in SQL Commands Based on the Cursor Location

SQL Workshop includes the following enhancements in this release:

  • SQL Commands now support executing SQL blocks based on the cursor position. If we select a query in the editor and press Ctrl+Enter (Windows) or Cmd+Enter (Mac), only the selected query will run. If no query is selected, APEX automatically executes the SQL block surrounding the current cursor location.
  • SQL Developer Web is now directly accessible through a new entry in the SQL Workshop home page task list, providing quicker access to advanced database development tools.
10Editable Interactive Grid Clipboard Functionality

Clipboard Enhancements

  • Empty virtual columns, including the Actions button column, are no longer copied to the clipboard.
  • The selection row header is copied only when it contains text.
  • Copy now preserves hyperlinks when:
    • the column metadata includes a URL property, or
    • the column uses linkTargetColumn.
  • Paste now preserves links when the pasted value is a URL and the target column is configured with linkTargetColumn.
  • More content types can now be copied to the clipboard, including:
    • Read-only cells
    • Header and group header rows/cells
    • Aggregate rows/cells
    • Control break rows/cells

Selection and Navigation Improvements

  • The Selection Actions button is now always accessible via keyboard tab navigation, and focusing it no longer makes the header cell the current cell.
  • In Cell Selection mode:
    • Ctrl + Space selects all cells in a column.
    • Shift + Space selects all cells in a row.
    • Ctrl + A (Cmd + A on Mac) selects all cells.
  • Row selection headers can no longer be selected.
  • Cell range selection can now include aggregate rows.
  • Selected rows and columns are visually highlighted through updated header styling.
  • With virtual scroll pagination, selecting unloaded cells displays a Load All link in the footer, similar to row selection mode.

Editing and Keyboard Behavior

  • A progress spinner is now displayed when bulk operations such as Copy Down, Fill, Clear, or Paste take longer to complete.
  • In Cell Selection mode, inserting a new record adds it after the current row.
  • Insert and Delete keyboard actions now trigger the Interactive Grid actions selection-add-row and selection-delete, enabling more reliable advanced customization.
  • Row header sequence (when enabled using the JavaScript rowHeader option) now automatically updates for inserted and deleted records. The internal data-rownum row attribute is also updated accordingly.
11Button UI with Number / Count

Badge support for buttons using a custom data-count attribute.

Example
Button -> Custom Attributes -> data-count=3
12Interactive Report Rows Larger than 32K

Previously, Interactive Report had an output limit of 32K per row. With this release, the output generation process has been refactored, removing this limitation and allowing larger row data to be handled without the previous 32K restriction.

13Show Wait Popup

Include a "Show Wait Popup" property in Execute Server-side Code actions.

14Enable Paste from Excel to Interactive Grid

Editable Interactive Grids now support enhanced clipboard functionality, making it easier to work with tabular data across applications.

Available clipboard actions include:

  • Copy - Copies the selected data to the clipboard.
  • Cut - Copies the selected data to the clipboard and removes it from the editable Interactive Grid.
  • Paste - Pastes clipboard data into the grid, replacing existing cell values.
  • Paste Insert - Inserts new row(s) and pastes the clipboard data into those rows.
  • Drag and Drop Support - Allows us to drag and drop a range of cells directly from spreadsheets or other applications that support tabular data drag-and-drop.
15New Dynamic Actions for Success and Error Messages
  • Show Success Message - Displays a success message directly on the page.
  • Show Error Message - Displays an error message on the page, with an option to Clear Errors to remove any existing error messages before showing a new one. This is especially useful when multiple time buttons can trigger validations, ensuring previous errors are cleared so that only the latest relevant error message is displayed, avoiding multiple stacked error messages on the page.
16Delete Page Search Entry with ESC

In Page Search, instead of deleting characters one by one, we can use the Esc key to clear the entire search text at once.

17Infinite Scroll

Select One, Select Many, Combobox, and Autocomplete items now support an infinite scroll-like pattern so that users have the option of seeing all results without being limited by the Maximum Values in List property.

18Footer Position

Create position footer for regions inside inline dialog and inline drawer.

19IG Hidden Columns

We can now use the Set Value functionality for hidden columns in Interactive Grid.

20Copy Page to Correct Page Items Names Used in JavaScript

When copying a page, APEX now automatically updates the page item names referenced in JavaScript to match the new page's item names. Previously, after copying a page, developers had to manually update page item references in JavaScript wherever they were used. With this enhancement, those references are corrected automatically, reducing manual effort and helping prevent errors.

21Need Drawer Page Open Style Option

The Drawer Page now includes an Open Style option, allowing developers to choose how the drawer appears on the screen.

Available open style options include:

  • Top - Opens the drawer from the top.
  • Bottom - Opens the drawer from the bottom.
  • Start - Opens the drawer from the starting side (left in left-to-right layouts).
  • End - Opens the drawer from the ending side (right in left-to-right layouts).

Comments

Popular posts from this blog

APEX - Tip: Fix Floating Label Issue

Oracle APEX's Universal Theme provides a modern and clean user experience through features like floating (above) labels for page items.  These floating labels work seamlessly when users manually enter data, automatically moving the label above the field on focus or input.  However, a common UI issue appears when page item values are set Dynamically the label and the value overlap, resulting in a broken and confusing user interface. once the user focuses the affected item even once, the label immediately corrects itself and displays properly. When an issue is reported, several values are populated based on a single user input, causing the UI to appear misaligned and confusing for the end user. Here, I'll share a few tips to fix this issue. For example, employee details are populated based on the Employee name. In this case, the first True Action is used to set the values, and in the second True Action, paste the following code setTimeout(function () {   $("#P29_EMAIL,#P29_...

Oracle APEX UI Tip: Display Page Title Next to the APEX Logo

In most Oracle APEX applications, every page has a Page Title displayed at the top. While useful, this title occupies vertical space, especially in apps where screen real estate matters (dashboards, reports, dense forms). So the goal is simple: Show the page title near the APEX logo instead of consuming page content space. This keeps the UI clean, professional, and consistent across all pages. Instead of placing the page title inside the page body:         ✅ Fetch the current page title dynamically         ✅ Display it right after the APEX logo         ✅ Do it globally, so it works for every page All of this is achieved using:         ✅ Global Page (Page 0)         ✅ One Dynamic Action         ✅ PL/SQL + JavaScript Simple, effective, and reusable. 1️⃣ Create a Global Page Item On Page 0 (Global Page), create a hidden item:      P0_PAGE_TITLE This item wi...

Building a Custom Debug Package for Oracle APEX Using PL/SQL

While developing Oracle APEX applications, debugging page processes and backend PL/SQL logic can be challenging—especially when values are lost between processes or execution flow is unclear.  Although DBMS_OUTPUT is useful, it doesn’t work well inside APEX runtime. To solve this, I built a custom PL/SQL debug Package that logs execution flow and variable values into a database table.  This approach helps trace exactly where the code reached, what values were passed, and whether a block executed or not - even inside page-level processes and packaged procedures Why a Custom Debug Package? Works seamlessly inside Oracle APEX page processes Persists debug information even after session ends Helps trace execution flow Captures runtime values Can be turned ON/OFF dynamically Does not interrupt business logic The Package consists of:- Debug Table                         -  Stores debug messages Sequence ...