Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

React-Table's current state and future roadmap #1143

Closed
snezik opened this issue Oct 4, 2018 · 27 comments
Closed

React-Table's current state and future roadmap #1143

snezik opened this issue Oct 4, 2018 · 27 comments

Comments

@snezik
Copy link

snezik commented Oct 4, 2018

No updates lately.
There are a lot of pull requests, please merge some fixes and features.

Don't let the project die

@tannerlinsley
Copy link
Collaborator

Clearly this issue was meant as a request for an update on the state of React-Table, so let's do just that:

TL;DR: React-Table is still being actively maintained, dog-fooded, and developed by it's original maintainers and avid users. (Primarily me, @tannerlinsley, with a bit of help from @gary-menzel). As time permits, it is undergoing a remarkable rewrite as we speak to become a more sustainable collection of headless components, UI implementations and composable HOC's/plugins.

The unsustainable API of the current version has been wildly successful in helping people become immediately productive with their use-cases, but its limited flexibility and underlying architecture is to blame for the massive amount of pull requests and issues that come in every day.

@gary-menzel, other maintainers and myself have all previously tried to keep up with this influx of feature requests and bugs, and all of us have experienced some level of burnout while we endlessly add more props and API surface area to the library. We have learned the hard way that this is no way to build or maintain a library with the scope as complex as React-Table's.

So, instead of putting out ever-growing fires and throwing more props at the problem, we have chosen to move forward by building a less "flammable" library 😄 using headless components as an escape hatch. If you are not familiar with headless components, you will benefit from reading this article: https://medium.com/merrickchristensen/headless-user-interface-components-565b0c0f2e18.

Headless components will unlock the ultimate level of flexibility by inverting most control back to the user. This will allow for customization that wasn't possible before with React-Table and also allow the library to become leaner, smarter, and more maintainable.

The first fruits of this effort will likely be publicly visible (a new version branch) in the next few months.

Tentative Roadmap:

  • 3-5 Months: New version branch for headless components (partial-parity)
  • 1-2 Months: UI implementations using these components (feature-parity)
  • 1 Month: Migration guides, new features, deprecations, etc.
  • 1 Month: Release

RE: Original issue: "Wake Up" probably isn't the best issue title. Let's try to be more respectful in the future. No need to let React-Table slip into a demeaning place as a community.

@tannerlinsley tannerlinsley changed the title Wake up React-Static's current state and future roadmap Oct 4, 2018
This was referenced Oct 4, 2018
@hansena
Copy link

hansena commented Oct 19, 2018

@tannerlinsley are there any pieces of this effort that the community can contribute to?

@tannerlinsley
Copy link
Collaborator

The pieces are close to being published in a new branch. Stay tuned for a big todo list where you can help :)

@kurtwilbies
Copy link

@tannerlinsley

I suggest first publish a 6.9 version and then open the new one.

@rosibaj
Copy link

rosibaj commented Oct 30, 2018

When will this release be completed? We are trying to decide how much accessibility effort we need to put where! If its coming relatively quickly that would help :)

@zmitry
Copy link

zmitry commented Nov 8, 2018

@tannerlinsley any updates on this roadmap ?

@kurtwilbies
Copy link

@tannerlinsley Any updates?

@tannerlinsley
Copy link
Collaborator

V7 is still likely not to be out for a while. Keep using v6, fork if necessary, and maintain your list of features/upgrades until v7-alpha materializes.

@zmitry
Copy link

zmitry commented Nov 13, 2018

@tannerlinsley btw, can u provide general idea of v7 and how api could change ?

@tannerlinsley
Copy link
Collaborator

Updates

  • The initial alpha source code for v7 is now available on the master branch.
  • Likewise, v6 has been moved to its own branch now.
  • I will not be actively working on any more v6 issues submitted through Github.
  • I will, however, accept any non-breaking PR's to fix critical v6 bugs
  • I am estimating another 2 months before v7 is ready for a stable release.

@Grsmto
Copy link
Contributor

Grsmto commented Feb 5, 2019

Any reason v7 is not released under pre-release tag?
As I understand there will be a huge change in the API so we can't start using React-Table right now until the stable release.
Would be great to have it on npm somewhere to use it!

@tannerlinsley
Copy link
Collaborator

It's available under react-table@next!

  • The api is still changing a lot
  • Things will break
  • Use for experimenting/ideas/contributing only ;)

@gary-menzel
Copy link
Contributor

I "hacked" together a copy of the V7 source (along with the codesandbox that @tannerlinsley tweeted not long ago) up and running last night. The code is changing frequently and the two are not entirely compatible at this stage.

I was really happy to see that I could use the "old" simple API (columns and data) to create a basic table and how the React Hooks supplied (amongst others) - useFlexlayout and usePagination -will be able to extend the basic logic and UI.

It does seem as though it will be possible to provide a (largely) API compatible composition that could be a drop-in replacement for a lot of the basic table functionality from V6 (at least it looks that way from the few hours I spent on it).

The way I see it, React Hooks do for lego-like logic/state composition what React originally did for UI Component composition. It should eventually be possible (when the rapid development slows down a little) to write comprehensive tests on all the hooks independently. The previous V6 code had no test and was beyond impossible to test (as it was all tightly integrated with the whole piece).

So, looking forward to this new release and hope to add some value throughout the journey.

@mmazanec22
Copy link

@tannerlinsley congrats on the new release! I saw your comments on several issues and PRs that accessibility compliance was part of the plan for v7. Any word on that?

@tannerlinsley
Copy link
Collaborator

@mmazanec22 Accessibility will be the responsibility of the user, since v7 is a headless React hook. Thus, you can approach accessibility any way you'd like when you build your table's markup/renderer.

@sachin-philip
Copy link

@tannerlinsley How much of an effort will be there for a developer to migrate from v6 to v7? Will the code breaks?

@tannerlinsley
Copy link
Collaborator

I will be doing my best to write a migration guide, but there will be work involved. Close to all of that work will be building your table's markup, since v7 is headless. I'll be providing basic markup examples, along with some styled-components examples to replicate the current table very closely.

As far as table configuration, most things will translate over directly (props will become options in the useReactTable hook) and HOC's will either become components you use in your table markup, or just plugin-hooks.

Regardless, expect great documentation and at the very least a basic migration guide.

@Grsmto
Copy link
Contributor

Grsmto commented Mar 6, 2019

For anyone looking for this, I'm currently working on a React Table v7 TypeScript typings definitions: https://gist.github.com/Grsmto/1ac3a7ddb8ad8288660784a37bff1798
Plan is to create a PR to definitely-typed repository once the API of v7 is a bit more stable.
Ping me if anyone wants to help with this.

@gowthamkumarguruju

This comment has been minimized.

@quantuminformation
Copy link

Does anyone have a minimal example of v7 using typescript? The one here is too complex for my use case. I just want to get up to speed ASAP.

@quantuminformation
Copy link

Are there any TS definitions for v6?

@tannerlinsley
Copy link
Collaborator

Closing in favor of #1252

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests