Skip to content

chore(deps): bump react-ace from 14.0.1 to 15.0.0 in /superset-frontend - #42833

Open
dependabot[bot] wants to merge 2 commits into
masterfrom
dependabot/npm_and_yarn/superset-frontend/react-ace-15.0.0
Open

chore(deps): bump react-ace from 14.0.1 to 15.0.0 in /superset-frontend#42833
dependabot[bot] wants to merge 2 commits into
masterfrom
dependabot/npm_and_yarn/superset-frontend/react-ace-15.0.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 6, 2026

Copy link
Copy Markdown
Contributor

Bumps react-ace from 14.0.1 to 15.0.0.

Release notes

Sourced from react-ace's releases.

v15.0.0 - ESM Support

Closes #2122 and #1540

react-ace now ships a native ESM build alongside CommonJS. import AceEditor from "react-ace" resolves to real ES modules in modern bundlers and in Node — fixing default-import interop under Vite 8's stricter CommonJS handling (#2122).

  • New exports map with import/require conditions and per-format TypeScript declarations (lib/index.mjs + lib/index.d.mts for ESM, lib/index.js + lib/index.d.ts for CJS)
  • module field added for older bundlers; main/types unchanged for legacy tooling
  • Verified with publint and arethetypeswrong (green across node10, node16, and bundler resolution modes)

Breaking changes

  • Deep imports are no longer supported. The exports map only exposes the package root, so paths like react-ace/lib/ace no longer resolve. Import everything from the root instead: import AceEditor, { split as SplitEditor, diff as DiffEditor } from "react-ace";
  • These were never documented; most users are unaffected.
  • ace-builds now loads when react-ace is imported rather than lazily on first render. Bundle contents are unchanged (it was always included); if you want to defer loading, lazy-load react-ace itself, e.g. via React.lazy().

Other changes

  • The SSR window shim is gone — modern ace-builds evaluates cleanly without a window object, so server-side imports work with no globals mutation.
  • Fixed prop-types usage that would crash under Node's ESM loader (PropTypes.oneOfType is not a function).
  • Loading Ace from a CDN (window.ace) continues to work as before, as do the UMD bundles in dist/.

v14.1.0

What's Changed

New Contributors

Full Changelog: securingsincity/react-ace@v14.0.1...v14.1.0

Commits
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for react-ace since your current version.

Install script changes

This version modifies prepare script that runs during installation. Review the package contents before updating.


@dependabot dependabot Bot added dependabot npm Dependabot - npm related PRs labels Aug 6, 2026
@dosubot dosubot Bot added dependencies:npm javascript Dependabot - Pull requests that update Javascript code risk:breaking-change Issues or PRs that will introduce breaking changes labels Aug 6, 2026
@bito-code-review

bito-code-review Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Bito Automatic Review Skipped - Files Excluded

Bito didn't auto-review this change because all changed files are in the exclusion list for automatic reviews. No action is needed if you didn't intend for the agent to review it. Otherwise, to manually trigger a review, type /review in a comment and save.
You can change the excluded files settings here, or contact your Bito workspace admin at evan@preset.io.

@codecov

codecov Bot commented Aug 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.58%. Comparing base (4c894af) to head (285ab27).
⚠️ Report is 10 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master   #42833      +/-   ##
==========================================
- Coverage   66.38%   65.58%   -0.81%     
==========================================
  Files        2857     2857              
  Lines      161133   161133              
  Branches    37064    37064              
==========================================
- Hits       106967   105674    -1293     
- Misses      52147    53448    +1301     
+ Partials     2019     2011       -8     
Flag Coverage Δ
javascript 73.19% <ø> (+<0.01%) ⬆️
mysql ?
postgres ?
unit ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sadpandajoe
sadpandajoe requested a review from rusackas August 6, 2026 17:23
@rusackas

rusackas commented Aug 7, 2026

Copy link
Copy Markdown
Member

@dependabot recreate

@dependabot
dependabot Bot force-pushed the dependabot/npm_and_yarn/superset-frontend/react-ace-15.0.0 branch from a72de3a to f26f076 Compare August 7, 2026 12:56
Bumps [react-ace](https://github.com/securingsincity/react-ace) from 14.0.1 to 15.0.0.
- [Release notes](https://github.com/securingsincity/react-ace/releases)
- [Changelog](https://github.com/securingsincity/react-ace/blob/main/CHANGELOG.md)
- [Commits](securingsincity/react-ace@v14.0.1...v15.0.0)

---
updated-dependencies:
- dependency-name: react-ace
  dependency-version: 15.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/npm_and_yarn/superset-frontend/react-ace-15.0.0 branch from f26f076 to b7a7b35 Compare August 7, 2026 18:11
…fing

react-ace 15.0.0 replaces its internal componentDidUpdate deep-equality
check (lodash.isequal -> fast-equals's deepEqual) for deciding whether
to re-apply the annotations/markers/setOptions/scrollMargin props.
Verified via the published package that it is still deepEqual (not
shallowEqual), so the semantic intent is preserved -- but there was no
test pinning this behavior for the one prop Superset actually relies
on it for: AceEditorProvider, EditorWrapper, and several modals
(DatabaseModal, AnnotationModal, ThemeModal, PropertiesModal) all pass
a freshly mapped annotations array on every render.

Adds a regression test asserting both directions: a same-content,
different-reference annotations array must not re-trigger
session.setAnnotations() (or the editor would thrash on every
keystroke-driven re-render), while genuinely different content must
still update it. Verified this actually catches a regression by
temporarily breaking each direction in the installed react-ace 15.0.0
package and confirming the test fails accordingly, then restoring it.

markers itself is never used anywhere in the Superset codebase (only
annotations is), so it does not need its own coverage here.

@rusackas rusackas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Risk assessment: react-ace 14.0.1 → 15.0.0

Went through react-ace's actual published source for both versions (not just the release notes) and every place it's used in this codebase. Summary: low risk, and I've added a regression test for the one part of the bump that genuinely touches Superset's behavior.

The headline breaking change doesn't apply here

v15's release notes call out one breaking change: deep imports (react-ace/lib/...) no longer resolve, since the new ESM exports map only exposes the package root. Checked every react-ace import in the codebase (AsyncAceEditor/index.tsx, types.ts) — Superset only ever does a dynamic import('react-ace') and consumes the default export (AceEditor) plus the IAceEditorProps type. No deep imports, no split/diff named exports. Unaffected.

The change that does matter: internal equality-library swap

react-ace's componentDidUpdate decides whether to re-apply annotations, markers, setOptions, and scrollMargin props via a deep-equality check. 14.0.1 uses lodash.isequal; 15.0.0 replaces it with fast-equals's deepEqual (confirmed by downloading and diffing the actual published lib/ace.js/ace.mjs between versions — the surrounding lifecycle logic is otherwise an unchanged, faithful port). Critically it's deepEqual, not shallowEqual — the semantic intent is preserved.

This matters because Superset's own usage pattern is exactly the case this check exists for: AceEditorProvider.tsx, EditorWrapper, and several modals (DatabaseModal, AnnotationModal, ThemeModal, PropertiesModal's AdvancedSection) all pass a freshly .map()-derived annotations array on every render — same content, new array reference, every time. If the equality semantics ever diverged (e.g. a future swap to shallowEqual, or an edge case in how fast-equals handles this specific {row, column, text, type} shape), the failure mode is either constant unnecessary re-application (perf) or silently stale annotations (a real, easy-to-miss correctness bug — SQL validation errors or JSON schema errors just not updating in the editor).

There was no existing test covering this path at all, despite annotations being one of the most heavily-used props in the whole AsyncAceEditor surface. markers itself is never used anywhere in the codebase, so it doesn't need coverage.

What I added

A new test in AsyncAceEditor.test.tsx that renders SQLEditor, spies on the underlying Ace session's setAnnotations, and asserts both directions:

  • a same-content, different-reference annotations array does not re-trigger setAnnotations (guards the perf case)
  • genuinely different content does trigger it, with the new value (guards correctness)

I verified this is a real regression guard, not a tautology: I installed the actual bumped react-ace 15.0.0 locally, ran the new test (passes), then temporarily patched the installed package to break each direction independently (always-skip and always-apply) and confirmed the test fails accordingly in both cases before restoring the real package. Also ran the full existing AsyncAceEditor suite (24/24 pass) plus the three other test files that reference react-ace indirectly through Superset's wrapper (SqlEditor.test.tsx, CssTemplateModal.test.tsx, DndFilterSelect.test.tsx — 27/27 pass) against the real 15.0.0 install.

Other notes, non-blocking

  • TypeScript's IAceEditorProps interface is unchanged field-for-field between versions (diffed the actual .d.ts output) — no type-level breakage.
  • v15's release notes mention ace-builds now loads eagerly on react-ace import rather than lazily on first render. Doesn't matter for Superset: AsyncAceEditor's own import('react-ace') is already deferred behind AsyncEsmComponent, so this is already lazy at the point where it matters.
  • v14.1.0 (included in this bump's range) fixed a real upstream bug: null/absent markers handling. Moot for Superset since markers isn't used, but worth knowing it's a net-positive line item in the bump, not a risk.

No blockers found.

@netlify

netlify Bot commented Aug 8, 2026

Copy link
Copy Markdown

Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit 285ab27
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6a76afd01beb340008d0a809
😎 Deploy Preview https://deploy-preview-42833--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@bito-code-review

bito-code-review Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Code Review Agent Run #45e92f

Actionable Suggestions - 0
Review Details
  • Files reviewed - 1 · Commit Range: b7a7b35..285ab27
    • superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx
  • Files skipped - 2
    • superset-frontend/package-lock.json - Reason: Filter setting
    • superset-frontend/packages/superset-ui-core/package.json - Reason: Filter setting
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Superset You can customize the agent settings here or contact your Bito workspace admin at evan@preset.io.

Documentation & Help

AI Code Review powered by Bito Logo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependabot dependencies:npm javascript Dependabot - Pull requests that update Javascript code npm Dependabot - npm related PRs packages risk:breaking-change Issues or PRs that will introduce breaking changes size/M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants