Library / SDK
VisActor/VChart avatar
VisActor/VChart

VChart for Cross-Platform Charts and Narrative Data Visualization

VChart, more than just a cross-platform charting library, but also an expressive data storyteller.

1,852 stars221 forksTypeScriptMIT

At a glance

What is it?
VisActor/VChart is a TypeScript charting library built on VGrammar and VRender, with packages for React, Taro, Lark, and WeChat mini programs. It suits applications that need declarative charts plus annotations, animation, and narrative features across browser and mini-program environments.
Who is it for?
VChart is appropriate for teams that need one declarative chart model across React, browser, Taro, Lark, or WeChat environments, especially when annotations, animation, or narrative scenes matter. It is less suitable for a small application that only needs a basic SVG chart and has no need for VChart's rendering and wrapper packages.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

VChart's Cross-Platform Visualization Scope

VChart addresses the problem of building charts that can run across desktop browsers, H5 pages, and several mini-program environments without maintaining separate chart implementations. It is a charting component library in the VisActor visualization system, written primarily in TypeScript. The repository packages include the main @visactor/vchart package, React-VChart, Taro-VChart, Lark-VChart, Block-VChart, and Wx-VChart. That package structure matters because the same chart model can be integrated through different framework adapters rather than being tied only to a browser DOM.

The project also targets more than individual plots. Its documented storytelling capabilities include annotations, animation, flow control, and narrative templates. These features are aimed at applications that need to explain a sequence of data points, guide attention, or present several related visual states. The repository describes VChart as a data storytelling tool, but the README does not provide a complete catalog of every narrative template or document how they behave in each adapter. The scope is therefore clear at the package level, while detailed feature compatibility should be checked in the API and tutorial documentation.

VGrammar, VRender, and the VChart Data Flow

VChart separates chart construction from rendering through two underlying libraries. According to the README, it wraps charting logic based on VGrammar and component encapsulation based on VRender. In practical terms, a VChart specification describes the chart type, data source, field mapping, and optional interaction settings. VChart then uses the charting layer to interpret that specification and the rendering layer to draw the resulting visual components.

The example uses a bar chart spec with an id, an array of values, an xField named month, and a yField named sales. A crosshair setting enables the vertical crosshair for the x field. The chart is then constructed with a DOM container identifier and rendered asynchronously through renderAsync(). This arrangement keeps chart intent in a data object instead of requiring a sequence of imperative drawing commands, while still exposing rendering options through the surrounding library.

The architecture is useful when the same chart definition must be moved between environments, because the adapters can provide platform-specific component integration. However, the README does not describe bundle-size behavior, server-side rendering, accessibility defaults, or the internal behavior of the mini-program adapters. Those points are not documented well enough to treat as adoption facts.

Installing @visactor/vchart and Rendering the First Bar Chart

The README documents installation through npm or yarn. Choose one package manager for a new application rather than installing both. The package name is @visactor/vchart, and the first example uses a DOM container with the id chart. The following command installs the library with npm:

bash
npm install @visactor/vchart

After installation, create a container with the id chart in the host page or application. The README's example then defines the data and creates the VChart instance. This code is reproduced from the documented TypeScript example:

typescript
import VChart from '@visactor/vchart';

const spec = {
  type: 'bar',
  data: [{ id: 'barData', values: [
    { month: 'Monday', sales: 22 },
    { month: 'Tuesday', sales: 13 },
    { month: 'Wednesday', sales: 25 },
    { month: 'Thursday', sales: 29 },
    { month: 'Friday', sales: 38 }
  ]}],
  xField: 'month',
  yField: 'sales',
  crosshair: { xField: { visible: true } }
};

The constructor receives the specification and the chart container. Calling renderAsync() asks VChart to render the chart. The README uses 'chart' as the id of the DOM container, such as a div with id="chart".

typescript
const vchart = new VChart(spec, { dom: 'chart' });
vchart.renderAsync();

For the repository's own development work, the README asks contributors to install @microsoft/rush, clone the repository, run rush update, and use the documented start commands. Those instructions are for developing VChart, not for consuming the published package.

React, Taro, and Mini-Program Adapter Packages

The repository does more than publish one browser package. `react-vchart` provides a React component wrapper, while `taro-vchart`, `lark-vchart`, `block-vchart`, and `wx-vchart` target their respective application environments. The README identifies Taro, Lark miniAPP, Lark Block, and Wx miniAPP as the integration contexts. This is a concrete advantage when a product has more than one client surface, because the repository already separates these adapters as packages.

The cost is a larger evaluation surface. An application using the core package on the web does not automatically receive the same component API as the React or mini-program packages. The README does not document adapter-specific lifecycle behavior, supported event names, or compatibility matrices for chart types and rendering features. It also does not document migration steps between adapters. Teams should therefore treat the adapter package as part of the integration decision, not as a transparent alternate import name.

The repository's package layout also indicates that documentation, examples, and website source are maintained within the same repository. That can make it easier to inspect related examples, but the README does not establish whether all examples are executable in every supported environment.

Storytelling Features and Their Boundaries

The main distinction between VChart and a basic plotting wrapper is its documented support for narrative visualization. The README lists annotation, animation, flow control, narrative templates, and scenes as core capabilities. These features fit use cases in which a chart needs to guide a reader through a sequence, emphasize a point, or move between visual states. The declarative spec model also gives those features a common place to be configured.

The boundary is documentation depth. The README names the capabilities but does not explain the API for authoring a scene, the lifecycle of narrative flow, or the interaction model for annotations. It does not state whether storytelling features are available identically across React, Taro, Lark, and Wx packages. It also does not provide a complete list of chart types or animation constraints. A team evaluating this project for an existing reporting product should check the option documentation and tutorial pages for the specific chart types and narrative controls it expects to use.

This is also where VChart may be excessive. A dashboard that only needs a static bar, line, or table visualization may not benefit from annotations, scenes, or multiple adapters. A lower-level rendering approach can be easier to constrain when the application owns its own drawing lifecycle. VChart is a better fit when those narrative features are part of the product requirement, not merely because the library exposes them.

License, Maintenance, and Upgrade Work

The repository identifies the license as MIT. That permits use within the permissions and conditions specified by the license text, although the license file should be reviewed for the actual obligations and notice requirements. The repository is not archived. Its last push was on 2026-10-15, and recent releases include v2.1.7 on 2026-09-18, v2.1.6 on 2026-08-13, and v2.1.4 on 2026-07-16. These facts indicate recent repository activity, but they do not establish compatibility between every release.

The repository is a monorepo managed with Microsoft Rush. The README instructs contributors to run rush update, rush start, rush react, and rush docs for development, with rush purge followed by rush update offered when dependency problems occur. Consumers of the published package generally need to account for package upgrades rather than this repository workflow, but contributors and downstream maintainers should expect upgrade work to involve checking package versions across the core and adapter packages.

The MIT license and recent release activity do not answer operational questions such as API deprecation policy, migration notes, or a supported-version matrix. The README does not provide those details. VChart should therefore be evaluated with a small integration that checks the selected adapter, chart types, and rendering behavior before it becomes the foundation of a multi-platform application.

Editorial conclusion

VChart is appropriate for teams that need one declarative chart model across React, browser, Taro, Lark, or WeChat environments, especially when annotations, animation, or narrative scenes matter. It is less suitable for a small application that only needs a basic SVG chart and has no need for VChart's rendering and wrapper packages. Before adoption, verify the target platform package, the required chart features in the API documentation, and whether the repository's MIT license and package structure fit the intended distribution model.

Frequently asked questions

How do I install VChart in a TypeScript application?

Install the package with npm using `npm install @visactor/vchart`, or use the documented yarn command. Then import `VChart`, define a specification, create an instance with a DOM container, and call `renderAsync()`.

Does VChart work with React and mini programs?

The repository includes `react-vchart`, `taro-vchart`, `lark-vchart`, `block-vchart`, and `wx-vchart` packages for those environments. The README lists these packages but does not provide a detailed compatibility matrix for individual chart or storytelling features.

What should I verify before adopting VChart?

Verify the package for the target platform, the required chart types and interaction settings, and the documentation for any annotation, animation, flow-control, or narrative-template features you need. The repository is MIT licensed and is not archived, with the last push on 2026-10-15.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. VisActor/VChart on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/visactor-vchart.svg)](https://hysenlabs.com/projects/visactor-vchart)

Was this useful?