# Surely Vue Table: a Vue table built around virtual scrolling

> Surely Vue Table is a commercial component from the Ant Design Vue team that renders very large datasets by virtualising rows and columns, with tree data, merged cells, fixed headers, editing and CSV and Excel export included. It is free to use with a watermark that cannot be removed.

**surely-vue/surely-table** — Performant advanced table component

- Repository: https://github.com/surely-vue/surely-table
- Website: https://www.surely.cool
- Stars: 697 · Forks: 83
- Language: Vue
- License: not declared
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/surely-vue-surely-table

## The problem: a table that stalls the page

Surely Vue Table is described as a performant advanced table component, and the README states the intent plainly. It is one of the higher end components from the Ant Design Vue team, built to solve problems around large data rendering and chart integration that come up often in production. The headline claim is specific enough to be worth quoting in spirit: you can scroll smoothly through 100 thousand rows and 100 thousand columns without the page locking up, so you do not have to worry about a frozen page turning into user complaints and then into lost business. The audience is therefore front-end teams whose users live in a data grid, which is to say enterprise dashboards, admin panels and internal tools rather than marketing sites. The primary language is Vue, the topics are table, vue and vue3, and the homepage for the project is surely.cool.

## Virtual scrolling is the default, not an option

The mechanism that makes the performance claim possible is that virtual scrolling is on by default. The README says Surely Vue uses virtual scrolling to improve rendering speed by default, and that tree data, expanded content, nested sub-tables, row and column merging, automatic row height, horizontal and vertical scrolling, sticky headers and fixed columns are all supported under virtual scrolling. That last clause is the important one, because virtualisation is usually where feature lists stop. A virtualised grid that cannot also do merged cells or nested tables is a grid you cannot use for real data. Here the compatibility list includes fixed headers, fixed columns and sticky table headers, which are the features people abandon virtual scrolling for. The feature table in the README also lists virtual row scrolling and virtual column scrolling as separate supported items, and both directions matter, since a wide table needs column virtualisation even if its row count is small.

## What the feature table says is finished, and what is not

The README publishes a status table that separates what works from what is being built, and it is unusually long, which tells you how much surface this component covers. Marked as supported are border customisation, compact mode, custom cells, custom row styles, zebra striping, single and multi select, invert select and select all, single and multi column sorting, server side sorting, filtering and custom filters, column resizing, fixed headers and fixed columns, sticky table headers, pagination and custom pagination, header and footer, totals, header merging, header grouping, row merging, column merging, create read update and delete, collapsible data, tree data, nested sub-tables, virtual row and column scrolling, loading and empty states, cell editing and row editing, automatic row height, internationalisation, animations, row and column drag sorting, dark mode, a right click feature set, and export to CSV and to Excel. Four entries are still marked as under construction: charts, file import, copy import and printing. That is a short list relative to the rest, but chart integration is named in the introduction as one of the problems the component set aims at, so a team planning a dashboard with inline charts should notice that gap.

## The commercial terms: free to use, watermark stays

The licensing is the part to read before anything else, and the README does not bury it. It is a commercial component, but you can still use it for free; what you cannot do is remove the watermark, and you cannot hide the watermark either. The stated reasoning is that the team has kept Ant Design Vue fully open source while looking for a workable business model, and expects to fund it through a collection of high end components, in the hope of hiring more technical specialists and developing more features, and that the commercialisation of Surely Vue will help Ant Design Vue grow faster. The package.json agrees, listing the licence as Commercial for the @surely-vue/table package. The repository listing, however, records the licence as unknown, a custom one GitHub cannot classify, so the terms in the README are the ones to work from, and the absence of a conventional licence file in the tree is worth a conversation with the maintainers if you need a written grant for a legal review.

## The package shape, and how it fits into a build

The package.json in the repository is the development workspace rather than a consumer manifest, but it still describes the component. The published name is @surely-vue/table at version 5.1.6, with main pointing at dist/index.umd.js, module at dist/index.esm.js and types at dist/src/index.d.ts, and the published files limited to dist and src/style, which is a small surface for a component of this size. The runtime dependencies are worth reading, because they tell you what the component assumes about your stack: ant-design-vue at 4.1.2, vue at 3.5.12, @ant-design/icons-vue, dayjs and lodash-es, the @floating-ui pair for positioning, @vueuse/core, and a resize-observer-polyfill, which is there for older browsers. The component also depends on @surely-vue/table at the same version, which is how the demo application consumes the built package. Even though the README says you can use the component with any component library and that it is not exclusive to Ant Design Vue, the dependency on ant-design-vue and its icon set is a real coupling you will be shipping.

## Where it is the wrong tool

Three cases rule it out. The first is a small table. The whole premise is that virtual scrolling keeps a hundred thousand rows smooth, and on a table of thirty rows a normal component renders instantly with far less machinery. Paying for a commercial licence and carrying a watermark to solve a problem you do not have is a bad trade. The second is a product where a visible watermark is unacceptable, since the README states plainly that it cannot be removed or hidden. The third is a chart heavy dashboard, because charts are one of the four features still under construction. There is also a quieter risk in depending on a single vendor for the most performance critical component in an application. If the maintenance slows, the components you cannot remove the watermark from are the ones you cannot replace cheaply, and there is no GitHub release for this repository to track versions, so you would be tracking whatever the maintainers publish on their own terms.

## The alternative approach, and the state of the branch

The comparison to make is with the table component already in your component library. Ant Design Vue has its own table, and the same team maintains it as open source, so the difference is not a matter of quality but of who does the virtualisation work for you. The open source path is to keep the standard table and add virtual scrolling, sorting and fixed column handling yourself, or to reach for a dedicated virtual grid library and wire the two together. The cost of that path is your own code and your own bugs, and the benefit is that you own the result and the component carries no watermark and no vendor. That is the trade Surely Vue Table is asking you to evaluate. The repository itself is not archived and the last push was on 2026-05-22, so the work is ongoing, and the tree shows an active development setup with Vite and UnoCSS configuration, a wrangler.jsonc for Cloudflare deployments, a renovate.json for dependency updates, a plugin/ directory and separate Chinese and English changelogs. The package version in the workspace is 5.1.6 and there are no GitHub releases, so versions are tracked through the npm package rather than through tags.

## Conclusion

Adopt Surely Vue Table if your Vue application has to show tables large enough that a normal table component stalls the page, and you accept a commercial component with a visible watermark. Do not adopt it if your tables are small, since the virtualisation machinery buys you nothing there, and do not adopt it if a watermark in the corner of your product is unacceptable, because the README states the watermark cannot be removed or hidden. Before you commit, read the feature table and check the items still marked as under development, since charts, file import, copy import and printing are listed that way, and confirm the component works with your own component library rather than only Ant Design Vue.

## FAQ

### What is Surely Vue Table and who builds it?

It is a high end table component from the Ant Design Vue team, built to solve large data rendering and chart integration problems, and the README says you can scroll smoothly through 100 thousand rows and 100 thousand columns. It is published as @surely-vue/table and can be used with any component library, not only Ant Design Vue.

### Is Surely Vue Table free to use?

Yes, it is free to use, but the README states you cannot remove the watermark and cannot hide it. The package.json lists the licence as Commercial, and the stated model is that revenue from high end components funds further development of the open source Ant Design Vue.

### Which features are still under development in Surely Vue Table?

The README's status table marks four items as in progress rather than supported: charts, file import, copy import and printing. Everything else in the table, including virtual row and column scrolling, tree data, merged cells, fixed columns, editing, dark mode and CSV and Excel export, is listed as supported.

### How is virtual scrolling handled in Surely Vue Table?

Virtual scrolling is on by default rather than being an option, and the README says tree data, expanded content, nested sub-tables, row and column merging, automatic row height, horizontal and vertical scrolling, sticky headers and fixed columns are all supported under it. Virtual row scrolling and virtual column scrolling are listed as separate supported features.

## Sources

- [Issues](https://github.com/surely-vue/surely-table/issues)
- [Project website](https://www.surely.cool)
- [README](https://github.com/surely-vue/surely-table/blob/main/README.md)
- [surely-vue/surely-table on GitHub](https://github.com/surely-vue/surely-table)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/surely-vue-surely-table
