3.x Upgrade Guide

Breaking changes

Node support

Dropped support for Node 8, 9, 10. Minimum supported version of Node.js is now 12.

Dereferenced schemas for anyOf/allOf options

MultiSchemaField's options interface is different. Before, an option could include a $ref. Now, any option with a reference will be resolved/dereferenced when given as props for MultiSchemaField.

Help field IDs

IDs for Help fields are now suffixed by __help so that the IDs are unique. Previously, their IDs would be nonexistent or the same as the fields that they were describing.

Bring your own polyfills

core-js@2 has been removed from @rjsf/core. See more about the rationale here.

If you're using a framework like Create React App, Gatsby, Next.js, or transpiling code through something like @babel/preset-env, polyfills are already included there and you won't have to do anything.

If you were directly depending on @rjsf/core's @babel/runtime pulling in core-js@2, just npm install core-js and using a side effectful import at the top of your entry point (import 'core-js') might be enough.

For a slightly more elaborate setup, @babel/preset-env is probably a good second choice.

From @babel/preset-env's docs

We leverage [browserslist, compat-table, and electron-to-chromium] to maintain mappings of which version of our supported target environments gained support of a JavaScript syntax or browser feature, as well as a mapping of those syntaxes and features to Babel transform plugins and core-js polyfills.