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

Roadmap - v9 #4467

Closed
1 of 13 tasks
renatoagds opened this issue May 26, 2019 · 25 comments
Closed
1 of 13 tasks

Roadmap - v9 #4467

renatoagds opened this issue May 26, 2019 · 25 comments
Labels
discussion enhancement improvements in current API next relating to next major release

Comments

@renatoagds
Copy link
Contributor

renatoagds commented May 26, 2019

We'll start to create the roadmap for next major release of ReduxForm.

Based on that I want to ask help for the community to create this roadmap.

Please, help us and put here your ideas.


Current tasks for v9:

  • Bump for Redux v7 Upgrade dev dependency to react-redux v7 #4431
  • Move docs for Docusaurus.
  • Rewrite core and extract to new package to improve readability and maintainability.
  • Support render props
  • Remove deprecated configs.
  • Support more frameworks than React.
  • Add hooks support
  • Remove Field, Fields, FieldArray Instance API because of bad practice
  • Drop immutable.js support.
  • Move examples to another repo

Wild tasks

  • Migrate codebase to TypeScript, keep flow types.
  • Allow to detach from redux, allowing useReducer like api
  • Add a global redux-form provider, that will allow to pass some global options, (e.g. plain or immutable structure, getState)

As soon we get more ideas, the current tasks will be update.

@renatoagds renatoagds added discussion enhancement improvements in current API next relating to next major release labels May 26, 2019
@zazapeta
Copy link
Contributor

Hi there, (sorry for my bad english, I'm trying hard to do my best on it)

I have two 'questions/suggestions' :
A. I'm used to follow the https://semver.org/ for bumping versions, and genuinely like it.
In a nutshell, semver is :
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.

As I can see, Redux-Form is not following it (always backward compatible except for the v5-v6).
Am I wrong ? If not, what do you think to embrace it with the v9 ?

B. Keeping the same API, and everything the same, but re-write redux-form by using react-final-form behind to merge the efforts on both projects ?

Cheers 🍻 - zazapeta

@renatoagds
Copy link
Contributor Author

@zazapeta I wasn't following redux-form close to check that, but what examples do you have about not following semver? Anyway, is the plan to follow it from now.

About rewrite redux-form, that's not the plan, basic because redux-form codebase is too large, has differences between react-final-form (like immutable) and for me, doesn't make sense to keep a library written in top of another, which benefits we could have instead of improving react-final-form? This kind of movement is too dangerous and doesn't match with the future plans for redux-form.

@zazapeta
Copy link
Contributor

Hi @renatoagds,
Thanks you for your answers.

This kind of movement is too dangerous...

I can't agree much more !

which benefits we could have instead of improving react-final-form ?

I do not have any answers....... >_>
Shamefully, I'm feeling a little bit stupid now....... 😳😳😳 🙈

Advice for me: Next time, think twice before posting

Anyway,
Thanks you again (and sorry wasting your time) !

🍻 - zazapeta

@venondev
Copy link

Maybe just a small thing, but it would be great if the action creators could be exported in seperate files as the rest of redux form, so you can only require the actions you need.

https://redux-form.com/6.7.0/docs/faq/bundlesize.md/

@Asday
Copy link

Asday commented May 28, 2019

Honestly the most important to me is just drawing a line under all the showstopping bugs, and secondarily getting up to date with react and redux.

Personally, being out of date doesn't affect me, as I'm on Expo, and restricted to a land without hooks, but that's (hopefully) a short term thing.

Any new features can for sure wait as far as I'm concerned.

@renatoagds
Copy link
Contributor Author

@Asday Agreed that we should fix bugs and get a stable v8. But that can't stop us thinking in the future and that's the point that I want to focus in this issue. IMO we could parallelise both works.

@matoilic
Copy link

matoilic commented Jun 18, 2019

Two things I missed a lot in some projects were:

  • The ability to set errors explicitly on a field or on the form via a redux action, without having to take the way over stopSubmit. There I always need to take extra steps to not lose the existing errors on other fields than the one I want to update.
  • The ability to trigger the revalidation of a field or the whole form from outside. I often have the case, that when the user changes a value in one field it might invalidate an other field's value.

Also, using ES6 modules in ReduxForm by default would be really nice. Currently, if you want to optimize the bundle size you need to import from individual files. It would be really nice if the package's "main" file would already use ES modules.

@Asday
Copy link

Asday commented Jun 19, 2019

I'm fairly sure your second case is already what happens - synchronous validation happens on every onChange event.

@renatoagds
Copy link
Contributor Author

@matoilic Could describe which cases do you need to import from individual cases? Just to have a proper scenario for this feature.

@iamandrewluca
Copy link
Member

Move https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/redux-form in this repo, fix them and keep up to date with every change

@iamandrewluca
Copy link
Member

iamandrewluca commented Jul 26, 2019

One more ambitious idea. Maybe extract all redux logic, and have to packages redux-form, redux-form-react, or even redux-form-angular ))

or

  • @redux-form/reducer
  • @redux-form/react
  • @redux-form/angular

@renatoagds
Copy link
Contributor Author

@iamandrewluca Can you explain more what's your idea with commit guidelines links? About extract redux logic, looks like a good idea. It could be combine with the core rewrite.

@iamandrewluca
Copy link
Member

iamandrewluca commented Jul 29, 2019

commit guidelines links

Writing commits and keeping a format like angular does makes easier to generate CHANGELOG from commits, also version number increasing, and publishing made easier.

https://www.youtube.com/watch?v=ZXyx_1kN1L8

@iamandrewluca
Copy link
Member

iamandrewluca commented Jul 29, 2019

Also maybe we can move to react hooks underneath main components.

@iamandrewluca
Copy link
Member

iamandrewluca commented Jul 30, 2019

Last night I had an ideea. When rewriting core, a feature could be to decouple at user preference from redux, and just use react/useContext/useReducer.
That would be an option for reduxForm HOC and will save state in react instead of redux.

@renatoagds renatoagds added this to the v9.0.0 milestone Jul 30, 2019
@matoilic
Copy link

A lot of good suggestions to improve redux-form. But I would suggest focussing on proper react-redux v7 compatibility and removing the usage of deprecated React APIs. Before starting to build new functionality, it might be useful to lay a clean and stable base with v9 and postpone the rest to v10.

For me, redux-form is currently the main blocker why I can't upgrade to react-redux v7 in projects which use it. And probably there are a lot of other devs out there in the same situation. Or did I understand #4431 wrong and redux-form is already compatible with react-redux v7?

@kangax
Copy link
Contributor

kangax commented Jul 30, 2019

@matoilic it's not compatible, we're blocked with redux update on that same issue

@iamandrewluca
Copy link
Member

iamandrewluca commented Jul 31, 2019

We are using in production this versions, and didn't encountered any issues yet.

{
  "react-redux": "^7.1.0",
  "redux": "^4.0.4",
  "redux-form": "^8.2.4"
}

@iamandrewluca
Copy link
Member

iamandrewluca commented Aug 1, 2019

@renatoagds current tasks are strictly for v9? Or some of them can be implemented even in v8, if will not be breaking changes?

@iamandrewluca
Copy link
Member

iamandrewluca commented Aug 2, 2019

Also maybe create a public chat (slack, discord, gitter...) for redux-form? Don't know any existing one.

@renatoagds
Copy link
Contributor Author

@iamandrewluca

current tasks are strictly for v9? Or some of them can be implemented even in v8, if will not be breaking changes?

is not strict for v9, which one to you think is possible without breaking changes?

Also maybe create a public chat (slack, discord, gitter...) for redux-form? Don't know any existing one.

It's already a gitter channel, if you search there you'll find

@iamandrewluca
Copy link
Member

iamandrewluca commented Sep 10, 2019

Deprecate/remove Field/Fields/FieldArray Instance API because of bad practice
using a ref on Field/Fields/FieldArray should be passed down straight to passed component

@iamandrewluca
Copy link
Member

Move examples to another repo

@renatoagds
Copy link
Contributor Author

Closing this issue, since we'll enter RF in maintenance mode and avoid big changes in the current codebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion enhancement improvements in current API next relating to next major release
Projects
None yet
Development

No branches or pull requests

7 participants