{"id":50547749,"url":"https://github.com/cacheplane/pretable","last_synced_at":"2026-06-04T00:04:31.776Z","repository":{"id":355239652,"uuid":"1210070817","full_name":"cacheplane/pretable","owner":"cacheplane","description":"The fastest data grid for React. Built for the AI era.","archived":false,"fork":false,"pushed_at":"2026-05-10T17:06:35.000Z","size":5590,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-10T19:12:24.547Z","etag":null,"topics":["agents","ai","data-grid","data-table","react","streaming","table","typescript","virtualization"],"latest_commit_sha":null,"homepage":"https://pretable.ai","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/cacheplane.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-14T03:59:11.000Z","updated_at":"2026-05-10T17:06:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cacheplane/pretable","commit_stats":null,"previous_names":["cacheplane/pretable"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cacheplane/pretable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cacheplane%2Fpretable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cacheplane%2Fpretable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cacheplane%2Fpretable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cacheplane%2Fpretable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cacheplane","download_url":"https://codeload.github.com/cacheplane/pretable/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cacheplane%2Fpretable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33884797,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["agents","ai","data-grid","data-table","react","streaming","table","typescript","virtualization"],"created_at":"2026-06-04T00:04:30.931Z","updated_at":"2026-06-04T00:04:31.771Z","avatar_url":"https://github.com/cacheplane.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pretable\n\n[![CI](https://github.com/cacheplane/pretable/actions/workflows/ci.yml/badge.svg)](https://github.com/cacheplane/pretable/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-2563eb.svg)](./LICENSE)\n\nPretable is a React data grid for AI product teams that need to render messy,\nhigh-signal data: chat transcripts, eval results, support queues, research\ntables, tool-call logs, and other text-heavy workflows where fixed-height rows\nbreak down.\n\nIt focuses on wrapped text, variable row heights, column virtualization,\nstreaming-compatible updates, keyboard/selection primitives, and a small public\nAPI that can grow without enterprise-grid ceremony.\n\n## Status\n\nPretable is pre-1.0. The public packages are intentionally narrow while the\nengine hardens:\n\n- `@pretable/react`: React components and hooks.\n- `@pretable/core`: framework-agnostic grid state primitives.\n- `@pretable/ui`: CSS themes, grid skin, tokens, and Tailwind helpers.\n- `@pretable/stream-adapter`: streaming helpers for partial and element streams.\n- `@cacheplane/json-stream`: low-level JSON stream parsing utilities.\n\nPackages named `@pretable-internal/*` are repo-local implementation details.\nDo not build application code against them.\n\n## Install\n\n```bash\nnpm install @pretable/react @pretable/ui\n```\n\nPeer dependency: `react ^19.0.0`.\n\nImport a theme and the grid skin once in your app entry point:\n\n```css\n@import \"@pretable/ui/themes/excel.css\";\n@import \"@pretable/ui/grid.css\";\n```\n\n`@pretable/ui/themes/material.css` is also available. Tailwind v4 users can\nimport `@pretable/ui/tailwind.css` for token-backed utility aliases.\n\n## First Grid\n\n```tsx\nimport {\n  Pretable,\n  type PretableColumn,\n  type PretableRow,\n} from \"@pretable/react\";\n\nconst columns: PretableColumn[] = [\n  { id: \"name\", header: \"Name\", value: (row) =\u003e row.name },\n  { id: \"role\", header: \"Role\", value: (row) =\u003e row.role },\n  { id: \"notes\", header: \"Notes\", value: (row) =\u003e row.notes },\n];\n\nconst rows: PretableRow[] = [\n  {\n    id: \"1\",\n    name: \"Ada\",\n    role: \"Engineer\",\n    notes: \"Investigating a long-running eval with wrapped explanation text.\",\n  },\n  {\n    id: \"2\",\n    name: \"Grace\",\n    role: \"Operator\",\n    notes: \"Triaging streamed tool-call output across several retries.\",\n  },\n];\n\nexport function Queue() {\n  return \u003cPretable rows={rows} columns={columns} /\u003e;\n}\n```\n\nFor lower-level rendering, selection, keyboard navigation, custom cells, and\nmeasured row heights, use `usePretableModel` from `@pretable/react`.\n\n## Why Pretable\n\nMost grids are strongest when rows are compact, uniform, and human-entered.\nAI products often have the opposite shape: long text, unstable row heights,\nstreaming responses, nested metadata, and high-frequency inspection workflows.\n\nPretable is built around that shape:\n\n- Variable-height rows and wrapped content are first-class.\n- Column virtualization is part of the proof surface, not a later add-on.\n- Sorting, filtering, focus, copy, and selection live in a framework-neutral\n  core before React renders them.\n- Streaming adapters are designed to preserve row stability instead of only\n  chasing raw update throughput.\n- Benchmarks are committed as repo artifacts so claims can be inspected.\n\n## Evidence\n\nMilestone benchmark summaries live in `status/milestones/` and are committed so\nthey resolve in every checkout.\n\n- `2026-05-01-h1-satisfied.hypotheses.json`: wrapped-text scroll benchmark with\n  16 ms Pretable median `frame_p95`, zero row-height error, zero blank gaps, and\n  zero long tasks.\n- `2026-05-01-interaction-comprehensive.hypotheses.json`: sort, filter, scroll,\n  and interaction hypotheses satisfied across the non-streaming proof surface.\n- `2026-05-01-s3-column-virtualization.hypotheses.json`: 2,500 rows x 500\n  columns with 160 peak DOM nodes and no blank-gap frames.\n- `2026-05-01-streaming-revalidated.hypotheses.json`: streaming update\n  validation where Pretable's strongest current wedge is row stability.\n\nThe honest current framing: non-streaming wrapped-text and interaction claims\nare strong; streaming is implemented and measured, but some comparative\nstreaming hypotheses remain directional rather than fully satisfied.\n\n## Repository Layout\n\n```text\napps/bench                 Benchmark lab and browser test target\napps/website               Documentation and marketing site\npackages/core              Public framework-agnostic grid primitives\npackages/react             Public React adapter\npackages/ui                Public CSS themes and grid skin\npackages/stream-adapter    Public streaming adapter package\npackages/json-stream       Public JSON stream parser utilities\npackages/*-core            Internal text, layout, and grid engines\npackages/renderer-dom      Internal DOM renderer planning layer\npackages/scenario-data     Internal benchmark/demo datasets\npackages/bench-runner      Internal benchmark artifact utilities\ndocs/                      Design notes, research, and implementation plans\nstatus/milestones          Committed benchmark evidence\n```\n\n## Development\n\nUse Node.js 22+ and pnpm 10+.\n\n```bash\npnpm install\npnpm --filter @pretable/app-website dev\npnpm dev:bench\n```\n\nRun validation from the repository root:\n\n```bash\npnpm lint\npnpm test\npnpm typecheck\npnpm build\npnpm api:check\npnpm lint:packaging\n```\n\nHeavy workspace commands should run sequentially in one checkout. They build\nshared packages and can contend with each other when launched in parallel.\n\n## Documentation\n\n- Product site and docs: [pretable.ai](https://pretable.ai)\n- Getting started: [pretable.ai/docs/getting-started](https://pretable.ai/docs/getting-started)\n- Grid API reference: [pretable.ai/docs/grid/api-reference](https://pretable.ai/docs/grid/api-reference)\n- Streaming docs: [pretable.ai/docs/streaming](https://pretable.ai/docs/streaming)\n\n## Contributing\n\nPublic contributions are welcome. Start with [CONTRIBUTING.md](./CONTRIBUTING.md)\nfor setup, validation, issue, pull request, changeset, and CLA/DCO policy.\n\nPlease follow the [Code of Conduct](./CODE_OF_CONDUCT.md). For security issues,\ndo not open a public issue; follow [SECURITY.md](./SECURITY.md).\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcacheplane%2Fpretable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcacheplane%2Fpretable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcacheplane%2Fpretable/lists"}