npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@liquidrazor/list-display

v1.0.2

Published

Headless-friendly React list display component with filtering, sorting, pagination, and actions.

Readme

@liquidrazor/list-display

ListDisplay is a highly modular, feature-driven React list engine designed for complex, data-heavy applications.

It is not a drop-in table component.
It is a composable list runtime that you configure, extend, and wire explicitly.

If you are looking for something you can install and style in 5 minutes, this is not that library.


What this library is

ListDisplay provides:

  • A stable list runtime with a single source of truth
  • A pluggable feature system (filtering, sorting, pagination, selection, actions, modals, etc.)
  • A slot-based UI architecture where all UI is optional
  • A headless-first design that does not assume styling, layout, or visual components

You decide:

  • which features exist
  • how they interact
  • which UI components render them
  • how state flows through your application

What this library is NOT

ListDisplay is not:

  • ❌ a styled table component
  • ❌ a Material / Ant / Bootstrap replacement
  • ❌ a low-config CRUD helper
  • ❌ beginner-friendly by default

This library is aimed at senior frontend engineers, design-system authors, and teams building reusable internal tooling.


Core concepts (important)

Before using this library, you should be comfortable with:

  • React 18
  • Controlled vs uncontrolled state
  • Composition over configuration
  • Headless component patterns
  • Explicit wiring instead of “magic defaults”

If those terms feel vague or annoying, pause here.


Architecture overview

At a high level:

  • ListDisplay owns a runtime and context
  • Features register themselves into the runtime
  • UI slots consume runtime state and feature APIs
  • Re-renders happen only inside ListDisplay, never in the parent

Everything is explicit.
Nothing is enabled unless you wire it.


Status & maturity

⚠️ Important

This library is currently:

  • Actively evolving
  • API-stable at the core level, but
  • Still refining feature ergonomics and documentation

It is already used internally, but you should expect to read the docs carefully and understand the architecture before adopting it.

If you need something “safe and boring”, this may not be the right choice yet.


Documentation

Full documentation (API reference + guides) is available here:

👉 https://liquidrazor.github.io/ListDisplay/

Start with:

  • Guide: architectural concepts and feature wiring
  • Reference: generated API documentation

Do not skip the guide.


Installation

npm install @liquidrazor/list-display react react-dom

Minimal example (intentional minimalism)

import { ListDisplay, DefaultTable } from "@liquidrazor/list-display";

<ListDisplay
  idKey="id"
  dataSource={{
    meta: { kind: "static" },
    init: async () => ({ rows: [] }),
  }}
  fields={[
    { id: "id", label: "ID" },
  ]}
  components={{Table: DefaultTable}}
/>

This renders nothing fancy by design.

From here, you explicitly add:

  • features (filtering, sorting, pagination, actions, etc.)
  • UI components for those features
  • custom styling and layout

Who should use this

You should consider ListDisplay if:

  • You are building internal admin tools
  • You need long-lived, extensible list views
  • You want full control over behavior and UI
  • You dislike “smart” components that hide logic

You should not use it if:

  • You want instant visual results
  • You don’t want to think about architecture
  • You expect defaults to do everything

Before you open an issue

Please make sure that:

  • You have read the Guide section of the documentation
  • You understand that features are opt-in
  • You are not expecting default UI or styling
  • Your question is not “how do I build a table UI?”

Good issues include:

  • clear reproduction cases
  • architectural questions
  • feature extension discussions
  • documentation gaps

Issues asking for “simpler defaults” or “automatic behavior” may be closed without discussion.

Final note

ListDisplay is opinionated about control, clarity, and explicitness.

It will reward careful configuration. It will punish assumptions.

If that sounds appealing, welcome.