## v3.1.0, 2024-11-20

### Highlights

- Upgrade to Node v22
- Upgrade Mongo Driver to v6
- Upgrade Express to v5
- HMR performance improvements
- Bring the `roles` package into the core
- Solve remaining issues with Top Level Await and Reify
- Refactor part of the real-time code in the `mongo` package into TypeScript
- Deprecate `underscore` and eliminate it from packages
- Fix Cordova dependency issues
- Simplify Meteor.EnvironmentVariable and make sure it works in all cases
- Stop using Rosetta for development MongoDB on Apple Silicon
- Test improvements
- Bump `http` package to 3.0.0

#### Breaking Changes

- Express is now at v5 and some it's APIs have changed.

####  Internal API changes

N/A

#### Migration Steps

Please run the following command to update your project:

```bash

meteor update --release 3.1

```

Make sure to migrate userland code to use the new Express APIs:

https://expressjs.com/en/guide/migrating-5.html

The MongoDB Node.js driver implemented a significant breaking change regarding operation handling. Applications leveraging `rawCollection()` or `rawDatabase()` methods must now utilize Promise-based syntax exclusively, as the callback-pattern API has been deprecated and removed. This modification affects all direct MongoDB operations previously using callback functions.


#### Bumped Meteor Packages

- accounts-password@3.0.3
- babel-compiler@7.11.2
- boilerplate-generator-tests@1.5.3
- ddp-client@3.0.3
- ddp-server@3.0.3
- http@3.0.0
- ecmascript@0.16.10
- email@3.1.1
- meteor-tool@3.1.0
- meteor@2.0.2
- minifier-js@3.0.1
- minimongo@2.0.2
- modules@0.20.3
- mongo@2.0.3
- coffeescript-compiler@2.4.2
- coffeescript@2.7.2
- mongo-decimal@0.2.0
- npm-mongo@6.10.0
- shell-server@0.6.1
- test-helpers@2.0.2
- test-in-console@2.0.1
- tinytest@1.3.1
- typescript@5.6.3
- url@1.3.5
- webapp@2.0.4


#### Bumped NPM Packages

- meteor-babel@7.20.1
- meteor-installer@3.1.0
- meteor-node-stubs@1.2.12


#### Special thanks to

✨✨✨

- [@denihs](https://github.com/denihs)
- [@nachocodoner](https://github.com/nachocodoner)
- [@leonardoventurini](https://github.com/leonardoventurini)
- [@StorytellerCZ](https://github.com/StorytellerCZ)
- [@zodern](https://github.com/zodern)
- [@harry97](https://github.com/harry97)
- [@permb](https://github.com/permb)
- [@9Morello](https://github.com/9Morello)
- [@wreiske](https://github.com/wreiske)
- [@MarcoTribuz](https://github.com/MarcoTribuz)
- [@MeteorCoder](https://forums.meteor.com/u/meteorcoder/summary)

✨✨✨
