Redwood v6.0.0 is now available

:evergreen_tree: RedwoodJS Conference, September 26-29 in Oregon, USA
The first RedwoodJS in-person conference is only two months away! Details and discussions are happening here on the forums.

Registration here: www.redwoodjsconf.com.

Today we’re announcing Redwood v6.0.0! :rocket: The highlight of this major is a new bundler, Vite, Prisma v5, Storybook v7, a refactor to Redwood’s Router to use Suspense, and a simpler logging experience.

v6.0.0 Highlights

:zap: Vite
:small_red_triangle: Prisma v5
:closed_book: Storybook v7
:atom_symbol: Redwood’s Suspense Router
:wood: Simpler Logging

Vite

Vite is a next-generation build tool that greatly improves development. One of the first things you’ll notice is how fast the dev server starts with Vite—it starts over two-times faster than Webpack! :zap: Check out the difference in core team member @KrisCoulson’s project:

https://github.com/jtoar/test-project-docker/assets/32992335/1558d8ca-c75c-49c3-8b0a-c98badb67228

Prisma v5

Prisma v5 is significantly faster thanks to a new-and-more-efficient JSON-based wire protocol that Prisma Client uses under the hood:

Storybook v7

Storybook v7 is Storybook’s first major release in over two years and is jam-packed with features and fixes:

Redwood’s Suspense Router

In this major we refactored Redwood’s router to use Suspense under the hood. This paves the way for streaming in a v6 minor or the next major, and React Server Components (RSC) in the next epoch. (But you can try out RSC in Redwood right now! React Server Components (RSC))

Simpler Logging

Out of the box, Redwood’s logs can be overly verbose. For example, here’s what you see just when you run yarn rw dev on a brand new project (scroll to really get the point across):

web |   ➜  Local:   http://localhost:8910/
gen | Generating TypeScript definitions and GraphQL schemas...
gen | 14 files generated
api | Building... Took 365 ms
api | Debugger listening on ws://127.0.0.1:18911/0b06ebfc-b1b7-4d6f-b841-52307305fee2
api | For help, see: https://nodejs.org/en/docs/inspector
api | Starting API Server...
api | Loading server config from ~/redwood-app/api/server.config.js 
api | 
api | 18:22:12 🌲 Configuring api side 
api | 🗒 Custom
api | {
api |   "options": {
api |     "side": "api",
api |     "_": [
api |       "api"
api |     ],
api |     "port": 8911,
api |     "p": 8911,
api |     "apiRootPath": "/",
api |     "rootPath": "/",
api |     "root-path": "/",
api |     "api-root-path": "/",
api |     "$0": "node_modules/@redwoodjs/api-server/dist/index.js"
api |   }
api | } 
api | 🗒 Custom
api | {
api |   "time": 1687915332538,
api |   "pid": 77540,
api |   "hostname": "...",
api |   "msg": "Configuring api side"
api | }
api | Importing Server Functions... 
api | /graphql 238 ms
api | ...Done importing in 240 ms
api | Took 452 ms
api | API listening on http://localhost:8911/
api | GraphQL endpoint at /graphql
api | 18:22:12 🐛 Fastify server configuration 
api | 🗒 Custom
api | {
api |   "requestTimeout": 15000,
api |   "connectionTimeout": 0,
api |   "keepAliveTimeout": 72000,
api |   "maxRequestsPerSocket": 0,
api |   "requestIdHeader": "request-id",
api |   "requestIdLogLabel": "reqId",
api |   "disableRequestLogging": false,
api |   "bodyLimit": 1048576,
api |   "caseSensitive": true,
api |   "allowUnsafeRegex": false,
api |   "ignoreTrailingSlash": false,
api |   "ignoreDuplicateSlashes": false,
api |   "jsonShorthand": true,
api |   "maxParamLength": 100,
api |   "onProtoPoisoning": "error",
api |   "onConstructorPoisoning": "error",
api |   "pluginTimeout": 10000,
api |   "http2SessionTimeout": 72000,
api |   "exposeHeadRoutes": true
api | } 
api | 🗒 Custom
api | {
api |   "time": 1687915332966,
api |   "pid": 77540,
api |   "hostname": "...",
api |   "msg": "Fastify server configuration"
api | }
api | 18:22:12 🐛 Registered plugins 
api | bound root 437 ms
api | ├── bound _after 3 ms
api | ├── @fastify/url-data 0 ms
api | ├── fastify-raw-body 1 ms
api | ├── bound _after 0 ms
api | ├── bound _after 0 ms
api | ├── bound _after 1 ms
api | ├── bound _after 0 ms
api | └── bound _after 0 ms
api |  
api | 🗒 Custom
api | {
api |   "time": 1687915332967,
api |   "pid": 77540,
api |   "hostname": "...",
api |   "msg": "Registered plugins \nbound root 437 ms\n├── bound _after 3 ms\n├── @fastify/url-data 0 ms\n├── fastify-raw-body 1 ms\n├── bound _after 0 ms\n├── bound _after 0 ms\n├── bound _after 1 ms\n├── bound _after 0 ms\n└── bound _after 0 ms\n"
api | }
api | 18:22:12 🌲 Server listening at http://[::]:8911 
api | 🗒 Custom
api | {
api |   "time": 1687915332969,
api |   "pid": 77540,
api |   "hostname": "...",
api |   "msg": "Server listening at http://[::]:8911"
api | }

In this major, with the help of contributors from the community, we’ve simplified the default logging experience:

web |   ➜  Local:   http://localhost:8910/
gen | Generating TypeScript definitions and GraphQL schemas...
gen | 14 files generated
api | Building... Took 178 ms
api | Debugger listening on ws://127.0.0.1:18911/e4b7da79-4ff9-4c01-9a6b-65439f935ee8
api | For help, see: https://nodejs.org/en/docs/inspector
api | Starting API Server...
api | Loading server config from /Users/dom/projects/redwood/redwood-app/api/server.config.js 
api | 
api | Importing Server Functions... 
api | /graphql 165 ms
api | ...Done importing in 166 ms
api | Took 186 ms
api | API listening on http://:::8911/
api | GraphQL endpoint at /graphql
api | 18:26:36 🌲 Server listening at http://[::]:8911

Upgrade Guide

Changelog

4 Likes