Caveats in using RedwoodJS for production now

I’m starting an internal web app for the company I’m working with and it’s just so hard to resist :no_good_man: to use RedwoodJS even though I came across the following warning :construction: in the GitHub repo readme doc.

WARNING: RedwoodJS software has not reached a stable version 1.0 and should not be considered suitable for production use. In the “make it work; make it right; make it fast” paradigm, Redwood is in the later stages of the “make it work” phase. That said, your input can have a huge impact during this period, and we welcome your feedback and ideas! Check out the Redwood Community Forum to join in.

In watching the previous RedwoodJS Meetup recordings, I came across that @mojombo did mentioned that he hope that the targeted release for the stable version 1.0 is before next year.

My question is if I am to start developing my web app today using RedwoodJS, what are the caveats :hole: should I be watching out for and be better prepare for the changes? :eyes:

This is a good question for people who are running Redwood Apps in production. Off the top of my head: @danny @dnprock @rob @betocmn

The major components are all stable: React, Apollo GraphQL, and Prisma. However, many integration changes are happening all the time. Prisma Migration is still in beta, and there’s definitely a lot coming soon regarding where you can deploy Redwood (e.g., AWS and Google Cloud) and how you can deploy Redwood (e.g., Docker Container). So it’s a matter of keeping up with the changes vs. preparing for the changes.

Note: we really do our best to limit breaking changes even at this early stage — when they do happen, we document them clearly and offer as much help with upgrading as we can.

I think the most feedback I hear is infrastructure related, to be honest. Serverless architecture hasn’t fully come into its own. Depending on your app’s requirements, you might not have everything you need available serverless’ly. A good example of this is the need for job scheduling, which led to the creation of Repeater.dev.

Another place to get a feel for what’s upcoming is the Roadmap. Each category has it’s own GitHub project board with a list of incoming Issues and features, etc.

I hope this helps!

5 Likes

100% agreed. RW has been growing more and more through each release, and lately the only limitations I’m hitting tend to be infrastructure related.

So far I’ve not hit any intractable issues with migrations, and places where I felt like it wasn’t “redwood-y” i.e. too much work, tends to be stuff someone else is already solving. e.g. Pagination

@andrewlamyw, I can see from some of your other posts that you’re enjoying the DX from RW, and that IMHO, is one of RW’s best features.

In terms of my experience - we started using it at 0.6 and currently on 0.17 - I can confidently say that there was only 1 release where I had to spend something like an hour to fix something that broke. Every other release has been smooth sailing, as long as you follow the release notes, and you just tend to get more features without losing any of the goodness.

Here’s the other tip: if RW is missing something, you’re more than welcome to create PR for it! That’s exactly how I got started. I think RW strikes a good balance between being opinionated and giving you freedom as the dev - “prescriptive, not restrictive” I like to think.

Hope this helps with your decision!

6 Likes

For me the biggest issue with Redwood is performance. More specifically: unneeded re-renders and the lack of SSG+(I)SSR

Other than that it’s all :rose: :rainbow:

4 Likes

Pretty much the same here. I started at 0.6, but now on 0.19.1. I had migrations failing in the first two upgrades, but then it’s been smooth for months now. In general, I wouldn’t worry about breaking changes, but if you want to think worst-case scenario, imagine you would spend an extra couple of hours every month with upgrades.

Apart from the serverless limitations, performance could be something that would not be ready for certain apps, but since it’s an internal system, it might be enough for you.

2 Likes

The unneeded re-renders is it caused by code-split on each Page?

Mostly because the way RW works with a flat/non-nested router and the Layout components

Often when you update state that is shared (through props) you end up re-rendering the whole layout, which is often the entire page.

3 Likes

Another caveat for me is TypeScript. You should write your code in TypeScript. RedwoodJS core is moving there. But there are some catches currently. For example, RedwoodJS doesn’t load Cell in TypeScript. So I have a mix of TypeScript and JavaScript in the codebase. I try to keep JavaScript minimal by keeping Cell small.

2 Likes

@dnprock check out what’s coming in v0.20.0 next week:

And here’s the tracking Issue for Web TS:

Thanks for being patient with this process. Getting closer!

3 Likes