Skip to content

perf: drop unused MDXEditor from OSTable (cuts ~3.2 MiB eager)#17612

Merged
pauldambra merged 3 commits into
masterfrom
perf/drop-unused-mdxeditor
Jul 11, 2026
Merged

perf: drop unused MDXEditor from OSTable (cuts ~3.2 MiB eager)#17612
pauldambra merged 3 commits into
masterfrom
perf/drop-unused-mdxeditor

Conversation

@pauldambra

Copy link
Copy Markdown
Member

Changes

The single biggest eager-bundle win in the ratchet — and it's pure dead-code removal.

OSTable defined an Editor component wrapping @mdxeditor/editor's MDXEditor, but it was never rendered (dead since a dependency version bump ~9 months ago). The unused import { linkPlugin, MDXEditor } from '@mdxeditor/editor' dragged the entire markdown-editor stack — @mdxeditor/editor + @codemirror/*, @codesandbox/sandpack-react, acorn, downshift, react-hook-form, js-yaml — into the always-loaded bundle on every page.

OSTable is the only eager importer of @mdxeditor/editor (other references are type-only JsxComponentDescriptor imports or non-eager page components), so deleting the dead Editor component (and the now-unused navigate import) removes ~3.2 MiB / ~218 modules from the app eager closure with no behaviour change — nothing rendered it.

No preview verification needed: the removed component was never on screen. The other @mdxeditor consumers (the real MDXEditor wrapper, home-page components) are unaffected and keep it in their own page chunks.

Expected impact

@mdxeditor/editor and its editor dependency tree drop out of the eager graph (~3.2 MiB, the largest single split so far). Stacked on the jspdf PR.

Checklist

  • Words are spelled using American English
  • Dead code only — no rendered behaviour changes

🤖 Agent context

Stack: #17603 checker <- #17604 mapbox <- #17605 amcharts <- #17606 lottie <- #17607 jspdf <- this. Found via the eager-graph checker's largest-modules report + a "uniquely reachable through X" simulation. Remaining eager candidates after this: Stickers (696 KiB, MDX scope — likely asset-trim), @radix-ui/react-icons (481 KiB), rehype-raw (395 KiB).

@github-actions

github-actions Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Deploy preview

Status Details Updated (UTC)
🟢 Ready View preview Jul 11, 2026 09:36AM

@github-actions

github-actions Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Bundle report

Total JS (gzip)

6.30 MiB (-0.0 KiB / -0.0%)

Eager graph (modules shipped in each entrypoint's initial chunks)

Entrypoint Eager size Budget Modules
app 15.57 MiB (-0.7 KiB / -0.0%) report-only 1941
Largest modules in the app closure
Module Size
css ./node_modules/.pnpm/css-loader@5.2.7_webpack@5.101.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[1]!./node_modules/.pnpm/postcss-loader@4.3.0_postcss@8.5.6_webpack@5.101.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[2]!./src/styles/global.css 709.6 KiB
./src/components/Stickers/Stickers.tsx 696.4 KiB
./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/31a094f140f119e73085d847ae81b99b.js + 2 modules 614.1 KiB
./node_modules/.pnpm/@radix-ui+react-icons@1.3.2_react@18.3.1/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js 481.4 KiB
./node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js + 29 modules 395.1 KiB
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.cjs.js 364.8 KiB
./src/hooks/useCustomers.tsx + 54 modules 355.1 KiB
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js 354.8 KiB
./node_modules/.pnpm/react-markdown@8.0.7_@types+react@16.14.66_react@18.3.1/node_modules/react-markdown/lib/react-markdown.js + 88 modules 351.4 KiB
./node_modules/.pnpm/cloudinary-core@2.14.0_lodash@4.17.21/node_modules/cloudinary-core/cloudinary-core.js 281.9 KiB
./src/components/ProductComparisonTable/index.tsx + 118 modules 275.6 KiB
./node_modules/.pnpm/d3@7.9.0/node_modules/d3/src/index.js + 208 modules 247.4 KiB
./src/components/Pricing/PricingSlider/Slider.tsx + 87 modules 239.9 KiB
./gatsby-browser.tsx + 41 modules 239.8 KiB
./src/components/SearchUI/index.tsx + 73 modules 223.4 KiB

Eager-graph budgets are report-only until a baseline is established. Sizes are gzip of public/**/*.js; eager size is webpack module source bytes for the modules actually shipped in the entrypoint's initial chunks (post-tree-shake).

Base automatically changed from perf/lazy-jspdf to perf/lazy-lottie June 17, 2026 16:25
Base automatically changed from perf/lazy-lottie to master June 17, 2026 22:09
… bundle

OSTable defined an `Editor` component wrapping @mdxeditor/editor's MDXEditor, but
it was never rendered (dead code since a version bump 9 months ago). The unused
import pulled the whole markdown-editor stack — @mdxeditor/editor + @codemirror,
@codesandbox/sandpack, acorn, downshift, react-hook-form — into the always-loaded
bundle on every page.

OSTable was the only eager importer of @mdxeditor/editor, so deleting the dead
component (and the now-unused navigate import) removes ~3.2 MiB from the eager
graph with no behaviour change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@pauldambra pauldambra force-pushed the perf/drop-unused-mdxeditor branch from 6cd59e3 to 4ea3ec4 Compare July 1, 2026 13:14
Generated-By: PostHog Code
Task-Id: 87c33370-7a89-465f-83b9-a410115a6aff
Generated-By: PostHog Code
Task-Id: b3df0e59-990a-4421-9d5c-fb1ef859bf09
@pauldambra pauldambra merged commit 61f1bb2 into master Jul 11, 2026
19 checks passed
@pauldambra pauldambra deleted the perf/drop-unused-mdxeditor branch July 11, 2026 15:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants