Expandable Row Table Component for Retool

Hi Retool Builders,

We are sharing a custom-built Expandable Row Table component developed using React and TypeScript for advanced data visualization and operational dashboards inside Retool.

This component was designed to address common limitations around handling large datasets, expandable details, dynamic column management, and enterprise-style table interactions within Retool custom components.


Overview

The component provides a highly customizable and scalable table experience with support for:

  • Expandable rows
  • Dynamic column visibility
  • Drag-and-drop column rearranging
  • Advanced sorting behavior
  • Pagination
  • Search and filtering
  • CSV export
  • Dynamic key-value rendering
  • Theme-aware footer styling
  • Persistent column ordering
  • Interactive row selection state
  • Multi-key expandable rendering
  • Recursive nested JSON visualization

The component is optimized for:

  • Financial dashboards
  • Operational tooling
  • Audit monitoring
  • Transaction tracking
  • API response inspection
  • Analytics applications

Key Features

Expandable Rows

The expandable section is designed to intelligently render almost any type of nested data structure.

Supported capabilities include:

  • Single expandable object rendering
  • Multi-key expandable data rendering
  • Recursive nested JSON visualization
  • Automatic key-value formatting
  • API response inspection
  • Object and array rendering
  • Dynamic nested structure handling
  • Long text handling
  • URL rendering
  • Mixed datatype rendering
  • Automatic readable formatting for nested content

The component supports multiple expandable keys such as:

environment,activity_log

or:

[ "environment" , "activity_log" ]

Expandable content is automatically normalized and rendered into a structured UI layout for easier inspection and debugging.

Smart Data Handling

Supports:

  • Objects
  • Arrays
  • Nested JSON
  • API responses
  • Long-form text
  • URLs
  • Booleans
  • Null values
  • Mixed data structures

Advanced Table Interactions

  • Drag-and-drop column rearranging
  • Persistent column order after refresh
  • Dynamic visible column support
  • ASC → DESC → Reset sorting cycle
  • Responsive pagination footer
  • Interactive row selection state

Toolbar Actions

  • CSV export
  • Refresh actions

Custom Styling Controls

  • Header colors
  • Row colors
  • Font customization
  • Pagination styling
  • Footer customization
  • Theme-aware footer support

Additional Features

  • Automatic column label formatting
  • Search support
  • Empty state handling
  • Responsive layout behavior
  • Dynamic schema support
  • Runtime column persistence

Preview Use Cases

  • Expandable transaction inspection
  • Dynamic audit log analysis
  • API response viewer
  • Financial operations dashboards
  • Nested metadata viewers
  • Enterprise data grid interfaces

Inputs

Property Type Description
tableData Array Main table dataset
pageSize Number Rows per page
expandableDataKey String Expandable object field(s)
showToolbar Boolean Toggle toolbar visibility
showSearchBar Boolean Toggle search functionality
headerColor String Header background color
headerTextColor String Header text color
rowBackground String Default row background
alternateRowBackground String Alternate row background
accentColor String Accent/highlight color
footerBackgroundColor String Footer background color
paginationTextColor String Pagination text styling
rowHeight Enum Small / Medium / Large / Dynamic
columnWidthMode Enum Auto / Manual

Outputs

Property Type Description
selectedRowData Object Selected row object
columnOrder Array Current column arrangement
visibleColumns Array Active visible columns

Example output:

 {
    record_id: 501,
    case_number: "CASE-HT9021",
    platform: "Nimbus Support",
    team: "Customer Experience",
    assigned_agent: "Mila Harper",
    contact_email: "mila.harper@samplemail.io",
    region: "Netherlands",
    service_type: "Subscription",
    ticket_reference: "SUB-77412",
    severity: "Critical",
    status: "In Progress",
    opened_at: "2026-03-10T09:14:21Z",
    last_activity_at: "2026-03-10T10:42:11Z",
    resolution_eta_hours: 4,
    labels: ["escalated", "vip-client", "technical"],
    environment: {
      browser: "Brave",
      operating_system: "Ubuntu 24.04",
      screen_resolution: "2560x1440",
      language: "English",
    },
    activity_log: {
      latest_action: "Escalated to engineering",
      response_time_ms: 342,
      attachments: ["error_screenshot.png", "session_log.txt"],
      diagnostics: {
        network_status: "stable",
        memory_usage_percent: 63,
      },
    },
  }

How It Works

  • Built using React 18 and the Retool Custom Component SDK
  • Dynamically adapts to changing schemas and datasets
  • Supports recursive expandable content rendering
  • Supports multi-key expandable rendering
  • Stores column arrangement persistently
  • Optimized for large operational datasets
  • Fully frontend-based with no backend dependency

Use Cases

  • Audit Logs
  • Financial Transactions
  • Payment Monitoring
  • API Debugging
  • Shipment Tracking
  • Operational Dashboards
  • Analytics Tables
  • Internal Admin Tools
  • Compliance Monitoring
  • KPI Reporting

Implementation Details

  • Dynamic schema handling
  • Recursive JSON normalization
  • Runtime column persistence
  • Responsive rendering logic
  • Enterprise-style pagination behavior
  • Lightweight frontend architecture

Technology Stack

  • React 18
  • TypeScript
  • Retool Custom Component SDK
  • Lucide React Icons

Source Code

The component is fully built using:

  • React 18
  • TypeScript
  • Retool Custom Component SDK
  • Lucide React Icons

Current capabilities include:

  • Expandable rows
  • Multi-key expandable rendering
  • Dynamic column visibility
  • Drag-and-drop column rearranging
  • Persistent column ordering
  • Sorting (ASC / DESC / Reset)
  • Pagination
  • CSV export
  • Search and filtering
  • Dynamic expandable key-value rendering
  • Recursive nested JSON rendering
  • Custom footer and theme controls
  • Row selection state handling
  • Responsive UI behavior
2 Likes

Thanks for sharing, @WidleStudioLLP!

2 Likes