Status & Severity
• Severity: High (Application unresponsiveness)
• Component: Query Tool / Data Grid
• Environment: Windows 10/11 x64, pgAdmin 4 v8.x (bundled with PostgreSQL 18.3)
• Browser/Runtime: NW.js (Desktop Mode/Server)
Summary
The pgAdmin 4 interface becomes completely unresponsive (hangs) when attempting to interact with the "View Data" grid containing large JSONB objects. The issue is specifically triggered after expanding a large cell and subsequently attempting to use grid controls like "Filter."
Steps to Reproduce
- Environment Setup: Install PostgreSQL 18.3 (EnterpriseDB Windows x64).
- Launch: Open pgAdmin 4 and connect to a local/remote server.
- Data Generation: Open the Query Tool and execute the following script to create a "heavy" record:
SQL
CREATE TABLE performance_test (
id serial PRIMARY KEY,
wide_data jsonb
);
INSERT INTO performance_test (wide_data)
SELECT jsonb_object_agg('column_' || i, 'value_' || i)
FROM generate_series(1, 100000) AS i;
4. Access Data: Right-click the performance_test table in the Browser tree -> View/Edit Data -> All Rows.
5. Trigger Expansion: Double-click the result cell in the wide_data column to view the expanded JSON content.
6. Interaction: While the cell is active or immediately after, click the Filter icon in the data grid toolbar.
Actual Result
The pgAdmin 4 window freezes entirely. No further clicks are registered, and the application must be force-closed via Task Manager.
Expected Result
The UI should remain responsive. Grid operations (Filtering/Sorting) should either execute normally or provide a "Loading" state without locking the main thread.
Error Log / Console Output
The following violation is observed in the developer console:
[Violation] Permissions policy violation: unload is not allowed in this document.
Preliminary Analysis
The hang appears to be a combination of:
• DOM Exhaustion: Attempting to render or manage a single cell containing 100,000+ JSON keys in the "Edit" modal.
• Main Thread Blocking: The UI thread is likely saturated by the string serialization of the JSONB object, causing the "unload" violation when the application attempts to transition states (like opening a filter dialog).
Workaround
Limit the JSON size using jsonb_pretty() or substring() in the Query Tool rather than using the "View Data" shortcut for large datasets.
Snapshot:

Status & Severity
• Severity: High (Application unresponsiveness)
• Component: Query Tool / Data Grid
• Environment: Windows 10/11 x64, pgAdmin 4 v8.x (bundled with PostgreSQL 18.3)
• Browser/Runtime: NW.js (Desktop Mode/Server)
Summary
The pgAdmin 4 interface becomes completely unresponsive (hangs) when attempting to interact with the "View Data" grid containing large JSONB objects. The issue is specifically triggered after expanding a large cell and subsequently attempting to use grid controls like "Filter."
Steps to Reproduce
SQL
CREATE TABLE performance_test (
id serial PRIMARY KEY,
wide_data jsonb
);
INSERT INTO performance_test (wide_data)
SELECT jsonb_object_agg('column_' || i, 'value_' || i)
FROM generate_series(1, 100000) AS i;
4. Access Data: Right-click the performance_test table in the Browser tree -> View/Edit Data -> All Rows.
5. Trigger Expansion: Double-click the result cell in the wide_data column to view the expanded JSON content.
6. Interaction: While the cell is active or immediately after, click the Filter icon in the data grid toolbar.
Actual Result
The pgAdmin 4 window freezes entirely. No further clicks are registered, and the application must be force-closed via Task Manager.
Expected Result
The UI should remain responsive. Grid operations (Filtering/Sorting) should either execute normally or provide a "Loading" state without locking the main thread.
Error Log / Console Output
The following violation is observed in the developer console:
[Violation] Permissions policy violation: unload is not allowed in this document.
Preliminary Analysis
The hang appears to be a combination of:
• DOM Exhaustion: Attempting to render or manage a single cell containing 100,000+ JSON keys in the "Edit" modal.
• Main Thread Blocking: The UI thread is likely saturated by the string serialization of the JSONB object, causing the "unload" violation when the application attempts to transition states (like opening a filter dialog).
Workaround
Limit the JSON size using jsonb_pretty() or substring() in the Query Tool rather than using the "View Data" shortcut for large datasets.
Snapshot: