Skip to content

Toolchain updates. Node 18, TypeScript 5, Next 13#1938

Merged
hshoff merged 73 commits into
masterfrom
hshoff-typedoc
Oct 31, 2025
Merged

Toolchain updates. Node 18, TypeScript 5, Next 13#1938
hshoff merged 73 commits into
masterfrom
hshoff-typedoc

Conversation

@hshoff

@hshoff hshoff commented Oct 29, 2025

Copy link
Copy Markdown
Member

Picking up where #1894 left off. The goal here was to land a react-docgen-typescript-loader replacement to unblock the typescript upgrade. Then other things needed updating too.

My plan was to make this PR onto @williaster's branch, but GitHub doesn't seem to like me doing that right now. So we can use this PR to consolidate.

💥 Breaking Changes

  • Almost the whole toolchain is getting updated here. Just to be safe, I think we should cut a new major for this.
  • xychart: remove withRegisteredData
  • update types

🏠 Internal

  • adds new custom typescript docgen script to replace deprecated react-docgen-typescript-loader we were using
  • add missing jsdoc comments for api docs
  • update node to 18 for now. 20 and then 22 will come in follow up PRs
  • update next.js from 11 => 13
  • update typescript from 3.8 => 5.7
  • updates types due typescript updates and @types/* updates

Testing

  • yarn installs successfully
  • yarn builds successfully
  • yarn test successfully (using vitest)
  • demo site works

@hshoff hshoff requested a review from Copilot October 29, 2025 22:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

This PR updates the visx toolchain including TypeScript, Node.js, Next.js, and replaces deprecated react-docgen-typescript-loader with a custom documentation generation script. It modernizes type imports across all packages and updates dependencies to current versions.

  • Updates TypeScript from 3.8 to 5.7, Node from 16 to 18, Next.js from 11 to 13
  • Replaces deprecated react-docgen-typescript-loader with custom TypeScript docgen script
  • Converts all import statements to use "type" imports for type-only imports

Reviewed Changes

Copilot reviewed 297 out of 490 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
package.json Updates Node version requirement and core dependencies
visx-demo/next.config.js Removes deprecated loader and modernizes webpack config
visx-demo/src/utils/getDocGenInfo.ts New utility for component documentation generation
visx-demo/src/types/index.ts Enhanced type definitions for documentation
visx-/src/ Converts imports to type-only imports throughout codebase

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/visx-scale/src/createScale.ts
Comment thread packages/visx-network/src/DefaultNode.tsx
Comment thread packages/visx-network/src/DefaultNode.tsx
Comment thread packages/visx-grid/src/grids/GridAngle.tsx
Comment thread packages/visx-grid/src/grids/GridAngle.tsx
Comment thread packages/visx-brush/src/BrushHandle.tsx
Comment thread packages/visx-brush/src/BrushCorner.tsx
Comment thread packages/visx-brush/src/BaseBrush.tsx
@github-actions

github-actions Bot commented Oct 30, 2025

Copy link
Copy Markdown

Size Changes

Package Diff ESM Prev ESM CJS Prev CJS
visx-bounds +0.0% 2.6 KB 2.6 KB 3.06 KB 3.06 KB
visx-brush +0.6% 54.52 KB 54.19 KB 58.69 KB 58.36 KB
visx-grid +0.4% 17.74 KB 17.67 KB 21.67 KB 21.2 KB
visx-legend +1.6% 25.36 KB 24.95 KB 32.12 KB 31.71 KB
visx-network +1.0% 4.44 KB 4.39 KB 6.48 KB 6.42 KB
visx-react-spring -0.2% 12.91 KB 12.94 KB 16.1 KB 16.2 KB
visx-scale +1.8% 18.75 KB 18.43 KB 29.54 KB 29.2 KB
visx-shape +0.0% 79.87 KB 79.85 KB 100.19 KB 100.17 KB
visx-text +0.3% 8.1 KB 8.08 KB 9.56 KB 9.54 KB
visx-xychart +0.8% 170.67 KB 169.26 KB 220.58 KB 220.08 KB

Compared to master. File sizes are unminified and ungzipped.

View raw build stats

Previous (master)

{
  "visx-annotation": {
    "esm": 30333,
    "lib": 40419
  },
  "visx-axis": {
    "esm": 20709,
    "lib": 25153
  },
  "visx-bounds": {
    "esm": 2661,
    "lib": 3136
  },
  "visx-brush": {
    "esm": 55492,
    "lib": 59763
  },
  "visx-chord": {
    "esm": 3301,
    "lib": 4484
  },
  "visx-clip-path": {
    "esm": 3993,
    "lib": 5491
  },
  "visx-curve": {
    "esm": 323,
    "lib": 1462
  },
  "visx-delaunay": {
    "esm": 2422,
    "lib": 3231
  },
  "visx-demo": {
    "esm": 0,
    "lib": 36814
  },
  "visx-drag": {
    "esm": 12570,
    "lib": 14176
  },
  "visx-event": {
    "esm": 3815,
    "lib": 5091
  },
  "visx-geo": {
    "esm": 12930,
    "lib": 16196
  },
  "visx-glyph": {
    "esm": 13761,
    "lib": 18476
  },
  "visx-gradient": {
    "esm": 16078,
    "lib": 20593
  },
  "visx-grid": {
    "esm": 18097,
    "lib": 21710
  },
  "visx-group": {
    "esm": 1471,
    "lib": 2070
  },
  "visx-heatmap": {
    "esm": 7040,
    "lib": 8347
  },
  "visx-hierarchy": {
    "esm": 12093,
    "lib": 17820
  },
  "visx-legend": {
    "esm": 25546,
    "lib": 32474
  },
  "visx-marker": {
    "esm": 8204,
    "lib": 10332
  },
  "visx-mock-data": {
    "esm": 326036,
    "lib": 329336
  },
  "visx-network": {
    "esm": 4497,
    "lib": 6572
  },
  "visx-pattern": {
    "esm": 11689,
    "lib": 15673
  },
  "visx-point": {
    "esm": 1003,
    "lib": 1781
  },
  "visx-react-spring": {
    "esm": 13253,
    "lib": 16586
  },
  "visx-responsive": {
    "esm": 15936,
    "lib": 18296
  },
  "visx-sankey": {
    "esm": 3543,
    "lib": 4594
  },
  "visx-scale": {
    "esm": 18870,
    "lib": 29896
  },
  "visx-shape": {
    "esm": 81766,
    "lib": 102573
  },
  "visx-stats": {
    "esm": 13498,
    "lib": 15050
  },
  "visx-text": {
    "esm": 8276,
    "lib": 9773
  },
  "visx-threshold": {
    "esm": 2844,
    "lib": 3723
  },
  "visx-tooltip": {
    "esm": 14383,
    "lib": 19715
  },
  "visx-vendor": {
    "esm": 2492,
    "lib": 2702
  },
  "visx-visx": {
    "esm": 1524,
    "lib": 4155
  },
  "visx-voronoi": {
    "esm": 2137,
    "lib": 2824
  },
  "visx-wordcloud": {
    "esm": 2506,
    "lib": 3311
  },
  "visx-xychart": {
    "esm": 173319,
    "lib": 225360
  },
  "visx-zoom": {
    "esm": 16176,
    "lib": 18872
  }
}

Current

{
  "visx-annotation": {
    "esm": 30333,
    "lib": 40419
  },
  "visx-axis": {
    "esm": 20709,
    "lib": 25153
  },
  "visx-bounds": {
    "esm": 2662,
    "lib": 3136
  },
  "visx-brush": {
    "esm": 55826,
    "lib": 60097
  },
  "visx-chord": {
    "esm": 3301,
    "lib": 4484
  },
  "visx-clip-path": {
    "esm": 3993,
    "lib": 5491
  },
  "visx-curve": {
    "esm": 323,
    "lib": 1462
  },
  "visx-delaunay": {
    "esm": 2422,
    "lib": 3231
  },
  "visx-demo": {
    "esm": 0,
    "lib": 0
  },
  "visx-drag": {
    "esm": 12570,
    "lib": 14176
  },
  "visx-event": {
    "esm": 3815,
    "lib": 5091
  },
  "visx-geo": {
    "esm": 12930,
    "lib": 16196
  },
  "visx-glyph": {
    "esm": 13761,
    "lib": 18476
  },
  "visx-gradient": {
    "esm": 16078,
    "lib": 20593
  },
  "visx-grid": {
    "esm": 18164,
    "lib": 22188
  },
  "visx-group": {
    "esm": 1471,
    "lib": 2070
  },
  "visx-heatmap": {
    "esm": 7040,
    "lib": 8347
  },
  "visx-hierarchy": {
    "esm": 12093,
    "lib": 17820
  },
  "visx-legend": {
    "esm": 25964,
    "lib": 32892
  },
  "visx-marker": {
    "esm": 8204,
    "lib": 10332
  },
  "visx-mock-data": {
    "esm": 326036,
    "lib": 329336
  },
  "visx-network": {
    "esm": 4544,
    "lib": 6634
  },
  "visx-pattern": {
    "esm": 11689,
    "lib": 15673
  },
  "visx-point": {
    "esm": 1003,
    "lib": 1781
  },
  "visx-react-spring": {
    "esm": 13221,
    "lib": 16485
  },
  "visx-responsive": {
    "esm": 15936,
    "lib": 18296
  },
  "visx-sankey": {
    "esm": 3543,
    "lib": 4594
  },
  "visx-scale": {
    "esm": 19205,
    "lib": 30251
  },
  "visx-shape": {
    "esm": 81787,
    "lib": 102594
  },
  "visx-stats": {
    "esm": 13498,
    "lib": 15050
  },
  "visx-text": {
    "esm": 8297,
    "lib": 9794
  },
  "visx-threshold": {
    "esm": 2844,
    "lib": 3723
  },
  "visx-tooltip": {
    "esm": 14383,
    "lib": 19715
  },
  "visx-vendor": {
    "esm": 2492,
    "lib": 2702
  },
  "visx-visx": {
    "esm": 1524,
    "lib": 4155
  },
  "visx-voronoi": {
    "esm": 2137,
    "lib": 2824
  },
  "visx-wordcloud": {
    "esm": 2506,
    "lib": 3324
  },
  "visx-xychart": {
    "esm": 174768,
    "lib": 225877
  },
  "visx-zoom": {
    "esm": 16176,
    "lib": 18872
  }
}

@hshoff hshoff merged commit 451b6c5 into master Oct 31, 2025
1 check passed
@hshoff hshoff changed the title Toolchain updates. Phase 1 Toolchain updates. Node 18, TypeScript 5, Next 13 Nov 2, 2025
This was referenced Nov 7, 2025
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version v4.0.0-alpha.0 of the packages modified 🎉

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants