faceyspacey / redux-first-router

🎖 seamless redux-first routing -- just dispatch actions
MIT License
1.56k stars 143 forks source link

Rudy (Next Major Release) #218

Closed quicksnap closed 5 years ago

quicksnap commented 6 years ago

I was hoping we could have a tracking issue for Rudy! It would be helpful for me to watch.

I would be happy if simply this issue remained here and was closed when Rudy is ready. We don't have to make a todo list or anything... just something that pings any subscribers when it's closed and Rudy is good to go. =)

Thanks for this library. It's been really great and feels so much simpler than alternatives in my Redux app.

CNDW commented 6 years ago

@ScriptedAlchemy the slack invite link you posted earlier is expired, is there another one I can use?

ScriptedAlchemy commented 6 years ago

@CNDW https://join.slack.com/t/scriptedalchemy/shared_invite/enQtNDM2ODQ2ODg4ODk3LWJjNjI3ZWZhMGFkZTY1Y2E3MTZlMjVmNzAyMzQxY2EzNTk3NDBhMGY2NTg5YThjNDI5NDVkZjNiYWUwYWM5ZjY

ghost commented 6 years ago

What are your thoughts of us patching up the core, as we have planned, adding <Route and <Link and a couple other of the core parts that currently exist in the Rudy branch we are working on.

@ScriptedAlchemy are you able to elaborate on what <Route> is? Is it a way to specify which component to render for a route, more like react-router does? I've tried searching through various branches but I can't figure out what exactly you were referring to.

Thanks!

ScriptedAlchemy commented 5 years ago

Hey everyone.

Heres an update!! Rudy: Im ready to release it. Spoke to James today (faceyspacey) -- getting NPM access sorted out. Once thats done ill be releasing this incremental update

Rudy-Respond: This is the mega update => Complete rewrite. There is one feature outstanding - after that. James has given the green light on releasing it.

Whats left for Rudy-Respond?

I am locked up for a few final weeks. Then after that I plan on working on it. @micmcg - I know you had mentioned adding this feature and (potentially) contributing to it.

If anyone would like to join in on a collective effort at some time in late October - we can finally make this thing a reality!! Ill have the docs ready beforehand. Or at least the notes i take from my time with James. Pretty much i can unblock us ahead of time so that in like a months time - we could (hopefully) put out heads together, and have the last requirement nailed quickly.

I know many of you have been waiting for this big release. Its a huge effort for those involved, Im extremely thankful to some key people in the community who have played an integral role in getting the project this far.

If theres anyone who can contribute to the final feature, please join my slack channel and send me a message. I should be available to work on this personally in about a months time. So if anyone wants to join together in a month- hit me up.

Whats the plan for <Route

Well, going off the original email from James We wanted to cannibalize some of RR's implementation, avoid the performance issues of RR.

We also need a Route component like react router, but where it also has built in code splitting and can show a spinner until a component is available in state: <Route loading={Spinner} component=‘Foo’ type/path=

Since u did code splitting already, the route component ur gonna love making. Look into my urlToAction and actionToUrl utils as well as the path matching functions they call. The matching functions were born out of React Router code. U will use them to make the path matching portion of our Route component. Look into React Router’s codebase and see how they do it. Look at their Route component.

Our Route component can match on types as well as paths like in React Router. Perhaps even match on params, etc, in a second iteration. But otherwise it’s very much intended to feel like React Router’s route component. Ie we are leveraging familiarity. So we are RR’s component but with type matching and code splitting. See how the component is passed as a string. That’s because it gets the component from state rather than has passed in like in RR.

Wheres my time going? (why havent i built it yet)

I left my job and relocated to the west coast. Since I've been here, I have been contracting and implementing RFR or Universal systems for companies. Some tight deadlines kept me busy

Theres a set up updates I have been focusing on for Universal. This was unplanned, but as the popularity grew substantially, i had to do a decent amount of work across the whole system. Universal has been finalized for releases, including a React 16 API. Theres a few things left i must do, then releasing it.

Once released, whats the plan

Ill keep supporting it regularly, first goal is to prepare a branch for React 17 (Suspense) - which should land late this year or early next year.

Ill be building Apollo and GraphQL middleware into Rudy-Respond, enhancing our new internal API to give developers the ability to write low level middleware we can merge back into out new monorepo / just let devs build cool middleware for themselves.

Finally, Im going to start on the Respond Framework. This has been mentioned lightly.

Rudy-Respond, while standalone. Is part of a larger effort @faceyspacey has been working toward for a very long time. This is a effort that I fully believe in and fully intend on seeing through.

Respond Framework is our interpretation of a "Rails" like system - a react MVC. Remixx is us rewriting react-redux to allow things like async redux modules, ways to teleport, freeze, and track redux events, modules, runtime, and stores.

Overall, Respond is our attempt at speeding up some of the mundane tasks we find ourselves in with React. Things like wrapping connect statements and withRouter. We want to leverage What we did on Universal, but build it in (or use Suspense). Building a Respond App should be significantly faster, yet just as flexible as a react app.

Respond has a devtools api. We plan to make a plugin that automates tests. Because we track all events from redux, and because respond uses events to drive the whole architecture. We are able to replay a set of actions collected during the development of the app (like a storybook recording the actions or something). We then can snapshot the action and their result and pretty much run the actions and results instead of trying to spy on and catch things.

Im actually looking at getting a computer science degree, so I'm considering enrolling in a University that has an online offering. During the development of faceyspacey products, Ive realized that once Rudy Respond is out, I dont actually have the low level skillsets I want to develop Remixx.

For now though, <Route is the goal :)

Hopefully this brings a little transparency to whats going on

TLDR;

  • Im looking for help on the final feature of Rudy-Respond <Route component system,
  • RFR's Rudy update is ready to ship and releasing it as soon as i get NPM access.
  • Once Rudy-Respond is out, ill build middleware for apollo
  • Responds Remixx is the next thing ill move on to once Rudy-Respond is out
  • Thanks to those in the community who have helped us this far <3
artisin commented 5 years ago

I'll take a look at implementing the <Route component system this weekend but it sounds pretty straight forward. Nonetheless, big thanks to everyone especially @ScriptedAlchemy for spearheading this release and @faceyspacey general awesomeness.

ScriptedAlchemy commented 5 years ago

@artisin that would be really fantastic - make sure you are on the rudy-respond branch, any progress is a huge help - at the very least we have broken ground - ill be jumping in on this effort in the third week of October

I have a slack channel if you'd like to join - be easier to communicate.

Again, thanks to everyone whose helped get this far. Ill be far more hands-on later this months once all my other releases are done.

FaceySpacey might be quiet around the repos - but I am in regular communication with him. Each step I've actioned is through collective planing and progress updates.

ScriptedAlchemy commented 5 years ago

Hi all, I have started working on a very very basic and hacky solution. Just so theres some progress.

Ive never really dont Routing before - at least not the JSX side of things so im pretty sure theres a better way to doing things.

If anyone wants to Review it or commit a few lines of code <3

Every step is a step closer. Ill dedicating all my resources into developing and releasing Rudy Respond

https://github.com/faceyspacey/redux-first-router/pull/296

ScriptedAlchemy commented 5 years ago

Okay i have NPM access. Preparing to merge. Keep a look out for v2.0.0

Removing all these confusing tags too.

Rudy Respond will be on an alpha tag a little later this week - it might be its own repo under the respond organization. But till then ill provide a alpha tag in the readme

ScriptedAlchemy commented 5 years ago

Working on releasing https://github.com/faceyspacey/redux-first-router/pull/287

Tests passing, working on some final updates.

All tags are gone on npm, please use v2.0.0 after merging <3

Ill be opening a new repo under the respond-framework, itll have Rudy and ill be opening a npm alpha for it to be tested out.

I really appreciate your patience - it brings me great joy to get this in your hands

ScriptedAlchemy commented 5 years ago

2.0 released RFR will become LTS while Rudy receives active feature updates.

More news to come soon

ScriptedAlchemy commented 5 years ago

Hey all

An update:

RFR 2.0 !== Rudy

I have released RFR 2. which is know to some as @rudy on npm. In reality, it is a breaking change update which will be supported long term. The documentation is still a little shotty, so i encourage those in the community to PR and take creative license when it comes to documenting.

There are a few from the community who are upgrading and agreed to assist with docs, if you want to join in, get me on slack and check the documentation channel.

As for RUDY (Rudy Respond) - I moved it to a new repo, im working out some naming conventions with @hedgepigdaniel - after that, ill release an alpha tag on NPM for those interested in beta testing Rudy.

iiroj commented 5 years ago

@ScriptedAlchemy Sorry if this is not the place to ask, but since you updated RFR to 2.0.0, the Typescript definitions should probably be updated as well. It's a pretty breaking change since connectRoutes takes different arguments.

I'm using @types/redux-first-router@1.10.4.

ScriptedAlchemy commented 5 years ago

@iiroj is there any chance youd be willing to help ammend it?

Ive never used TS - but i can remove it for the time being if it causes a problem? Then add it back once i get round to it?

threehams commented 5 years ago

@types/redux-first-router is community maintained, not controlled by anyone here. Source is at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/redux-first-router.

ScriptedAlchemy commented 5 years ago

Thanks for the input! Had no idea 😂😂

Sorry guys I only work with Flow and React

Willing to help where I can though. But TS is something I’ve never needed to write.

iiroj commented 5 years ago

I'll see if I have time and create a PR there. For now I'm not using TypeScript + RFR in production anywhere, so it's not too time-sensitive.

ghost commented 5 years ago

Hey, I've upgraded to the new version (2.0/rudy) but I've hit a snag with removing the memory portion from configuring the store, server side no longer knows which page is being requested so it always sends the homepage. Did I miss something or was this overlooked? Sorry if this isn't the right place to post this. Thanks!

Bobgy commented 5 years ago

@DragonFire353 the new initialEntries option is just like the one you used in createHistory, https://github.com/faceyspacey/redux-first-router/blob/master/docs/migration.md

ngbrown commented 5 years ago

@ScriptedAlchemy is a version 2 of redux-first-router-link also going to be released? Right now I'm still needing to use 0.0.3-rudy for the basename support.

ScriptedAlchemy commented 5 years ago

Lol yeah I need to. I just forgot and honestly there’s not been much hell raised by the community to remind me.

Heads up, I’m on a lot of OSS projects. So if there’s pressing issues - bug the hell out of me so it higher in my mail