npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details


  • User packages



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.


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 🙏

© 2019 – Ryan Hefner




table ui component for react





React table component.

NPM version build status Test coverage npm download




npm install
npm start



import Table from 'rc-table';

const columns = [{
  title: 'Name', dataIndex: 'name', key:'name', width: 100,
}, {
  title: 'Age', dataIndex: 'age', key:'age', width: 100,
}, {
  title: 'Address', dataIndex: 'address', key:'address', width: 200,
}, {
  title: 'Operations', dataIndex: '', key:'operations', render: () => <a href="#">Delete</a>,

const data = [
  { name: 'Jack', age: 28, address: 'some where', key:'1' },
  { name: 'Rose', age: 36, address: 'some where', key:'2' },

React.render(<Table columns={columns} data={data} />, mountNode);



Name Type Default Description
tableLayout 'auto' | 'fixed' 'auto', 'fixed' for any columns is fixed or ellipsis or header is fixed
prefixCls String rc-table
className String additional className
id String identifier of the container div
useFixedHeader Boolean false whether use separator table for header. better set width for columns
scroll Object {x: false, y: false} whether table can be scroll in x/y direction, `x` or `y` can be a number that indicated the width and height of table body
expandIconAsCell Boolean false whether render expandIcon as a cell
expandIconColumnIndex Number 0 The index of expandIcon which column will be inserted when expandIconAsCell is false
rowKey string or Function(record):string 'key' If rowKey is string, `record[rowKey]` will be used as key. If rowKey is function, the return value of `rowKey(record)` will be use as key.
rowClassName string or Function(record, index, indent):string get row's className
rowRef Function(record, index, indent):string get row's ref key
defaultExpandedRowKeys String[] [] initial expanded rows keys
expandedRowKeys String[] current expanded rows keys
defaultExpandAllRows Boolean false Expand All Rows initially
onExpandedRowsChange Function(expandedRows) save the expanded rows in the internal state function to call when the expanded rows change
onExpand Function(expanded, record) function to call when click expand icon
expandedRowClassName Function(recode, index, indent):string get expanded row's className
expandedRowRender Function(recode, index, indent, expanded):ReactNode Content render to expanded row
data Object[] data record array to be rendered
indentSize Number 15 indentSize for every level of data.i.children, better using with column.width specified
onRowClick[deprecated] Function(record, index) handle rowClick action, index means the index of current row among fatherElement[childrenColumnName]
onRowDoubleClick[deprecated] Function(record, index) handle rowDoubleClick action, index means the index of current row among fatherElement[childrenColumnName]
onRowMouseEnter[deprecated] Function(record, index) handle onRowMouseEnter action, index means the index of current row among fatherElement[childrenColumnName]
onRowMouseLeave[deprecated] Function(record, index) handle onRowMouseLeave action, index means the index of current row among fatherElement[childrenColumnName]
onRow Function(record, index) Set custom props per each row.
onHeaderRow Function(record, index) Set custom props per each header row.
showHeader Boolean true whether table head is shown
title Function(currentData) table title render function
footer Function(currentData) table footer render function
getBodyWrapper[deprecated] Function(body) get wrapper of tbody, [demo](
emptyText React.Node or Function `No Data` Display text when data is empty
columns Object[] The columns config of table, see table below
components Object Override table elements, see [#171]( for more details

Column Props

Name Type Default Description
key String key of this column
className String className of this column
colSpan Number thead colSpan of this column
title React Node title of this column
dataIndex String display field of the data record
width String|Number width of the specific proportion calculation according to the width of the columns
fixed String|Boolean this column will be fixed when table scroll horizontally: true or 'left' or 'right'
align String specify how cell content is aligned
ellipsis Boolean specify whether cell content be ellipsized
onCell Function(record, index) Set custom props per each cell.
onHeaderCell Function(record) Set custom props per each header cell.
render Function(value, row, index) The render function of cell, has three params: the text of this cell, the record of this row, the index of this row, it's return an object:{ children: value, props: { colSpan: 1, rowSpan:1 } } ==> 'children' is the text of this cell, props is some setting of this cell, eg: 'colspan' set td colspan, 'rowspan' set td rowspan
onCellClick[deprecated] Function(row, event) Called when column's cell is clicked


rc-table is released under the MIT license.