Doc to help updating downstream applications. Breaking changes and packages updates are listed here.
Please open an issue or a pull request if you feel this doc is incomplete.
- Check that your version of
boilerplate-generator
is right. If not, overwrite it manually inpackages/_boilerplate/package.js
. This package is a hack to support SSR, so it's ok to manually change the version without actually updating - Check that you don't have hard dependency on core packages, like
[email protected]
. They could conflict with Meteor core package version. - Run
meteor update
. Note: when running the update on the Starter, remember to setupMETEOR_PACKAGES_DIRS=...
correctly, so it points to your localdevel
install of Vulcan.
meteor update
meteor npm i --save string-similarity @apollo/client
- Migrate your code to Apollo client v3: https://www.apollographql.com/docs/react/migrating/apollo-client-3-migration/
- Migrate the names of base form controls in
vulcan:ui-material
if import them into your code. SeeVulcan/packages/vulcan-ui-material/history.md
.
meteor npm i --save node-cache
- Read Vulcan blog article related to 1.16
- Schemas without "_id" or "userId" won't have those fields in the default form fragment anymore (extremely edge case)
- Update Meteor with
meteor update
- /!\ Carefully update NPM packages versions based on the current package.json, otherwise install will fail
single2
hoc and hooks will return the wholeerror
object, not justerror.graphQLErrors[0]
. This will help catching network errors too.- Install
npm i --save body-parser-graphql
- CORS are now disabled as a default in production. Use
apolloServer.corsWhitelist
to whitelist some domains, orapolloServer.corsEnableAll
to allow all connections.
- See migration article from Vulcan Blog
serverTimezoneOffset
object is no longer injected in the head during SSR. Useimport { InjectData} from 'meteor/vulcan:lib; ...; await InjectData.getData("utcOffset");
instead. The value is the reverse fromgetTimezoneOffset
, see Moment docvalidateModifier
takesdata
as the second param (validateModifier(modifier, data, document)
instead ofvalidateModifier(modifier, document)
)
- Update to v4
meteor npm i --save-exact @material-ui/[email protected]
import MuiThemeProvider from @material-ui/core/styles/MuiThemeProvider"
becomesimport { MuiThemeProvider } from "@material-ui/core/styles"
- More broadly follow https://material-ui.com/guides/migration-v3/ to update Material UI to v4
- Follow the composition doc to handle
forwardRef
warnings: https://material-ui.com/guides/composition/#caveat-with-refs
npm install apollo-utilities
(to run tests)- Replace
Users.getViewableFields
byUsers.getReadableProjection
- Update React to a version over 16.8 (and under 17 which will bring breaking changes) to access hooks
- Update React Apollo and Apollo Client to access GraphQL hooks:
npm i --save-exact [email protected]; npm i --save [email protected]
compose
is not exported byreact-apollo
, userecompose
instead.- More broadly see
react-apollo
changelog for breaking changes editMutation
,newMutation
etc. are deprecated, use the newupdateFoo
,createFoo
syntax. An error message is thrown where deprecated mutations are used to help debugging- When using Vulcan data oriented hooks (
useMulti
,useCreate
...), use the newqueryOptions
andmutationOptions
option to pass options to the underlyinguseQuery
anduseMutation
hooks. Example call:useMulti({collection: Foos, queryOptions: { errorPolicy: "all" } })
. - No need to call
registerComponent
anymore to use Vulcan HOC. You can call them directly even if the underlying fragment is not yet registered. - Watched Mutations has been removed because it didn't work anymore, in favour to better Apollo's
update
option for mutations.