facebookexperimental / Recoil

Recoil is an experimental state management library for React apps. It provides several capabilities that are difficult to achieve with React alone, while being compatible with the newest features of React.
https://recoiljs.org/
MIT License
19.59k stars 1.18k forks source link

What's happening in the future of recoil? #1495

Open Cpt-Falcon opened 2 years ago

Cpt-Falcon commented 2 years ago

Switched over one of my projects to recoil and its so much better than redux its absurd. I will never use redux again if I don't have to. But I was curious about what features are planned for future development?

I don't see a roadmap or anything so I was wondering if someone could post a roadmap if it exists.

I like to know about future features/enhancements so that I can design the code with those new features in mind. I would also love to know what the far future goals are for say version 1.0, or even 2.0?

72gm commented 2 years ago

It would be really good to see something like this so as those of us that want to use this in a production app have confidence we've evaluated it appropriately...

you've been experimental for a year and a half now... when is experimental => professional ?

sarmadsangi commented 2 years ago

Too many folks out there can't use this for production apps because its labelled "experimental". It would be nice to know the ETA of recoiljs stable release.

IgnusG commented 2 years ago

I keep checking back every now and then too. Having a library be experimental for so long has been discouraging me from using it so far even though I’d like to try it out. So far I’ve heard only praise about it.

I know it’s important to iron out the quirks and API especially since the authors might end up having to maintain it if it ever becomes stable, but at least a rough estimate (few months, years, decades, never) might be good so we can orient ourselves better.

And I’m sure like minded developers (although maybe not everyone) on here will agree not to hold the authors accountable if such a long shot prediction turns out inaccurate. Hey, at least it’s something.

This reminds me a bit of Ramdas major release aversion btw. (German word of the day being Hauptversionsnummernerhöhungsangst). I know it’s not exactly the same thing here but it’s a real problem a library can fall into and never recover from.

EdenTurgeman commented 2 years ago

I'm just rooting for more transparency regarding the roadmap (hopefully there is one), new features, stability improvements and getting to a stable version that i can confidently use in production

jurajh-fb commented 2 years ago

@serp777 I'm part of a Meta team in the open source space, although I'm not directly affiliated with Recoil. Your question is perfectly reasonable. During the winter holidays, it's more difficult to get a hold of the right people to provide status updates on projects, but I'm trying to follow up and I'll make sure you get a reply as soon as people return back into the office. Thank you for being patient!

Cpt-Falcon commented 2 years ago

@serp777 I'm part of a Meta team in the open source space, although I'm not directly affiliated with Recoil. Your question is perfectly reasonable. During the winter holidays, it's more difficult to get a hold of the right people to provide status updates on projects, but I'm trying to follow up and I'll make sure you get a reply as soon as people return back into the office. Thank you for being patient!

Thank you, I just wanted to acknowledgement that this would be addressed at some point, happy holidays

umerjaved178 commented 2 years ago

following

nouman91 commented 2 years ago

Would love to hear more on it.

hamsajama001 commented 2 years ago

Same here. Would love to know more about the roadmap for RecoilJS.

drarmstr commented 2 years ago

Thank you, everyone, for your support of Recoil. We at Meta are as excited about what's next for the project as all of you are! We are always amazed by the vibrant and ever-growing open source community. We want to continue sharing our work on Recoil to help make state management for React as straightforward as possible.

Our immediate plans are to release Recoil 0.6 to keep the library compatible with the latest direction of React 18. We are also working on an add-on Recoil library called Recoil Sync that provides helpers for syncing with external state, including built-in support for syncing with the browser URL history.

Recoil remains an experimental project as it evolves to support React and its state management. Although we are using Recoil in production at Meta, we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features like Concurrent Rendering, Server Components, and Streaming SSR.

We are not alone in addressing these concerns since other state management libraries also work towards staying up-to-date with React. And as always, we want to thank you once again for being a part of this community and helping us make Recoil better together.

jonbnewman commented 2 years ago

Although we are using Recoil in production at Meta, we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features like Concurrent Rendering, Server Components, and Streaming SSR.

Wouldn't those be reasons for a new major version number? Not to keep it 'experimental'?

Experimental to me means it might not survive...not that its searching for the best API given a changing dependency. If the API needs changing I would simply expect a new major version. The 'experimental' status makes people think they can't use this library.

@drarmstr

mattijsf commented 2 years ago

Although we are using Recoil in production at Meta, we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features like Concurrent Rendering, Server Components, and Streaming SSR.

Wouldn't those be reasons for a new major version number? Not to keep it 'experimental'?

Experimental to me means it might not survive...not that its searching for the best API given a changing dependency. If the API needs changing I would simply expect a new major version. The 'experimental' status makes people think they can't use this library.

@drarmstr

Exactly. This. The library feels / looks mature but the above statement doesn't provide much hope that it will go out of experimental state any time soon

"we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features".

That's quite a broad requirement.

Cpt-Falcon commented 2 years ago

Although we are using Recoil in production at Meta, we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features like Concurrent Rendering, Server Components, and Streaming SSR.

Wouldn't those be reasons for a new major version number? Not to keep it 'experimental'? Experimental to me means it might not survive...not that its searching for the best API given a changing dependency. If the API needs changing I would simply expect a new major version. The 'experimental' status makes people think they can't use this library. @drarmstr

Exactly. This. The library feels / looks mature but the above statement doesn't provide much hope that it will go out of experimental state any time soon

"we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features".

That's quite a broad requirement.

It is a broad statement. Because upcoming react features will always be changing and evolving, it doesn't seem possible that you'll ever catch up.

mattijsf commented 2 years ago

In hindsight, I suspect the below statement...

"we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features ..."

... refers to just these React 18 scoped features. So as long React 18 has not been released & tested this library won't go out of experimental state which I can understand. I was too fast with my previous comment.

jessrosenfield commented 2 years ago

💯 this!! I would love to be able to, external facebook, see the RFCs for Recoil Sync and other related resources to get a better sense of what's on the recoil roadmap. The existing docs and the flexible conventions in place to allow for future functionality are very helpful, but I've noticed when poking around some of the work in progress a lot of it is walled behind fb phabricator (eg: I can't tell from just the source and PRs what is coming up w/ recoil-sync)

jessrosenfield commented 2 years ago

Our immediate plans are to release Recoil 0.6 to keep the library compatible with the latest direction of React 18. We are also working on an add-on Recoil library called Recoil Sync that provides helpers for syncing with external state, including built-in support for syncing with the browser URL history.

@drarmstr just seeing this comment! It's very helpful for me to get a rough sense of features on the horizon so thanks for sharing. Is there anywhere I can stay plugged in so I know what efforts are best saved for ~3-8 months down the road since I'm working on a very gradual move to recoil?

drarmstr commented 2 years ago

@jessrosenfield - Preview documentation for Recoil Sync and Refine has now been published.

calumjames commented 2 years ago

Although we are using Recoil in production at Meta, we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features like Concurrent Rendering, Server Components, and Streaming SSR.

Wouldn't those be reasons for a new major version number? Not to keep it 'experimental'?

Experimental to me means it might not survive...not that its searching for the best API given a changing dependency. If the API needs changing I would simply expect a new major version. The 'experimental' status makes people think they can't use this library.

@drarmstr

Agreed. Surely the explanation given would mean Recoil will always have to remain experimental—because React is in active development and something in React may change anytime.

We need to be able to give those making decisions the confidence that it's okay for us to use Recoil, especially when developing for certain companies or industries, and the 'experimental' label prevents us from doing that.

TreatDAO commented 2 years ago

Any update on this?

mickremedi commented 2 years ago

^^ Bumping this. While my team would love to use recoil as it solves a lot of our problems, there's no way we can make a case for using it in the company as long as it stays experimental. So while we would love to be able to contribute, we most likely won't be able to since we can't use it. 🥲

nivethan-me commented 2 years ago

Thank you, everyone, for your support of Recoil. We at Meta are as excited about what's next for the project as all of you are! We are always amazed by the vibrant and ever-growing open source community. We want to continue sharing our work on Recoil to help make state management for React as straightforward as possible.

Our immediate plans are to release Recoil 0.6 to keep the library compatible with the latest direction of React 18. We are also working on an add-on Recoil library called Recoil Sync that provides helpers for syncing with external state, including built-in support for syncing with the browser URL history.

Recoil remains an experimental project as it evolves to support React and its state management. Although we are using Recoil in production at Meta, we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features like Concurrent Rendering, Server Components, and Streaming SSR.

We are not alone in addressing these concerns since other state management libraries also work towards staying up-to-date with React. And as always, we want to thank you once again for being a part of this community and helping us make Recoil better together.

first of all, Thank you for all the good work on recoil. And i think this project is in experimental phase more than it needs to be! can we get any official update on this please.

pc-erin commented 2 years ago

@mickremedi You could try out jotai. It's very similar to recoil, but I found it both simpler and more flexible.

atif7865 commented 2 years ago

I wonder if the macroeconomic effects are the cause here. The fact that we get one response in 10 months and that the authors aren’t concerned about community not using it is more than a bit concerning

cristianmaridev commented 1 year ago

buenas sinceramente recoil es lo mas, pero identico a los demas colegas no se puede justificar el uso en empresa mientras mantenga el termino de experimental, si se entiende que el problema es el server side, ok, pero saquen el experimental para el estandar y mantengan a wip el resto, no hay problemas mas que la palabra 'experimental'

Cpt-Falcon commented 1 year ago

Thank you, everyone, for your support of Recoil. We at Meta are as excited about what's next for the project as all of you are! We are always amazed by the vibrant and ever-growing open source community. We want to continue sharing our work on Recoil to help make state management for React as straightforward as possible.

Our immediate plans are to release Recoil 0.6 to keep the library compatible with the latest direction of React 18. We are also working on an add-on Recoil library called Recoil Sync that provides helpers for syncing with external state, including built-in support for syncing with the browser URL history.

Recoil remains an experimental project as it evolves to support React and its state management. Although we are using Recoil in production at Meta, we keep the project in an experimental status today until we are confident in a solution compatible with all upcoming React features like Concurrent Rendering, Server Components, and Streaming SSR.

We are not alone in addressing these concerns since other state management libraries also work towards staying up-to-date with React. And as always, we want to thank you once again for being a part of this community and helping us make Recoil better together.

@drarmstr Hi, any updates on a product roadmap or when you'll be able to move it out of experimental?

JordanTreDaniel commented 1 year ago

Wow this is ridiculous. All of these issues are just people asking questions with no reply from anyone at Meta. It's disrespectful after a certain point. (That point is probably after two years of unanswered questions.) And no, the already year-old response from @drarmstr doesn't count, because it was too vague and sweeping to be helpful.

Here is to moving all support and love to jotai since I haven't even looked but can almost guarantee they will take better care of a community.

rgcl commented 1 year ago

Still using React? Why if Svelte exists?

Cpt-Falcon commented 1 year ago

@rgcl Why would I use Svelte? React is incredibly mature at this point. There are a ton of open source libraries and packages that are very refined and very high quality. There's no way Svelte is competitive in that regard.

React is used in a huge number of enterprise environments, its very popular, and its backed by a large company. It's very feature-rich. Svelte is obscure by comparison, and I'm not sure what I'm supposed to gain by switching. Also, hiring react developers is easy because of how popular react is. Good look finding a large number of skilled Svelte developers.

mattijsf commented 1 year ago

We have switched to zustand because of the lack of updates and trust of this repo going anywhere...

nivethan-me commented 1 year ago

We have switched to zustand because of the lack of updates and trust of this repo going anywhere...

looks like zustand or jotai is the way to go

Cpt-Falcon commented 1 year ago

Its certainly disappointing to have a lack of responses, I wonder if the developers for this repo were let go with the recent meta layoffs. Besides the updates, are there any features or benefits of zustand or jotai over redux? I've found redux to meet all of the functionality needs, so switching just because of the lack of updates isn't a good enough justification fo rme to spend time switching and re testing everything.

pc-erin commented 1 year ago

Besides the updates, are there any features or benefits of zustand or jotai over redux?

If you're using redux then zustand will be more familiar than jotai. It's mainly just simpler.

Since Redux was made, we've learned a lot about how reducer-based state stores get used in practice, so a lot of features that redux requires helper libraries for are baked directly into zustand. Actions require less boilerplate, async actions and selectors are built-in features, etc. It's also a lot smaller.

webbertakken commented 1 year ago

Hey peeps,

Maintaining projects can be unthankful work, however the license is MIT so anyone is free to fork and continue development and maintenance. And anyone is free to use alternatives or even use svelte if that's what you want.

I do get that you want to challenge the status quo. But perhaps you could just use the alternatives without notifying everyone who's watching this thread.

Cpt-Falcon commented 1 year ago

@webbertakken Well thank you for the work that's been done so far. Despite the other comments on here I do think recoil is excellent, and I don't believe its warranted to switch to Jotai or something else.

However, by saying that anyone is free to fork and continue development/maintenance, are you implying this repo is dead? The suggestion I'm interpreting from your comment is: "We're not going to be doing any more contributions or community outreach, so you can take over that job for us". Please correct me if i'm mistaken.

The reality is that nobody is going to fork, develop, and maintain this repo because it was started by meta developers. If those developers are gone, its way too much of a commitment to take over. One of the big appeals of this repo is that it's backed by meta. If you're saying this is no longer backed by meta then that's going to change the calculus for many people.

jonbnewman commented 1 year ago

@webbertakken

I do get that you want to challenge the status quo. But perhaps you could just use the alternatives without notifying everyone who's watching this thread.

I think letting maintainers know they are losing people and why is important.

I (and all projects I lead that were or were going to use recoil) have also left and now use jotai - as that projects maintainers seem active and respond to comments as basic as 'what is happening with this thing' and they don't simply ignore people for years on end asking the most basic of questions.

Yes its 'unthankful' on some level...but straight up ignoring very legitimate and very basic questions about a projects status is untenable. And yes, letting others know about it is important.

I really cannot recommend recoil and recommend everyone find an alternative

Cpt-Falcon commented 1 year ago

@jonbnewman you make excellent points. I also don't think it's the answer to tell the people suggesting alternatives/complaining to go "fork" themselves, no pun intended, and to take on ownership of an entire repo.

FokkeZB commented 1 year ago

@victorelu made me aware that the core contributor @drarmstr has been laid off in January, as he self shared on LinkedIn: https://www.linkedin.com/posts/douglas-armstrong-384a342_opentowork-meta-layoffs-activity-6996668167511052288-UoE4

I think that explains the radio silence, although the code frequency never has been high and mostly limited to type fixes since October: https://github.com/facebookexperimental/Recoil/graphs/code-frequency

I'm afraid we'll have to look into https://jotai.org/ as well.

xotahal commented 1 year ago

@FokkeZB Or we can fork it and continue with Recoil ;) But agree. It seems the recoil is quiet now. I contacted @drarmstr before but no answer so far.

We used recoil a lot and we like it. I assume that you guys have it the same. Don't you want to jump on a call maybe? Chat about the experience with it, possible alternatives and what to do next. What do you think? DM me on Twitter if you are interested.

Twitter: https://twitter.com/xotahal LinkedIn: https://www.linkedin.com/in/xotahal/

parssak commented 1 year ago

Word of warning: Would advise against Recoil

As much as I love the package, we've noticed some memory leaks related to Recoil in prod, and are in the process of switching to Jotai instead

FokkeZB commented 1 year ago

@xotahal forking isn't that straightforward as the repo is a mirror-ed slice of Meta's internal monorepo.

I've been in touch with @drarmstr and hopeful that Meta might move the source of truth to this GitHub repo, allowing the community to be more involved in maintaining it. 🤞

Cpt-Falcon commented 1 year ago

Recoil has been excellent and I love that it introduced me to this new state management architecture, but unfortunately, it appears this repository is dead. Farewell, all, like many here I'm heading to Jotai unless this repo is restored and maintained.

Thank you to all the work the existing devs have done here and best to you all.

zbyte64 commented 1 year ago

2 years ago my work went forth with a "production" app using recoil. I was very happy to be able to mix async & sync dependencies and write it all as sync code. Today our team is pretty much in agreement that we need to switch away. The lack of developer tooling to make state visible is the most egregious issue (Recoilize is abdandonware as well). We went to make the switch to jotai, only to discover that in jotai v2 they will no longer unwrap promises for you, dramatically changing how we would write our code vs jotai v1 (which would have been a near drop-in replacement for recoil).

chriszrc commented 1 year ago

@zbyte64 I'm evaluating Jotai as well, but at least for dev tools, this project does work, and it's just a connector to the regular redux tools, so it actually does work:

https://github.com/creotip/recoil-gear

salvoravida commented 1 year ago

@zbyte64 you can look for a devtool here https://github.com/salvoravida/recoil-toolkit https://chrome.google.com/webstore/detail/recoil-toolkit-devtools/mkeicpnjoopkgdhfobdpcepncbnfnnji

image

afroguy16 commented 1 year ago

Switched over one of my projects to recoil and its so much better than redux its absurd. I will never use redux again if I don't have to. But I was curious about what features are planned for future development?

I don't see a roadmap or anything so I was wondering if someone could post a roadmap if it exists.

I like to know about future features/enhancements so that I can design the code with those new features in mind. I would also love to know what the far future goals are for say version 1.0, or even 2.0?

Rule of thumb. Don't design your code based on a specific tech.

Cpt-Falcon commented 1 year ago

@afroguy16 That's not always practical or sensible. It depends on the context and the situation. The type of tech you select can have a profound effect on design patterns and architecture, and therefore code. You can extract something like business logic into generic code that isn't dependent on particular tech or external packages, but the code for react + recoil is going to look very different compared to an angular or blazor implementation.

Its also often totally unavoidable, it just depends on the situation. Writing unnecessarily generalized code can also be a complete waste of time and a hindrance depending on the end objectives of the development project.

Overall I would say this is not a good rule of thumb at all. How often is your project switching tech stacks? Its probably a very rare occurrence that's only done because of a critical limitation, bug, or problem. If you have to switch tech stacks frequently such that you need generic non dependent code, that would suggest to me something went very wrong in the planning, design, and selection phase of the project. You want to design your code based on the particular requirements of the project and what you're trying to achieve.

dkfox commented 9 months ago

Any updates?

JuanFLZ commented 9 months ago

Any updates?

Jump to jotai ;)

kibertoad commented 9 months ago

@dkfox jotai recommendation seconded. It's the closest thing to a production-ready recoil with proper support.

clockelliptic commented 8 months ago

Hi everyone 👋,

TLDR; Check out clockelliptic/jotai-recoil-adapter. It's rough around the edges and could use community support, but has proven to be very useful so far. Please feel invited to contribute, fork, and copy as needed.

see it on NPM: https://www.npmjs.com/package/jotai-recoil-adapter

see also: #2288

🔍 What is jotai-recoil-adapter? The jotai-recoil-adapter is intended to facilitate a less-painful transition from Recoil to Jotai. It provides an API compatible with Recoil while leveraging the simplicity and efficiency of Jotai under the hood. Our goal is to make it easier for teams reliant on Recoil to migrate to Jotai without having to overhaul their existing codebases.

🌟 Features Include:

🤝 We Need Your Input! This project is in its early stages, and community input is invaluable.

Current top priorities include:

🔗 Get Involved: