Sixtyfold Components

August 10, 2026 · View on GitHub

High-performance TypeScript components for AI, observability, industrial IoT, and financial markets.

Charts

20M data points in one interactive chart. See the live demo →

Line

Sixtyfold Line chart in the light theme Sixtyfold Line chart in the dark theme

Stock

Sixtyfold Stock chart in the light theme Sixtyfold Stock chart in the dark theme

Level of detail

Sixtyfold Charts began with an idea borrowed from 3D games: if a renderer changes an object's level of detail (LOD) as its distance from the camera changes, could a chart change its data detail as the user zooms?

The line renderer precalculates extrema-preserving summaries at exponentially increasing bucket sizes and selects a screen-appropriate level for the current viewport. Finer detail returns as the user zooms in; coarser summaries bound the work when zoomed out while retaining important peaks and gaps. These summaries are rendered on demand rather than stored as pre-rendered images. Stock charts apply the same principle through OHLCV aggregation levels selected for the visible time range.

Available packages

PackagePurpose
@sixtyfold/coreShared Canvas2D runtime and interaction primitives
@sixtyfold/lineDense time-series and multi-series line charts
@sixtyfold/stockOHLCV, candlestick, and market analytics charts
@sixtyfold/ssrServer-side Canvas2D rendering for line and stock charts in Node.js, Bun, and Deno
@sixtyfold/themesImmutable chart appearance presets
@sixtyfold/reactReact line and stock chart adapters
@sixtyfold/vueVue line and stock chart adapters
@sixtyfold/angularAngular standalone line and stock chart components
@sixtyfold/svelteSvelte line and stock chart components
@sixtyfold/solidSolidJS line and stock chart adapters
@sixtyfold/mcpLocal, read-only MCP guidance for packages, APIs, examples, and performance

Installing @sixtyfold/line never installs @sixtyfold/stock or a framework adapter. Framework packages expose separate /line and /stock entry points and declare chart engines as optional peers, so applications add only the engine and adapter they use. Themes follow the same boundary through @sixtyfold/themes/line and @sixtyfold/themes/stock; either entry point works without installing the other renderer.

Until the stable 1.0.0 release, install the release candidate through npm's next channel. For example, a React line-chart application installs:

pnpm add @sixtyfold/line@next @sixtyfold/react@next

MCP

Coding agents can connect to the independently installed MCP developer tool without adding anything to the application bundle:

  • Codex: codex mcp add sixtyfold -- npx -y @sixtyfold/mcp@next
  • Claude Code: claude mcp add sixtyfold -- npx -y @sixtyfold/mcp@next
  • Gemini CLI: gemini mcp add --scope user sixtyfold npx -y @sixtyfold/mcp@next

Other MCP hosts can use the equivalent JSON configuration:

{
  "mcpServers": {
    "sixtyfold": {
      "command": "npx",
      "args": ["-y", "@sixtyfold/mcp@next"]
    }
  }
}

The local server is read-only, contains its versioned API catalog, makes no network requests, and never becomes a dependency of a chart package.

Example

import { LineChart } from "@sixtyfold/line";

function createSignals(count = 1_000_000) {
  const x = new Float64Array(count);
  const throughput = new Float64Array(count);
  const tailLatency = new Float64Array(count);

  for (let index = 0; index < count; index++) {
    x[index] = Date.UTC(2026, 0, 1) + index * 1_000;
    throughput[index] = 42_000 + Math.sin(index / 4_000) * 8_000;
    tailLatency[index] = 38 + Math.sin(index / 1_100) * 7 + Math.sin(index / 29_000) * 12;
  }

  return {
    x,
    series: [throughput, tailLatency],
    length: count,
    seriesCount: 2,
  };
}

const chart = new LineChart(document.querySelector("canvas")!, {
  renderMode: "worker",
  series: [{ name: "Throughput" }, { name: "p99 latency" }],
});

await chart.initialize();
chart.setMultiSeriesData(createSignals());

This sends two million generated series values to the chart. Worker rendering transfers the typed-array buffers, so generate fresh arrays before installing the same workload into another chart.

See sixtyfold.dev for product documentation, live examples, commercial licensing, and support.

Development

This is a pnpm monorepo, but the monorepo is a source-management boundary—not a consumer installation unit.

Run the complete local release verification with:

pnpm install
pnpm run predeploy

predeploy regenerates the MCP guidance and API catalog before running the complete type, test, package, example, and clean-consumer release checks.

To run an individual gate while diagnosing a failure:

pnpm run build
pnpm run typecheck
pnpm run test:unit
pnpm run check:mcp-catalog
pnpm run check:examples
pnpm run check:package-release

check:package-release packs every npm package and installs the tarballs into clean browser, framework-type, worker, tree-shaking, and server-runtime SSR consumers. Real Canvas2D PNG output is also verified in pinned Node.js, Bun, and Deno CI environments. check:examples builds and opens the React, Vue, Angular, Svelte, and SolidJS examples in Chromium and requires both chart workers to become ready without console errors or external network requests. See examples/.

Report suspected vulnerabilities privately as described in SECURITY.md.

Licensing

Sixtyfold Components is source-available under the PolyForm Noncommercial License 1.0.0. Noncommercial use is permitted under those terms. Commercial use requires a separate license—see sixtyfold.dev for details.

License scope

Using an AI coding assistant, agent, generator, translator, obfuscator, or refactoring tool does not change the applicable license. Generated or rewritten output that reproduces, modifies, embeds, calls, or otherwise incorporates Sixtyfold code remains subject to that license to the extent provided by contract and law. Renaming symbols or changing formatting and structure does not by itself grant commercial-use or redistribution rights.

Code developed independently without using or reproducing Sixtyfold code is not covered by these terms. If you are unsure whether your intended use requires a commercial license, contact us through sixtyfold.dev.

Contributions require acceptance of the Sixtyfold Contributor License Agreement, which permits accepted contributions to be used in both public noncommercial and commercial editions. See CONTRIBUTING.md.