Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7da7e2c
fix(v6): one union wasm, one configure call
antichaosdb Aug 1, 2026
62c74b1
build: dual ESM/CJS output with exports map and sideEffects
jim-risen Aug 28, 2026
ed0f60a
feat!: split SciChartReact and SciChartDeclarative, adopt the v6 Builder
jim-risen Aug 28, 2026
62c4c25
test: artifact verification and bundle-check harness
jim-risen Aug 28, 2026
61895f2
docs: modular wasm payload, type registration and 2.0 migration notes
jim-risen Aug 28, 2026
b85316a
chore(demos,storybook): v6 pins, wasm copy and config migration
jim-risen Aug 28, 2026
46fcad7
merge: tree-shaking work into the v2 alpha line
jim-risen Aug 28, 2026
c054ea9
chore(release): publish the 2.0 line under the alpha tag
jim-risen Aug 28, 2026
413a5d1
2.0.0-alpha.1
jim-risen Aug 28, 2026
b208b2a
ci: manual per-channel npm publish and PR checks
jim-risen Sep 1, 2026
8d19423
ci: update runner actions and pin npm below 12
jim-risen Sep 1, 2026
09f67ea
ci: update runner actions in the PR workflow
jim-risen Sep 1, 2026
a329264
2.0.0-alpha.2
github-actions[bot] Sep 1, 2026
acc4546
merge: absorb main's CI history into the 2.0.0 release branch
jim-risen Sep 24, 2026
1d9f36c
chore(deps): move to scichart 6.0.1
jim-risen Sep 24, 2026
e742f51
docs: add CHANGELOG with the 2.0.0 entry
jim-risen Sep 24, 2026
d718faa
fix: correct the v6 wasm payload in docs, Storybook and demos
jim-risen Sep 24, 2026
2c97412
fix(demos): migrate to scichart 6 and drop the CRA demos
jim-risen Sep 24, 2026
bc13230
fix(ChartGroupLoader): render the group overlay above its charts
jim-risen Sep 24, 2026
e683758
feat(demo): add a 3D surface chart to the Next demo
jim-risen Sep 25, 2026
29c8ad3
feat(SciChartMemoryDebugWrapper): add defaultRenderChildren
jim-risen Sep 25, 2026
9d62a20
fix: mark surfaces as externally lifecycle-managed
jim-risen Sep 25, 2026
dbab5a2
2.0.0
jim-risen Sep 25, 2026
4b03d58
docs: link the SciChart.js v6 migration docs and retarget doc links
jim-risen Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: CI

on:
pull_request:
push:
branches:
- main

permissions:
contents: read

jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7

- uses: actions/setup-node@v7
with:
node-version: 22

- name: Install
run: npm ci

- name: Typecheck
run: npm run typecheck

# build ends with verifyLib: artifact layout assertions, then publint and attw
- name: Build
run: npm run build

# compares against bundle-check/baseline/sizes.json and fails on regressions,
# so a change that widens sideEffects or drags the Builder into the init path
# is caught here rather than at publish time
- name: Tree-shaking and bundle-size gate
run: npm run bundleCheck
15 changes: 12 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,18 @@ node_modules
/storybook-static
/demos/react18/*/build
/demos/react18/basic/node_modules
/demos/react18/cra/node_modules
/demos/react18/cra-pwa/node_modules
/demos/react16/node_modules
/demos/features/*/node_modules
/demos/features/*/build
/demos/features/*/types
packageNPM.json
# wasm copied next to an entry point by a demo's build step - the v5 pair and its .data
# files, plus the v6 core and the side modules it loads beside it
scichart*.wasm
scichart2d.data
scichart2d.wasm
scichart3d.data
# bundle-check harness artifacts
/bundle-check/node_modules
/bundle-check/build
/bundle-check/dist
/bundle-check/reports
23 changes: 8 additions & 15 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
import type { StorybookConfig } from "@storybook/react-webpack5";
import merge from "webpack-merge";
const CopyPlugin = require("copy-webpack-plugin");
const path = require("path");

const config: StorybookConfig = {
stories: ["./stories/SciChartReact.stories.tsx", "./stories/**/*.mdx", "./stories/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
stories: [
"./stories/SciChartReact.stories.tsx",
"./stories/**/*.mdx",
"./stories/**/*.stories.@(js|jsx|mjs|ts|tsx)"
],
addons: ["@storybook/addon-links", "@storybook/addon-essentials", "@storybook/addon-interactions"],
staticDirs: ["./public"],
// the whole _wasm directory, not a single file: the core picks a variant per browser and
// fetches side modules (charting3d) relative to it, matching what the README tells consumers
staticDirs: ["./public", { from: "../node_modules/scichart/_wasm", to: "/" }],
framework: {
name: "@storybook/react-webpack5",
options: {}
Expand All @@ -32,18 +37,6 @@ const config: StorybookConfig = {
webpackConfig
);

// config.plugins?.push(
// new CopyPlugin({
// patterns: [
// { from: "src/index.html", to: "" },
// { from: "node_modules/scichart/_wasm/scichart2d.data", to: "" },
// { from: "node_modules/scichart/_wasm/scichart2d.wasm", to: "" },
// { from: "node_modules/scichart/_wasm/scichart3d.data", to: "" },
// { from: "node_modules/scichart/_wasm/scichart3d.wasm", to: "" }
// ]
// })
// );

return customizedWebpackConfig;
}
};
Expand Down
5 changes: 1 addition & 4 deletions .storybook/stories/ChartGroupLoader.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,10 @@ import ChartGroupLoaderBasicSrc from "!!raw-loader!./DocExamples/ChartGroupLoade
import ChartGroupLoaderCustomSrc from "!!raw-loader!./DocExamples/ChartGroupLoaderCustom";
import { ChartGroupLoaderBasic as ChartGroupLoaderBasicRenderer } from "./DocExamples/ChartGroupLoaderBasic";
import { ChartGroupLoaderCustom as ChartGroupLoaderCustomRenderer } from "./DocExamples/ChartGroupLoaderCustom";
import { EAxisType, EChart2DModifierType, ESeriesType, SciChart3DSurface, SciChartSurface } from "scichart";
import { EAxisType, EChart2DModifierType, ESeriesType } from "scichart";
import { Title, Subtitle, Description, Primary, Controls, Stories, ArgTypes } from "@storybook/blocks";
import { ChartGroupLoader } from "../../src/ChartGroupLoader";

SciChartSurface.loadWasmFromCDN();
SciChartSurface.loadWasmFromCDN();

// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
const meta = {
title: "Example/ChartGroupLoader",
Expand Down
6 changes: 3 additions & 3 deletions .storybook/stories/DocExamples/ChartGroupLoaderBasic.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NumericAxis, SciChartSurface } from "scichart";
import { SciChartReact, ChartGroupLoader } from "scichart-react";
import { SciChartReact, SciChartDeclarative, ChartGroupLoader } from "scichart-react";

export const ChartGroupLoaderBasic = () => (
<ChartGroupLoader style={{ minWidth: 600, display: "flex" }}>
Expand All @@ -21,7 +21,7 @@ export const ChartGroupLoaderBasic = () => (
}}
style={{ flex: "auto", minHeight: "200px" }}
/>
<SciChartReact config={{}} style={{ flex: "auto", minHeight: "200px" }} />
<SciChartReact config={{}} style={{ flex: "auto", minHeight: "200px" }} />
<SciChartDeclarative config={{}} style={{ flex: "auto", minHeight: "200px" }} />
<SciChartDeclarative config={{}} style={{ flex: "auto", minHeight: "200px" }} />
</ChartGroupLoader>
);
6 changes: 3 additions & 3 deletions .storybook/stories/DocExamples/ChartGroupLoaderCustom.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useState } from "react";
import { NumericAxis, SciChartSurface } from "scichart";
import { SciChartReact, ChartGroupLoader, DefaultFallback } from "scichart-react";
import { SciChartReact, SciChartDeclarative, ChartGroupLoader, DefaultFallback } from "scichart-react";

// this will be displayed if error happens during initialization
const customFallback = (
Expand Down Expand Up @@ -55,8 +55,8 @@ export const ChartGroupLoaderCustom = () => {
}}
style={{ flex: "auto", minHeight: "200px" }}
/>
<SciChartReact config={{}} style={{ flex: "auto", minHeight: "200px" }} />
<SciChartReact config={{}} style={{ flex: "auto", minHeight: "200px" }} />
<SciChartDeclarative config={{}} style={{ flex: "auto", minHeight: "200px" }} />
<SciChartDeclarative config={{}} style={{ flex: "auto", minHeight: "200px" }} />
</ChartGroupLoader>
);
};
4 changes: 2 additions & 2 deletions .storybook/stories/DocExamples/ChartWithConfig.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { EAxisType, ESeriesType, EChart2DModifierType } from "scichart";
import { SciChartReact } from "scichart-react";
import { SciChartDeclarative } from "scichart-react";

export const ChartWithConfig = () => (
<SciChartReact
<SciChartDeclarative
config={{
xAxes: [{ type: EAxisType.NumericAxis }],
yAxes: [{ type: EAxisType.NumericAxis }],
Expand Down
6 changes: 3 additions & 3 deletions .storybook/stories/DocExamples/NestedOverviewBasic.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { EAxisType, ESeriesType, EChart2DModifierType } from "scichart";
import { SciChartReact, SciChartNestedOverview } from "scichart-react";
import { SciChartDeclarative, SciChartNestedOverview } from "scichart-react";

export const NestedOverviewBasic = () => (
<SciChartReact
<SciChartDeclarative
config={{
xAxes: [{ type: EAxisType.NumericAxis }],
yAxes: [{ type: EAxisType.NumericAxis }],
Expand Down Expand Up @@ -33,5 +33,5 @@ export const NestedOverviewBasic = () => (
innerContainerProps={{ style: { height: "80%" } }}
>
<SciChartNestedOverview style={{ height: "20%" }} />
</SciChartReact>
</SciChartDeclarative>
);
7 changes: 1 addition & 6 deletions .storybook/stories/SciChartOverview.stories.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
import type { Meta, StoryObj } from "@storybook/react";
import NestedOverviewBasicSrc from "!!raw-loader!./DocExamples/NestedOverviewBasic";
import { NestedOverviewBasic as NestedOverviewBasicRenderer } from "./DocExamples/NestedOverviewBasic";
import { EAxisType, EChart2DModifierType, ESeriesType, SciChart3DSurface, SciChartSurface } from "scichart";
import { EAxisType, EChart2DModifierType, ESeriesType } from "scichart";
import { Title, Subtitle, Description, Primary, Controls, Stories, ArgTypes } from "@storybook/blocks";
import { SciChartNestedOverview } from "../../src/SciChartOverview";
import { SciChartReact } from "../../src/SciChart";

// SciChartSurface.loadWasmFromCDN();
// SciChartSurface.loadWasmFromCDN();
SciChartSurface.useWasmFromCDN();
SciChart3DSurface.useWasmFromCDN();

// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
const meta = {
title: "Example/SciChartOverview",
Expand Down
4 changes: 0 additions & 4 deletions .storybook/stories/SciChartReact.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,9 @@ import { ChartUsageWithTypescript as ChartUsageWithTypescriptRenderer } from "./
import { ChartWith3dSurface as ChartWith3dSurfaceRenderer } from "./DocExamples/ChartWith3dSurface";
import { ChartWithPieSurface as ChartWithPieSurfaceRenderer } from "./DocExamples/ChartWithPieSurface";
import { ChartWrapperStyling as ChartWrapperStylingRenderer } from "./DocExamples/ChartWrapperStyling";
import { SciChart3DSurface, SciChartSurface } from "scichart";
import { SciChartReact } from "../../src/SciChart";
import { Title, Subtitle, Description, Primary, Controls, Stories, ArgTypes } from "@storybook/blocks";

SciChartSurface.useWasmFromCDN();
SciChart3DSurface.useWasmFromCDN();

// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
const meta = {
title: "Example/SciChartReact",
Expand Down
68 changes: 68 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Changelog

All notable changes to this project are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

This file is not shipped in the npm package — the tarball root is `lib/`, which carries
`README_NPM.md` as its readme.

## [2.0.0]

The 2.0 line targets SciChart.js v6 and is built and verified against `scichart` 6.0.1.

### Breaking

- **`scichart` peer dependency is now v6+.** The engine ships one union `scichart.wasm` instead of
the `scichart2d.wasm` / `scichart3d.wasm` pair, and there are no more `.data` files. The WASM
payload to deploy is the whole `_wasm` **directory**, not a single file. Apps staying on
scichart 3.x–5.x should stay on scichart-react 1.x. When upgrading the core library, the
`scichart-migrate` codemod automates the renames.
- **The `config` prop moved to the new `SciChartDeclarative` component.** Replace
`<SciChartReact config={...} />` with `<SciChartDeclarative config={...} />` — one JSX rename,
all other props identical. `SciChartReact` now requires `initChart` and throws a pointer error
if it receives `config`.
- **`SciChartOverview` no longer mirrors** palette providers, animations or data labels onto the
overview's mini series. Set them on the overview series explicitly if you relied on that.
- **The Builder API registers nothing on import.** Since SciChart v6, types used by a JSON config
must be registered explicitly (`registerNumericAxis`, `registerXyDataSeries`, …), or via the
`registerAllTypes()` escape hatch. `SciChartDeclarative` calls `registerAllTypes()` internally,
so declarative users are unaffected.

### Added

- `SciChartDeclarative` — the JSON-config component split out of `SciChartReact`.
- `configureSciChartDefaults` — the import-time global defaults, now also callable directly and
importable as `scichart-react/configureDefaults`.
- Exported types `IChartComponentPropsCore`, `TChartComponentPropsWithInit` and
`TChartComponentPropsWithConfig`.
- `SciChartMemoryDebugWrapper` gained a `defaultRenderChildren` prop, so the children can be
rendered on the first render instead of waiting for the checkbox. Its props are now typed
rather than `any`.

### Changed

- **Dual ESM/CJS output** with an `exports` map, a `module` entry and subpath deep imports
(`scichart-react/SciChartGroup`), replacing the single flat CommonJS build.
- **`sideEffects` narrowed** to `configureDefaults.js` only, so bundlers can drop everything a
consumer does not import. An `initChart`-only bundle no longer drags in the Builder.
- `"use client"` directives added, so the components work in React Server Component setups.
- `react` peer dependency raised to `>=16.14.0`.
- Each surface returned from `initChart` is marked as externally lifecycle-managed, which
suppresses the core's "root detached before delete" and "surface already deleted"
memory-debug warnings. Both are expected here: the component removes the chart root before
the asynchronous delete, and a surface can be deleted twice (the nested overview). The flag
is only set when the core exposes it, so this is inert against scichart 6.0.1 and takes
effect with the core release that adds it.

### Deprecated

- `TChartComponentProps` — use `TChartComponentPropsWithInit` or `TChartComponentPropsWithConfig`.

## [1.0.0]

First stable release of the 1.x line, targeting SciChart.js 3.x–5.x.

[2.0.0]: https://github.com/ABTSoftware/scichart-react/releases/tag/v2.0.0
[1.0.0]: https://github.com/ABTSoftware/scichart-react/releases/tag/v1.0.0
Loading
Loading