Skip to content

fix: make horizontal scroll bar thicker on tables#41370

Merged
rahulbarwal merged 7 commits intoreleasefrom
fix/issue-37549/horizontal-scroll-height-table
Nov 20, 2025
Merged

fix: make horizontal scroll bar thicker on tables#41370
rahulbarwal merged 7 commits intoreleasefrom
fix/issue-37549/horizontal-scroll-height-table

Conversation

@salevine
Copy link
Contributor

@salevine salevine commented Nov 11, 2025

Description

Tip

Add a TL;DR when the description is longer than 500 words or extremely technical (helps the content, marketing, and DevRel team).

Please also include relevant motivation and context. List any dependencies that are required for this change. Add links to Notion, Figma or any other documents that might be relevant to the PR.

Fixes #37549

Warning

If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation

/ok-to-test tags="@tag.Table"

🔍 Cypress test results

Tip

🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/19530806854
Commit: d4cdfb8
Cypress dashboard.
Tags: @tag.Table
Spec:


Thu, 20 Nov 2025 09:21:32 UTC

Communication

Should the DevRel and Marketing teams inform users about this change?

  • Yes
  • No

Summary by CodeRabbit

  • Style
    • Updated table scrollbars: increased vertical thickness, raised horizontal track/thumb heights, and added a smooth hover-height transition for more consistent appearance and interaction feedback.
  • Tests
    • Updated test expectations and regression checks to align with the adjusted scrollbar sizing and offsets.

✏️ Tip: You can customize this high-level summary in your review settings.

@salevine salevine requested a review from rahulbarwal November 11, 2025 08:59
@salevine salevine requested a review from a team as a code owner November 11, 2025 08:59
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 11, 2025

Walkthrough

Updated TableWidgetV2 scrollbar sizing: increased exported TABLE_SCROLLBAR_HEIGHT from 8 to 10, adjusted horizontal scrollbar CSS heights and hover transition in the styled wrapper, and updated a Cypress regression test to account for the scrollbar height. No runtime control flow changes.

Changes

Cohort / File(s) Summary
Scrollbar constant
app/client/src/widgets/TableWidgetV2/component/Constants.ts
Changed exported TABLE_SCROLLBAR_HEIGHT from 8 to 10.
Scrollbar styling
app/client/src/widgets/TableWidgetV2/component/TableStyledWrappers.tsx
Increased inner horizontal scrollbar height (was 5px, now 8px), kept hover height at 8px and added transition: height 0.15s ease-in-out; adjusted comments and removed the previous hover-height change.
Regression test
app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts
Test now compares expected scroll content height using the updated TABLE_SCROLLBAR_HEIGHT (10) when computing expected values.
Unit tests
app/client/src/widgets/TableWidgetV2/component/TableContext.test.tsx
Updated expected scrollContainerStyles heights to reflect subtraction of TABLE_SCROLLBAR_HEIGHT = 10 (new expected heights: 350 and 388).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Attention points:
    • Verify the constant is imported/used consistently (units/px) where referenced.
    • Confirm CSS selector specificity (.simplebar-horizontal/.simplebar-scrollbar) produces the intended layout across target browsers and DPI.
    • Ensure regression/unit test expectations match rendered styles in CI/browser environments.

Poem

A tiny bar grows firmer, wider than before,
Users slide with ease across the table's floor.
Ten pixels hum, a gentler scroll in store,
Small tweak, smoother glide — delight restored. 🎉

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning PR description follows template structure but lacks critical sections: no TL;DR, motivation, context, or relevant links despite being required by template. Add TL;DR explaining the scrollbar thickness change, provide motivation/context for the fix, and include any related Notion/Figma design documents. Ensure Communication checkbox is checked.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely describes the main change: increasing the horizontal scrollbar thickness on tables.
Linked Issues check ✅ Passed Code changes successfully implement the feature objective [#37549]: increased horizontal scrollbar thickness from 8px to 10px, improved styling with transitions, and updated test assertions accordingly.
Out of Scope Changes check ✅ Passed All changes are directly related to increasing scrollbar thickness [#37549]: constant updates, styling adjustments, test updates, and test suite modifications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/issue-37549/horizontal-scroll-height-table

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added the Bug Something isn't working label Nov 11, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
app/client/src/widgets/TableWidgetV2/component/TableStyledWrappers.tsx (1)

68-78: Review the scrollbar sizing logic for consistency and usability.

The current implementation has the scrollbar thumb (14px) larger than its track (9px) in the normal state, then shrinking to 10px on hover while the track expands to 12px. This differs from the vertical scrollbar pattern (lines 81-91) where the thumb grows slightly on hover (10px → 11px).

Consider:

  • Typically, the thumb should fit within the track dimensions
  • Shrinking the thumb on hover (14px → 10px) contradicts the goal of improving visibility and usability
  • Align with the vertical scrollbar's hover behavior for consistency
      height: ${TABLE_SCROLLBAR_HEIGHT}px;
      .simplebar-scrollbar {
-        height: 14px;
+        height: ${TABLE_SCROLLBAR_HEIGHT}px;
      }
      &.simplebar-hover {
-        height: 12px;
+        height: 10px;
        & .simplebar-scrollbar {
-          height: 10px;
+          height: 11px;
        }
      }
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f092c5d and 0dd8df9.

📒 Files selected for processing (2)
  • app/client/src/widgets/TableWidgetV2/component/Constants.ts (1 hunks)
  • app/client/src/widgets/TableWidgetV2/component/TableStyledWrappers.tsx (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2024-10-08T15:32:34.115Z
Learnt from: alex-golovanov
Repo: appsmithorg/appsmith PR: 36665
File: app/client/src/IDE/Components/FileTab/styles.tsx:19-19
Timestamp: 2024-10-08T15:32:34.115Z
Learning: Do not suggest replacing hardcoded `padding-top: 6px;` with design variables in `app/client/src/IDE/Components/FileTab/styles.tsx`.

Applied to files:

  • app/client/src/widgets/TableWidgetV2/component/Constants.ts
🧬 Code graph analysis (1)
app/client/src/widgets/TableWidgetV2/component/TableStyledWrappers.tsx (1)
app/client/src/widgets/TableWidgetV2/component/Constants.ts (1)
  • TABLE_SCROLLBAR_HEIGHT (602-602)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: client-unit-tests / client-unit-tests
  • GitHub Check: client-lint / client-lint
  • GitHub Check: client-build / client-build
  • GitHub Check: client-check-cyclic-deps / check-cyclic-dependencies
  • GitHub Check: client-prettier / prettier-check
🔇 Additional comments (1)
app/client/src/widgets/TableWidgetV2/component/Constants.ts (1)

602-602: Confirm scrollbar thickness increase adequately addresses user visibility concerns.

GitHub issue #37549 documents that users struggle to identify the horizontal scrollbar as it's too thin, with some unaware the table is even scrollable. The 1px increase (8px → 9px) is modest relative to the problem severity. At 9px, the scrollbar remains substantially thinner than standard browser scrollbars (15-17px).

Verify this increase meets design specifications and user accessibility needs, or consider a more substantial increase.

rahulbarwal
rahulbarwal previously approved these changes Nov 11, 2025
@rahulbarwal rahulbarwal added the ok-to-test Required label for CI label Nov 11, 2025
@rahulbarwal rahulbarwal added the Table Widget V2 Issues related to Table Widget V2 label Nov 11, 2025
rahulbarwal
rahulbarwal previously approved these changes Nov 11, 2025
@rahulbarwal
Copy link
Contributor

/build-deploy-preview

@github-actions
Copy link

Deploying Your Preview: https://github.com/appsmithorg/appsmith/actions/runs/19321214367.
Workflow: On demand build Docker image and deploy preview.
skip-tests: . env: .
PR: 41370.
recreate: .

@github-actions
Copy link

Deploy-Preview-URL: https://ce-41370.dp.appsmith.com

@rahulbarwal
Copy link
Contributor

/build-deploy-preview

@github-actions
Copy link

Deploying Your Preview: https://github.com/appsmithorg/appsmith/actions/runs/19323676531.
Workflow: On demand build Docker image and deploy preview.
skip-tests: . env: .
PR: 41370.
recreate: .

@github-actions
Copy link

Deploy-Preview-URL: https://ce-41370.dp.appsmith.com

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts (1)

21-21: Consider clarifying the constant duplication.

The hardcoded constant creates a maintenance risk if TABLE_SCROLLBAR_HEIGHT changes in Constants.ts. While direct imports from application source may not be feasible in Cypress tests, consider:

  1. Updating the comment to explicitly state this is a duplicate that must be kept in sync
  2. Or exploring if the constant can be imported via a shared test utilities module

Example comment improvement:

-      const TABLE_SCROLLBAR_HEIGHT = 10; // From Constants.ts
+      // Must match TABLE_SCROLLBAR_HEIGHT in Constants.ts - duplicated because Cypress tests can't import app source directly
+      const TABLE_SCROLLBAR_HEIGHT = 10;
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a3bb54a and cc5a94d.

📒 Files selected for processing (3)
  • app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts (1 hunks)
  • app/client/src/widgets/TableWidgetV2/component/Constants.ts (1 hunks)
  • app/client/src/widgets/TableWidgetV2/component/TableStyledWrappers.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/client/src/widgets/TableWidgetV2/component/TableStyledWrappers.tsx
🧰 Additional context used
📓 Path-based instructions (1)
app/client/cypress/**/**.*

⚙️ CodeRabbit configuration file

app/client/cypress/**/**.*: Review the following e2e test code written using the Cypress test library. Ensure that:

  • Follow best practices for Cypress code and e2e automation.
  • Avoid using cy.wait in code.
  • Avoid using cy.pause in code.
  • Avoid using agHelper.sleep().
  • Use locator variables for locators and do not use plain strings.
  • Use data-* attributes for selectors.
  • Avoid Xpaths, Attributes and CSS path.
  • Avoid selectors like .btn.submit or button[type=submit].
  • Perform logins via API with LoginFromAPI.
  • Perform logout via API with LogOutviaAPI.
  • Perform signup via API with SignupFromAPI.
  • Avoid using it.only.
  • Avoid using after and aftereach in test cases.
  • Use multiple assertions for expect statements.
  • Avoid using strings for assertions.
  • Do not use duplicate filenames even with different paths.
  • Avoid using agHelper.Sleep, this.Sleep in any file in code.

Files:

  • app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts
🧠 Learnings (4)
📚 Learning: 2024-11-13T09:11:36.959Z
Learnt from: vhemery
Repo: appsmithorg/appsmith PR: 37371
File: app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_base64_spec.js:35-37
Timestamp: 2024-11-13T09:11:36.959Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/Widgets/Image/Image_base64_spec.js`, when writing Cypress end-to-end tests for the Image Widget in JavaScript, use `viewWidgetsPage.imageinner` as the selector when asserting 'src' and 'alt' attributes to maintain consistency.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts
📚 Learning: 2025-11-05T12:56:49.249Z
Learnt from: vsvamsi1
Repo: appsmithorg/appsmith PR: 41363
File: app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts:0-0
Timestamp: 2025-11-05T12:56:49.249Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/StaticUrl/PagePersistance_Spec.ts`, the test suite intentionally uses sequential tests where Tests 4-6 depend on state (`page1Slug`, `page2Slug`) set in Tests 2-3. The author (vsvamsi1) prioritizes readability by breaking the flow into different segments over strict test isolation.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts
📚 Learning: 2025-11-05T12:58:32.486Z
Learnt from: vsvamsi1
Repo: appsmithorg/appsmith PR: 41363
File: app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts:32-225
Timestamp: 2025-11-05T12:58:32.486Z
Learning: In the file `app/client/cypress/e2e/Regression/ClientSide/StaticUrl/SlugPersistance_Spec.ts`, the test suite intentionally uses sequential tests where Tests 2-5 depend on state from previous tests (e.g., slug values modified in earlier tests). The author (vsvamsi1) prioritizes readability by breaking the flow into different segments over strict test isolation.

Applied to files:

  • app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts
📚 Learning: 2024-10-08T15:32:34.115Z
Learnt from: alex-golovanov
Repo: appsmithorg/appsmith PR: 36665
File: app/client/src/IDE/Components/FileTab/styles.tsx:19-19
Timestamp: 2024-10-08T15:32:34.115Z
Learning: Do not suggest replacing hardcoded `padding-top: 6px;` with design variables in `app/client/src/IDE/Components/FileTab/styles.tsx`.

Applied to files:

  • app/client/src/widgets/TableWidgetV2/component/Constants.ts
🧬 Code graph analysis (1)
app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts (1)
app/client/src/widgets/TableWidgetV2/component/Constants.ts (1)
  • TABLE_SCROLLBAR_HEIGHT (602-602)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: perform-test / client-build / client-build
  • GitHub Check: perform-test / server-build / server-unit-tests
  • GitHub Check: perform-test / rts-build / build
  • GitHub Check: client-check-cyclic-deps / check-cyclic-dependencies
  • GitHub Check: client-unit-tests / client-unit-tests
  • GitHub Check: client-lint / client-lint
  • GitHub Check: client-prettier / prettier-check
  • GitHub Check: client-build / client-build
🔇 Additional comments (1)
app/client/cypress/e2e/Regression/ClientSide/Widgets/TableV2/scrollbar_spec.ts (1)

28-36: LGTM! Test logic correctly accounts for scrollbar height.

The assertion properly accounts for the implementation detail that the scroll container always subtracts TABLE_SCROLLBAR_HEIGHT from the table height. The explanatory comment adds valuable context.


export const TABLE_SCROLLBAR_WIDTH = 10;
export const TABLE_SCROLLBAR_HEIGHT = 8;
export const TABLE_SCROLLBAR_HEIGHT = 10;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

Verify all usages of TABLE_SCROLLBAR_HEIGHT have been updated.

The constant increase from 8 to 10 aligns with the PR objective. Ensure all dependent code accounts for this change, particularly any hardcoded calculations or CSS that might reference the old value.

Run the following script to identify any hardcoded references to the old value or other usages:


🏁 Script executed:

#!/bin/bash
# Search for hardcoded scrollbar height values that might need updating
rg -n --type ts --type tsx --type css -C3 '\b8px\b|\bheight:\s*8\b' app/client/src/widgets/TableWidgetV2/

# Search for all usages of TABLE_SCROLLBAR_HEIGHT to verify they handle the new value
rg -n --type ts --type tsx -C3 'TABLE_SCROLLBAR_HEIGHT' app/client/src/widgets/TableWidgetV2/

Length of output: 55


🏁 Script executed:

#!/bin/bash
# Find all ts/tsx files and search for hardcoded scrollbar heights
fd -e ts -e tsx 'TableWidgetV2' app/client/src/widgets/ | xargs rg -n '\b8px\b|\bheight:\s*8\b' -C3

# Search for all usages of TABLE_SCROLLBAR_HEIGHT across the entire codebase
rg -n 'TABLE_SCROLLBAR_HEIGHT' app/client/src/ -C2

# Also check if old value (8) appears in test files or specs
fd -e ts -e tsx -e spec 'test|spec' app/client/src/widgets/TableWidgetV2/ | xargs rg -n '\b8\b' -C2

Length of output: 263785


Update hardcoded scrollbar heights in TableStyledWrappers.tsx to match constant change.

The constant increase from 8 to 10 is incomplete. In app/client/src/widgets/TableWidgetV2/component/TableStyledWrappers.tsx, lines 71 and 76 contain hardcoded height: 8px; inside .simplebar-scrollbar selectors that should be updated to 10px to maintain visual consistency with the container height at line 68.

🤖 Prompt for AI Agents
In app/client/src/widgets/TableWidgetV2/component/TableStyledWrappers.tsx around
lines 68–76, update the two hardcoded scrollbar heights (currently "height:
8px;" at lines 71 and 76 inside the .simplebar-scrollbar selectors) to "height:
10px;" so they match the TABLE_SCROLLBAR_HEIGHT constant change and the
container height defined at line 68; verify both selectors are updated to
maintain visual consistency.

@rahulbarwal rahulbarwal merged commit 5fe86c8 into release Nov 20, 2025
45 checks passed
@rahulbarwal rahulbarwal deleted the fix/issue-37549/horizontal-scroll-height-table branch November 20, 2025 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Something isn't working ok-to-test Required label for CI Table Widget V2 Issues related to Table Widget V2

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants