{"id":13998392,"url":"https://github.com/gabrielpetersson/fast-grid","last_synced_at":"2025-05-14T10:07:29.930Z","repository":{"id":157941477,"uuid":"633734042","full_name":"gabrielpetersson/fast-grid","owner":"gabrielpetersson","description":"World's most performant DOM-based web table. Try it! fast-grid.vercel.app/","archived":false,"fork":false,"pushed_at":"2024-10-31T00:22:03.000Z","size":250,"stargazers_count":2087,"open_issues_count":6,"forks_count":42,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-07T01:01:31.245Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://fast-grid.vercel.app/","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/gabrielpetersson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2023-04-28T06:52:39.000Z","updated_at":"2025-04-06T11:51:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"389a0e10-1ea2-447d-ad42-a020d0698e95","html_url":"https://github.com/gabrielpetersson/fast-grid","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielpetersson%2Ffast-grid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielpetersson%2Ffast-grid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielpetersson%2Ffast-grid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielpetersson%2Ffast-grid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabrielpetersson","download_url":"https://codeload.github.com/gabrielpetersson/fast-grid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248819380,"owners_count":21166476,"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":[],"created_at":"2024-08-09T19:01:37.958Z","updated_at":"2025-04-14T03:55:48.808Z","avatar_url":"https://github.com/gabrielpetersson.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# World's most performant web table - [Try it!](https://fast-grid.vercel.app)\n\nA multithreaded web table, capable of running 120fps while sorting/filtering/scrolling simultaneously. \n\nPosting updates \u0026 soon video walk-through: https://x.com/GabrielPeterss4. DMs are open, curious to hear about use-cases or advise on how to use it :) \n\n### Capabilites\n\n- Multithread sorting/filtering using a shared array buffer\n- Display millions rows at O(1), you are only limited by browser RAM\n- 120 fps while cruising the scrollbar\n- Never drop a frame while filtering or sorting\n\n### Technical details\n\nThe most performant DOM-based grid.\n\n- Uses a shared array buffer to store order/filtering of rows, computed in a web worker off-thread\n- Resuses all part of DOM-tree\n- Own event loop to prioritize tasks. Never drops a frame, even when filtering millions of rows\n- Non-passive scrolling. Rows will never be seen rows loading into the UI while scrolling\n- Custom virtualization and scrolling. Not limited by browsers 15 million pixel div height limit\n- Custom built scrolling for phones, and runs at 60fps even on older phones\n\n### One million rows benchmark (M2 Max Pro)\n\n| Benchmark                              | Score  |\n| -------------------------------------- | ------ |\n| Scroll 40 rows every frame             | 120fps |\n| Filtering                              | 200ms  |\n| Time to initialize grid and show rows  | 1.5ms  |\n| Filter\u0026sort simultaneously every 300ms | 120fps |\n\nzero copy datatype\n\n### TODO\n- iphone safari has a very low memory limit - disable multithreading there\n- expand synthetic event-loop to include scrolling \u0026 rendering cell contents\n- can maybe make GC be a bit less expensive by reusing cell classes more..\n- if user zoomed in/out scrollbar will navigate to fast/slow, needs to be relative to the scroll track\n- sort/filter all columns, not just second lol\n- resize columns\n- custom cells (you can kinda already do this though, just add a new cell class)\n- make sure rows are ordered correctly for text selection\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielpetersson%2Ffast-grid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabrielpetersson%2Ffast-grid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielpetersson%2Ffast-grid/lists"}