

ProEssentialsJS is a JavaScript charting library. It was not written in JavaScript. It is the ProEssentials C++ engine, in continuous development since 1993, compiled to WebAssembly and drawing through Canvas2D and WebGPU. This post covers how that works, what it costs, and what you can verify yourself.
Every figure below comes from one public API, for every package, with no account and no download. Measured 2026-09-01.
https://data.jsdelivr.com/v1/packages/npm/<package>@<version>?structure=flat
| package | version | ships wasm | wasm bytes |
|---|---|---|---|
proessentials | 11.0.1 | yes, 1 file | 2,925,264 |
scichart | 5.2.62 | yes, 2 modules | 2,580,937 |
@finos/perspective | 3.8.0 | yes, 2 files | 2,494,955 |
@lightningchart/lcjs | 9.0.0 | no | 0 |
highcharts | 13.0.2 | no | 0 |
echarts | 6.1.0 | no | 0 |
chart.js | 4.5.1 | no | 0 |
muze | 1.3.2 | no | 0 |
SciChart also ships scichart2d-nosimd.wasm and scichart3d-nosimd.wasm. Those are alternates for browsers without SIMD, not additional modules, so they are not counted in the total.
LightningChart renders with WebGL and JavaScript. It ships no WebAssembly.
Same API, same date, same method as the table above.
| proessentials 11.0.1 | percent | scichart 5.2.62 | percent | what it means | |
|---|---|---|---|---|---|
| wasm binary | 2,925,264 | 100% | 2,580,937 | 88% | SciChart wasm is smaller |
| JS entry point | 249,168 | 100% | 2,151,691 | 864% | SciChart JavaScript is 9x larger |
| package, unpacked | 5,213,944 | 100% | 57,676,563 | 1,106% | SciChart package is 11x larger |
| files in package | 74 | 100% | 1,484 | 2,005% | SciChart ships 20x more files |
Our wasm is larger. Our JavaScript is roughly nine times smaller, and the package is roughly eleven times smaller across twenty times fewer files. That is the shape of an engine that lives in the WebAssembly. A 2,151,691 byte JavaScript entry point is not a thin binding to a binary. It is code the browser fetches, parses and runs on every cold load, before the first chart appears, and it is doing work the binary should have already done.
To confirm any number, read versions["<version>"].dist from https://registry.npmjs.org/scicharthttps://registry.npmjs.org/proessentialsfor unpackedSize and fileCount. Read the jsdelivr URL above for individual file sizes.
The published package is also what the demos run. dist/proessentials.wasm in the npm package and lib/proessentials.wasm on the live demo are the same 2,925,264 bytes.
A charting engine spends its time in numerical loops. Transform, clip, scale, decimate, hit test.
Compiling removes the question. The C++ that ran on Windows is the C++ that runs in the browser. There is no second implementation to keep in step.
That matters more than performance. A rewrite means re-deriving thirty years of behavior, including every edge case nobody remembers writing. Axis label collision, log scales crossing zero, date arithmetic across time zones. Those are not features you port. They are decisions accumulated over decades.
ProEssentialsJS is not a browser library that imitates the desktop control. It is the same engine, compiled for a different target.
| interface | engine target |
|---|---|
| DLL / C | native |
| C++ / MFC | native |
| ActiveX | native |
| Delphi VCL | native |
| WinForms | native |
| WPF | native |
| WinUI | native |
| JavaScript | WebAssembly |
One consequence is practical. A property configured on WinUI is configured the same way in a browser, because it is the same property in the same engine.
Right click a ProEssentialsJS chart and the engine shows its own menu. The end user can switch the chart to monochrome, change the plotting method, point type, line type and shading style, add a data table under the Pego chart, show or hide annotations, mark data points, bold the grid, add a title, adjust colors and fonts, and open a WYSIWYG export and print dialog with export size, print options and a font size slider.
None of that was built for the browser. It is engine code, written for Windows years before this was a target, localized into 20 cultures, and it arrived in JavaScript because the engine arrived in JavaScript.
This is the part of "compile it" that is hard to see from a feature list. You do not get the renderer. You get thirty years of accumulated behavior attached to it.
The first tag is the engine, as a classic script. The second is your code, as a module.
It cannot be one tag, and that is not a packaging shortcoming. The property surfaces are real ES modules, and a classic script cannot hold one. Charting libraries that ship both forms split on the same line.
From npm, npm install proessentials. No bundler, no transpile step, no framework requirement. The walkthrough takes it from install to a live real time chart.
ProEssentialsJS draws through Canvas2D for 2D charts, and WebGPU for 3D surface and contour rendering.
navigator.gpu is undefined, not failing, on any origin that is not a secure context. Localhost counts as secure. A staging server reached by IP address does not.
So WebGPU works through development and disappears on the first internal deployment, and the symptom looks like a driver fault rather than a protocol rule. Check window.isSecureContext before concluding anything about GPU support.
Menus and dialogs ship in 20 cultures, including Simplified and Traditional Chinese. The library loads the culture it needs at run time. There is nothing to download, install, or register.
Three demos run the real engine, with no sign up and nothing to install.
| demo | what it shows |
|---|---|
| JavaScript chart demo | the example browser |
| Real time chart demo | full data replacement per frame |
| 3D surface demo | WebGPU surface and contour |
Source for each is on GitHub. Performance numbers, with the conditions they were measured under, are on the fastest JavaScript chart page. Licensing, pricing and API surface against other libraries are on the JavaScript chart comparison page.
ProEssentialsJS is perpetual and royalty free. Organizations under $250,000 USD annual revenue use it free, commercially, with redistribution included. See JavaScript chart library and pricing.
Ihr Erfolg ist unser höchstes Ziel, indem wir Ihrem Unternehmen und Ihren Endbenutzern den einfachsten und professionellsten Nutzen bieten.
ProEssentials wurde von professionellen Elektroingenieuren erschaffen, die ihre eigenen Charting-Komponenten benötigten. Treten Sie unserer großen Liste von Top-Engineering-Unternehmen bei, die ProEssentials einsetzen.
Vielen Dank, dass Sie ein ProEssentials-Kunde sind, und vielen Dank, dass Sie die ProEssentials-Charting-Engine recherchieren.