|
| 1 | +--- |
| 2 | +date: "2021-07-20" |
| 3 | +version: "3.10.0" |
| 4 | +title: "v3.10 Release Notes" |
| 5 | +--- |
| 6 | + |
| 7 | +Welcome to `[email protected]` release (July 2021 #2) |
| 8 | + |
| 9 | +Key highlights of this release: |
| 10 | + |
| 11 | +- [Experimental: Parallel Query Running](#experimental-parallel-query-running) - Improves time it takes to run queries during gatsby build |
| 12 | +- [Experimental: webpack persistent caching for `gatsby develop`](#experimental-webpack-persistent-caching-for-gatsby-develop) - significantly speed up start of webpack server |
| 13 | + |
| 14 | +Also check out [notable bugfixes](#notable-bugfixes--improvements). |
| 15 | + |
| 16 | +**Bleeding Edge:** Want to try new features as soon as possible? Install `gatsby@next` and let us know |
| 17 | +if you have any [issues](https://github.com/gatsbyjs/gatsby/issues). |
| 18 | + |
| 19 | +[Previous release notes](/docs/reference/release-notes/v3.9) |
| 20 | + |
| 21 | +[Full changelog ](https://github.com/gatsbyjs/gatsby/compare/[email protected]@3.10.0) |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## Experimental: Parallel Query Running |
| 26 | + |
| 27 | +Gatsby's build process is composed of multiple steps (see [our documentation](/docs/conceptual/overview-of-the-gatsby-build-process/) for more details) and one step that will increase in time with more and more pages/nodes is query running. You're seeing this step as `run static queries` and `run page queries` in your build log. |
| 28 | + |
| 29 | +This step currently only runs in a singular process and the goal of Parallel Query Running is to spread out the work to multiple processes to better utilize available cores & memory. We're using [`gatsby-worker`](https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-worker) (highly inspired by [`jest-worker`](https://www.npmjs.com/package/jest-worker)) and [`lmdb-store`](https://www.npmjs.com/package/lmdb-store) to accomplish this. In [Gatsby v3.7](/docs/reference/release-notes/v3.7/#experimental-node-persistence-in-lmdb) we've added support for LMDB in Gatsby and are now leveraging this new data storage option to enable communication between the main process and the workers. |
| 30 | + |
| 31 | +Depending on the type of queries you use you will see dramatic improvements in performance. You can try out different types of queries (and expected results) with the [query-filters-sort benchmark](https://github.com/gatsbyjs/gatsby/tree/master/benchmarks/query-filters-sort). Toggle the feature flag for a before/after comparison. |
| 32 | + |
| 33 | +Here are two examples: |
| 34 | + |
| 35 | +- Fast `eq-uniq` filter with `GATSBY_CPU_COUNT=5 NUM_NODES=100000 NUM_PAGES=10000 FILTER=eq-uniq TEXT=1`. |
| 36 | + - **Before:** `run page queries - 3.787s - 10001/10001 2641.07/s` |
| 37 | + - **After:** `run queries in workers - 3.445s - 10001/10001 2903.34/s` |
| 38 | + - For the already fast `eq` filters you will see smaller improvements compared to the slower filters like... |
| 39 | +- Slow `gt` filter with `GATSBY_CPU_COUNT=5 NUM_NODES=10000 NUM_PAGES=10000 FILTER=gt TEXT=1`: |
| 40 | + - **Before:** `run page queries - 41.832s - 10001/10001 239.07/s` |
| 41 | + - **After:** `run queries in workers - 15.072s - 10001/10001 663.57/s` |
| 42 | + - Huge improvements for more complex queries or filters that are not "Fast Filters" |
| 43 | + |
| 44 | +To try it out in your own site, please make sure that you're using Node v14.10 or later. Install `lmdb-store` as a dependency: |
| 45 | + |
| 46 | +```shell |
| 47 | +npm install lmdb-store |
| 48 | +``` |
| 49 | + |
| 50 | +Then enable the config flag in your `gatsby-config.js`: |
| 51 | + |
| 52 | +```js:title=gatsby-config.js |
| 53 | +module.exports = { |
| 54 | + flags: { |
| 55 | + PARALLEL_QUERY_RUNNING: true, |
| 56 | + }, |
| 57 | +} |
| 58 | +``` |
| 59 | + |
| 60 | +Please share your results, findings, and feedback in the [PQR GitHub Discussion](https://gatsby.dev/pqr-feedback). You'll also be able to read about known/common pitfalls there and possible solutions. |
| 61 | + |
| 62 | +## Experimental: webpack persistent caching for `gatsby develop` |
| 63 | + |
| 64 | +After rolling out webpack 5 persistent caching for production builds in [Gatsby v3.8](/docs/reference/release-notes/v3.8/#webpack-caching) we're now beginning the gradual rollout of it for `gatsby develop`. It greatly improves the startup time of the development server. |
| 65 | + |
| 66 | +To use it, add a flag to your `gatsby-config.js`: |
| 67 | + |
| 68 | +```js:title=gatsby-config.js |
| 69 | +module.exports = { |
| 70 | + flags: { |
| 71 | + DEV_WEBPACK_CACHE: true, |
| 72 | + }, |
| 73 | +} |
| 74 | +``` |
| 75 | + |
| 76 | +If you're already using the `FAST_DEV` flag you'll be using it automatically once you update to Gatsby v3.10. Please share your feedback in the [GitHub Discussion](https://gatsby.dev/cache-clearing-feedback). |
| 77 | + |
| 78 | +## Notable bugfixes & improvements |
| 79 | + |
| 80 | +- `gatsby`: Update `postcss` to 8.3.5 to remove deprecation warning on Node v16. |
| 81 | +- `gatsby`: Switched `createRoot` to `hydrateRoot`. Please note, this only applies if you use [React 18 in Gatsby](https://github.com/gatsbyjs/gatsby/discussions/31943). |
| 82 | +- `gatsby-source-wordpress`: Check preview URL earlier and give better feedback, via [PR #32251](https://github.com/gatsbyjs/gatsby/pull/32251). |
| 83 | +- `gatsby`: Pass `search` and `hash` to `window.location` to final URL of redirect and after the service worker updated, via [PR #32334](https://github.com/gatsbyjs/gatsby/pull/32334) and [PR #32323](https://github.com/gatsbyjs/gatsby/pull/32323). |
| 84 | +- `gatsby`: Avoid the `UNHANDLED REJECTION write EPIPE` error when using `Ctrl + C`, via [PR #32311](https://github.com/gatsbyjs/gatsby/pull/32311) and [PR #32356](https://github.com/gatsbyjs/gatsby/pull/32356). |
| 85 | +- `gatsby`: When a `gatsby build` fails on e.g. missing data it now prints the `page-data.json` file for this page to give more context on what's missing, via [PR #32301](https://github.com/gatsbyjs/gatsby/pull/32301). |
| 86 | +- `gatsby-source-contentful`: Support image corner radius from Image API, via [PR #32333](https://github.com/gatsbyjs/gatsby/pull/32333). |
| 87 | +- `gatsby-source-contentful`: Support `metadata.tags` property, via [PR #31746](https://github.com/gatsbyjs/gatsby/pull/31746). |
| 88 | + |
| 89 | +## Contributors |
| 90 | + |
| 91 | +A big **Thank You ** to [our community who contributed ](https://github.com/gatsbyjs/gatsby/compare/[email protected]@3.10.0) to this release 💜 |
| 92 | + |
| 93 | +- [RapTho](https://github.com/RapTho): Wrong post ids in example author name filter [PR #32191](https://github.com/gatsbyjs/gatsby/pull/32191) |
| 94 | +- [anselm94](https://github.com/anselm94): chore(docs): Update Storybook guide to v6 [PR #31653](https://github.com/gatsbyjs/gatsby/pull/31653) |
| 95 | +- [SarthakC](https://github.com/SarthakC): fix: added missing parentheses in creating a source plugin tutorial [PR #32259](https://github.com/gatsbyjs/gatsby/pull/32259) |
| 96 | +- [emmanuelgautier](https://github.com/emmanuelgautier): fix(gatsby-plugin-gtag): replace google analytics domain with google tag manager [PR #31036](https://github.com/gatsbyjs/gatsby/pull/31036) |
| 97 | +- [nellaparedes](https://github.com/nellaparedes): fix(gatsby): Pass search/hash to location after swUpdated [PR #32323](https://github.com/gatsbyjs/gatsby/pull/32323) |
| 98 | +- [karlhorky](https://github.com/karlhorky): Avoid UNHANDLED REJECTION error on ctrl-C [PR #32311](https://github.com/gatsbyjs/gatsby/pull/32311) |
| 99 | +- [weronikadominiak](https://github.com/weronikadominiak): docs(contributing): update docs with info about translations being on hold (#31883) [PR #32328](https://github.com/gatsbyjs/gatsby/pull/32328) |
| 100 | +- [cabutler10](https://github.com/cabutler10): chore(docs): Fix typo in apollo/client npm package name [PR #32345](https://github.com/gatsbyjs/gatsby/pull/32345) |
| 101 | +- [ezeYaniv](https://github.com/ezeYaniv): chore(docs): Update building-a-theme to latest Theme UI [PR #32357](https://github.com/gatsbyjs/gatsby/pull/32357) |
| 102 | +- [SonnyBrooks](https://github.com/SonnyBrooks): chore(docs): Correct JavaScript spelling [PR #32368](https://github.com/gatsbyjs/gatsby/pull/32368) |
| 103 | +- [axe312ger](https://github.com/axe312ger) |
| 104 | + - feat(contentful): add support image corner radius [PR #32333](https://github.com/gatsbyjs/gatsby/pull/32333) |
| 105 | + - feat(contentful): add support for tags [PR #31746](https://github.com/gatsbyjs/gatsby/pull/31746) |
0 commit comments