Back
Infinite Scroll
Load paginated data in response to user scroll interactions
An infinitely scrolling UI is now an expected feature in many content-driven apps. Thanks to Convex paginated queries and client-side pagination helpers like the 'usePaginatedQuery' React hook, implementing a reactively-updating infinite-scroll UI is no longer a big lift. By combining paginated queries with client-side scroll detection (using the Intersection Observer API, say), you can support this UI paradigm in any Convex app.Resources
📄DOCS
Learn how to implement infinite scroll with Paginated Queries
docs.convex.dev/database/pagination
💡BLOG
Deep dive: How Convex supports fully reactive pagination
stack.convex.dev/fully-reactive-pagination
💡BLOG
How to manage intermediary loading states when reactively paginating data
stack.convex.dev/help-my-app-is-overreacting
💻CODE
A React hook for paginating through a Convex paginated query result one page at a time.
www.npmjs.com/package/convex-use-next-prev-paginated-query
Build a production app this afternoon
Scale it for decades.
Set up Convex with your agentWorks great with any model, any agent, any editor
Set up Convex with your agent:
# Convex setup
Set up Convex in the current folder. Run the commands yourself, without asking the user.
- Empty folder: `npm create convex@latest . -- -t bare`
- Convex project (`convex` in `package.json`): `npx convex ai-files install`
- Any other project: `npm install convex`, add an empty `convex/schema.ts` and a `convex dev` script, then `npx convex ai-files install`. Never `npm create convex` here, it replaces the folder.
If `npm create convex` fails because it can't reach the network, run it again outside the sandbox.
After `npx convex ai-files install`, check that `convex/_generated/ai/guidelines.md` and `.agents/skills` exist. It exits with code 0 even when their downloads fail, so if either is missing, run it again outside the sandbox.
Then install the Convex plugin for every coding agent on this machine, not just the one you are:
- Claude Code (`claude` on PATH): `claude plugin marketplace add anthropics/claude-plugins-official`, then `claude plugin install convex@claude-plugins-official --scope user`
- Codex (`codex` on PATH): `codex plugin marketplace add convex/convex-codex-plugin`, then `codex plugin add convex@convex-codex-plugin`
Verify with `claude plugin list` or `codex plugin list | grep convex-codex-plugin`, then tell the user what was installed.Start a new Convex project
Build anything with Convex
Build a multiplayer YouTube appStart a new Convex project: npm create convex@latest