{"id":13445765,"url":"https://github.com/antvis/s2","last_synced_at":"2026-04-02T18:50:42.502Z","repository":{"id":36954909,"uuid":"324935660","full_name":"antvis/S2","owner":"antvis","description":"⚡️ A practical visualization library for tabular analysis.","archived":false,"fork":false,"pushed_at":"2025-04-25T13:44:19.000Z","size":167273,"stargazers_count":1567,"open_issues_count":101,"forks_count":205,"subscribers_count":43,"default_branch":"next","last_synced_at":"2025-04-25T22:53:34.159Z","etag":null,"topics":["canvas","editable-table","javascript","pivot-grid","pivot-tables","react","sheet","spreadsheet","table","typescript","vue"],"latest_commit_sha":null,"homepage":"https://s2.antv.antgroup.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antvis.png","metadata":{"files":{"readme":"README.en-US.md","changelog":null,"contributing":"CONTRIBUTING.en-US.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-12-28T06:55:51.000Z","updated_at":"2025-04-23T17:43:46.000Z","dependencies_parsed_at":"2023-09-23T05:45:03.339Z","dependency_job_id":"57804899-400c-4920-b1d6-e76ffb940a0e","html_url":"https://github.com/antvis/S2","commit_stats":{"total_commits":1218,"total_committers":62,"mean_commits":19.64516129032258,"dds":0.6839080459770115,"last_synced_commit":"63e6ed9893dd1668b85ae6113a9eb241d3097808"},"previous_names":[],"tags_count":540,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antvis%2FS2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antvis%2FS2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antvis%2FS2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antvis%2FS2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antvis","download_url":"https://codeload.github.com/antvis/S2/tar.gz/refs/heads/next","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250907699,"owners_count":21506069,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["canvas","editable-table","javascript","pivot-grid","pivot-tables","react","sheet","spreadsheet","table","typescript","vue"],"created_at":"2024-07-31T05:00:39.131Z","updated_at":"2026-01-06T15:14:21.350Z","avatar_url":"https://github.com/antvis.png","language":"TypeScript","readme":"\u003cimg src=\"https://gw.alipayobjects.com/zos/antfincdn/R8sN%24GNdh6/language.svg\" width=\"18\" alt=\"language\" /\u003e  [简体中文](./README.md) ｜\nEnglish\n\n\u003ch1 align=\"center\"\u003eS2\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\nA practical visualization library for tabular analysis.\n\n\u003cp\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@antv/s2\" title=\"npm\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/dm/@antv/s2.svg\" alt=\"npm\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@antv/s2\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/npm/v/@antv/s2/latest.svg?logo=npm\" alt=\"latest version\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/antvis/S2/actions/workflows/test-s2.yml\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://github.com/antvis/S2/actions/workflows/test-s2.yml/badge.svg\" alt=\"ci test status\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/antvis/S2\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/antvis/S2/branch/next/graph/badge.svg\" alt=\"test coverage\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/antvis/S2/releases\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/release-date/antvis/S2\" alt=\"release date\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@antv/s2\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.badgesize.io/https:/unpkg.com/@antv/s2/dist/s2.min.js?label=gzip%20size\u0026compression=gzip\" alt=\"npm bundle size\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/antvis/S2/discussions\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/discussions-on%20github-blue\" alt=\"GitHub discussions\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/actions-cool/issues-helper\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/using-issues--helper-blueviolet\" alt=\"issues helper\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/antvis/S2/blob/next/LICENSE\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT@AntV-yellow.svg\" alt=\"License: MIT@AntV\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/antvis/S2/graphs/contributors\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/contributors/antvis/S2\" alt=\"contributors\"/\u003e\n  \u003ca/\u003e\n  \u003ca href=\"https://github.com/antvis/S2/issues?q=is%3Aissue+sort%3Aupdated-desc+is%3Aclosed\" \u003e\n    \u003cimg src=\"https://img.shields.io/github/issues-closed/antvis/S2\" alt=\"issues closed\"/\u003e\n  \u003ca/\u003e\n  \u003ca href=\"https://github.com/antvis/S2/pulls\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/PRs-Welcome-brightgreen.svg\" alt=\"pr welcome\"/\u003e\n  \u003ca/\u003e\n  \u003ca href=\"https://deepwiki.com/antvis/S2\"\u003e\u003cimg src=\"https://deepwiki.com/badge.svg\" alt=\"Ask DeepWiki\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\nS2 is a solution in multi-dimensional cross-analysis tables, which provides data-driven analysis table components.\n It supplements multi-dimensional analysis tables in the industry. By providing the core library, essential components,\ndemo components and expansion capabilities, it allows developers to use it quickly and freely.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://s2.antv.antgroup.com/en\"\u003eHomepage\u003c/a\u003e •\n  \u003ca href=\"https://s2.antv.antgroup.com/en/manual/getting-started\"\u003eGetting Started\u003c/a\u003e •\n  \u003ca href=\"https://s2.antv.antgroup.com/en/examples\"\u003eExamples\u003c/a\u003e •\n  \u003ca href=\"https://s2.antv.antgroup.com/en/playground\"\u003eLive DEMO\u003c/a\u003e\n\u003c/p\u003e\n\n![homepage](https://gw.alipayobjects.com/zos/antfincdn/6R5Koawk9L/huaban%2525202.png)\n\n## ✨ Features\n\n1. Multi-dimensional cross-analysis: Say goodbye to a single analysis dimension and fully embrace the free combination analysis of any dimension.\n2. High performance: It can support rendering in less than 8s under the total amount of millions of data and achieve second-level rendering through partial drilling.\n3. High scalability: Support any custom extensions (including but not limited to layout, style, interaction, data hook flow, etc.).\n4. Out of the box: Provide out-of-the-box `React` and `Vue3` table components and supporting analysis components in different analysis scenarios. You only need a simple configuration to realize the table rendering\n of complex scenes quickly.\n5. High interaction: support rich interaction forms (single selection, circle selection, row selection, column selection, freeze line header, width and height dragging, custom interaction, etc.)\n\n## 🔨 Getting Started\n\n可以通过 NPM、Yarn 或者 pnpm 等包管理器来安装。\n\n`S2` is usually installed via a package manager such as npm, Yarn, or pnpm.\n\n```bash\nnpm install @antv/s2 --save\n```\n\n```bash\nyarn add @antv/s2\n```\n\n```bash\npnpm add @antv/s2\n```\n\nAfter\n\nAfter successful installation, prepare a DOM container for rendering and import the corresponding S2 API object through import.\n\n```html\n\u003cdiv id=\"container\"\u003e\u003c/div\u003e\n```\n\n```ts\nimport { PivotSheet } from '@antv/s2';\n\nasync function bootstrap() {\n  const container = document.getElementById('container');\n\n  const s2DataConfig = await fetch('https://gw.alipayobjects.com/os/bmw-prod/2a5dbbc8-d0a7-4d02-b7c9-34f6ca63cff6.json')\n    .then(r =\u003e r.json())\n\n  const s2 = new PivotSheet(container, s2DataConfig, {\n    width: 600,\n    height: 300,\n  });\n\n  await s2.render();\n}\n\nbootstrap()\n```\n\n![result](https://mdn.alipayobjects.com/huamei_qa8qxu/afts/img/A*fod3RoX8iRwAAAAAAAAAAAAAemJ7AQ/fmt.avif)\n\n## 📦 Packages\n\n| Package  | Latest  | Size   | Download     |\n| -------- | ------ | ----------  | ------ |\n| [@antv/s2](https://github.com/antvis/S2/tree/next/packages/s2-core)        | ![latest](https://img.shields.io/npm/v/@antv/s2/latest.svg?logo=npm)  | ![size](https://img.badgesize.io/https:/unpkg.com/@antv/s2@latest/dist/s2.min.js?label=gzip%20size\u0026compression=gzip)       | ![download](https://img.shields.io/npm/dm/@antv/s2.svg?logo=npm)       |\n| [@antv/s2-react](https://github.com/antvis/S2/tree/next/packages/s2-react) | ![latest](https://img.shields.io/npm/v/@antv/s2-react/latest.svg?logo=npm) | ![size](https://img.badgesize.io/https:/unpkg.com/@antv/s2-react@latest/dist/s2-react.min.js?label=gzip%20size\u0026compression=gzip) | ![download](https://img.shields.io/npm/dm/@antv/s2-react.svg?logo=npm) |\n| [@antv/s2-react-components](https://github.com/antvis/S2/tree/next/packages/s2-react-components) | ![latest](https://img.shields.io/npm/v/@antv/s2-react-components/latest.svg?logo=npm) | ![size](https://img.badgesize.io/https:/unpkg.com/@antv/s2-react-components@latest/dist/s2-react-components.min.js?label=gzip%20size\u0026compression=gzip) | ![download](https://img.shields.io/npm/dm/@antv/s2-react-components.svg?logo=npm) |\n| [@antv/s2-vue](https://github.com/antvis/S2/tree/next/packages/s2-vue)     | ![latest](https://img.shields.io/npm/v/@antv/s2-vue/latest.svg?logo=npm) | ![size](https://img.badgesize.io/https:/unpkg.com/@antv/s2-vue@latest/dist/s2-vue.min.js?label=gzip%20size\u0026compression=gzip)   | ![download](https://img.shields.io/npm/dm/@antv/s2-vue.svg?logo=npm)   |\n\n## 🖥️ Browser Compatibility\n\n| [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\"Edge\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eEdge | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eFirefox | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eChrome | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003cbr\u003eSafari |\n| --- |  --- | --- | --- |\n| Edge | last 2 versions | last 2 versions | last 2 versions |\n\n`@antv/s2-react` and `@antv/s2-vue` see [React JavaScript environment requirements](https://zh-hans.reactjs.org/docs/javascript-environment-requirements.html) 和 [Vite browser compatibility](https://cn.vitejs.dev/guide/build.html#browser-compatibility)\n\n## 👤 Author\n\n[**@AntV**](https://github.com/orgs/antvis/people)\n\n## 🤝 Contributing\n\nContributions, issues and feature requests are welcome.\nFeel free to check [issues](https://github.com/antvis/S2/issues) page if you want to contribute.\n\n\u003e S2 use pnpm as package manager\n\n```bash\ngit clone git@github.com:antvis/S2.git\n\ncd S2\n\npnpm install # or pnpm bootstrap\n\n# build all\npnpm build\n\n# debug s2-core\npnpm core:start\n\n# debug s2-react\npnpm react:playground\n\n# debug s2-vue\npnpm vue:playground\n\n# unit test\npnpm test\n\n# check the code style and the type definition\npnpm lint\n\n# start the website\npnpm site:start\n```\n\n## 👁️ Insight\n\n![Alt](https://repobeats.axiom.co/api/embed/ebb7eecb994dc0e3980044aefe43eb81302e3632.svg \"Repobeats analytics image\")\n\n## 👬 Contributors\n\n![https://github.com/antvis/s2/graphs/contributors](https://contrib.rocks/image?repo=antvis/s2)\n\n## 📄 License\n\nMIT@[AntV](https://github.com/antvis).\n","funding_links":[],"categories":["Libraries"],"sub_categories":["Charts Libraries"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantvis%2Fs2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantvis%2Fs2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantvis%2Fs2/lists"}