Meteor 3.3.1 Now Available: MongoDB Upgraded, Cordova 14, and Build Fixes

Meteor 3.3.1 is now available and recommended!

This release focuses on catching up on pending work around the MongoDB driver upgrade, adding Cordova 14 support to help migrate your apps to Android SDK 35, and refining the new build stack based on your feedback.

:paperclip: Meteor 3.3.1 full changelog

Hands on

To start using Meteor 3.3.1.

Update Your App

# Update your existing Meteor app to version 3.3.1
meteor update --release 3.3.1

Create a New App

# Create a new Meteor app using Meteor 3.3.1
meteor create my-app --release 3.3.1

Highlights

MongoDB Driver Upgrade

Before Meteor 3.3, we had already prepared a Mongo driver upgrade, including fixes we contributed that directly affected Meteor. However, we found a breaking change in some apps and decided to hold the update until we could address the issue.

MongoDB 3.6 is not supported beyond driver version 6.9.0. To avoid problems for projects still using it, we’ve created a new package:

meteor add npm-mongo-legacy

This pins the driver to 6.9.0 for compatibility.

Don’t add this package if you’re using MongoDB 4 or newer. The new driver 6.16.0 will be used automatically.

Keep in mind that older MongoDB versions won’t receive updates. We recommend migrating to MongoDB 5 or later, as the upcoming driver 6.17.0 will drop support for version 4. We’ll continue maintaining npm-mongo-legacy so you can still receive Meteor updates.

Cordova Upgrade

As every year around this time, Android now requires native apps to target a new minimum SDK version, this time API 35 and above. To comply, the Cordova platform bundled with Meteor has been updated to version 14.

See the Cordova 14 Changelog for details and migration steps.

Modern Build Stack

Meteor 3.3.1 release focuses on addressing your feedback on the new modern build stack introduced in Meteor 3.3. Thanks to your reports and reproduction steps, we’ve fixed several edge cases, including support for @swc/helpers to lean the bundles, cache invalidation issues and improvements to the meteor profile command.

To help reduce your bundle size when using SWC, run in your Meteor project:

meteor npm install --save @swc/helpers

This ensures the modern build stack using SWC externalizes common helpers, avoiding duplication and reducing overhead. This is only needed if you’re using the modern build stack.


If you’re interested in adopting the new modern build stack and get 3x faster build times, here’s how to migrate:

Add this to your package.json to enable the modern build stack:

"meteor": {
  "modern": true
}

Check the docs for help with the SWC migration, especially if your project uses multiple Babel plugins:

:paperclip: Modern Transpiler: SWC docs

If you find any issues, please report them to the Meteor issues tracker.

Big up contributors

We want to highlight how important community members contributions have been in delivering these changes.

Thanks to our core contributors: @nachocodoner, @italojs, @StorytellerCZ, @JorgenVatle, @welkinwong and @Saksham-Goel1107

Join us and contribute! Check out Meteor GitHub issues or start with Good first issues.

What’s Next?

7 Likes

As a side note, if you hit problems on 3.3.1 and want to downgrade to 3.3, pin babel-compiler to 7.12.0 in .meteor/versions. The eager 7.12.1 update introduced a mistaken change that requires the 3.3.1 tool.

To ensure more stability, we’re close to releasing patch 3.3.2. It will include improvements to the recent Mongo driver upgrade and support for legacy adopters. We’ll also fix several long-pending issues from the GitHub tracker.

Want a fix in 3.3.2? Open your PRs now so we have time to include them, or ensure issues have reproduction repository to proper planning and fixing.


We’re also working on releasing Meteor 2.16.2 to add support for Cordova 14. For now you can use a Meteor checkout to publish your Meteor 2.x apps to the Android Store and meet the new SDK 35 requirement. Stay tuned for the official 2.16.2 release.

2 Likes

I have this in my package.json:

  "meteor": {
    "modern": {
      "transpiler": {
        "verbose": false
      }
    }
  },

Should I replace that with:

"meteor": {
  "modern": true
}

Why 3.3.2? Not just straight into 3.4?

Meteor 3.3.2 will give us more room for fixes and regressions, as a straight release. Some issues were mistakenly introduced in 3.3.1, like

We have others that will be available in a faster release cycle.

Meteor 3.4 will require several betas; not sure how many. We haven’t had the first beta yet, so the time frame to an official/recommended 3.4 release is uncertain and likely longer. Keeping the 3.3.x series gives us time to introduce fixes and act on possible regressions or critical updates, while we prepare and deliver 3.4 betas in parallel.

Oh I see you’ll continue shipping bug fixes under 3.3.x while mainstream features that require multiple betas under 3.4 both in parallel

Sounds phenomenal, thank you and the core team for the efforts.

4 Likes

Awesome stuff! Praying for Capacitor and Electron integration (or an update to meteor-desktop) as I have apps that I haven’t been able to push updates to in years.

1 Like

Hmm… if I set modern == true, I will lose the transpiler setting. Is there a new config option so as to keep both?

"meteor": {
  "modern": true
}

With this configuration, you enable all improvements from the modern build stack in your Meteor app.

By default all Meteor Bundler optimziations are enabled with modern:true including transpiler, minifier, watcher and so on. You can only disable if you specifically set false to any of these, like “meteor.modern.transpiler=false”.

Would something like this be correct?

"meteor": {
  "modern": true,
  "modern.transpiler.verbose": false,
}

No, I wrote a simplification of the code. You can either do:

"meteor": {
  "modern": true
}

or

"meteor": {
  "modern": {
      "transpiler": {
         "verbose": false
      }
  }
}
1 Like