Weekly Update, April 16, 2025 – Faster Bundle Times with 3.3-beta.0! 🚀

Then how do I know if it uses SWC or Babel?

I added more details in the docs: Adapt your code to benefit from SWC. These are in the staging environment.

To enable it, add this to your package.json:

"meteor": {
  "modernTranspiler": {
	  "verbose": true
  }
}

You will see logs like these:

2 Likes

My app before and after enable modernWebArchsOnly

3 Likes

3.2.0 vs 3.3-beta.0 SWC off vs 3.3-beta.0 SWC on

5 Likes

I think the DO_NOT_TRACK flag also made it to this release. :smiley:
Good job, y’all!

2 Likes

We’ve wrapped up the latest performance improvements mentioned above. 3.3-beta.1 is coming soon, we’re just revisiting the docs, testing, addressing some feedback, and clearing up a few remaining issues.

We’ve received private profiles that helped us understand different setups and gather focused feedback. This has been really helpful to see how updates behave in various environments. Thanks to everyone who tested early. :pray:

Here’s a quick look at how the numbers shift from 3.2 and 3.3-beta.0 in the upcoming 3.3-beta.1.

Results are from fredmaiaarantes/simpletasks app on a specific machine, and using Meteor checkout

An issue in published Meteor version was also fixed, so using it when published should show more noticeable performance gains than checkout results above.

We are likely hitting already performance improvement limits on Meteor 3.3, or at least, we consider it sufficient for now. Meteor 3.4 will push those numbers down further, as more of the app’s code and dependencies processes, like watching, transpiling, compiling, and minifying, will be delegated to a modern bundler. That will allow Meteor concentrate on what matters: Atmosphere packages, dev server app, Mongo dev server, CLI, produce the final bundle and other specifics.

8 Likes

Published a new version of react-meteor-data. This time I bumped to a major 4.0.0-beta.0 since it includes a breaking change: useFind describes no deps by default #431. Changelog

meteor add react-meteor-data@4.0.0-beta.0

4 Likes

Curl installs can be less stable on M1 systems consider reinstalling Meteor via npx for smoother performance

1 Like

In my first job in tech, in 2000, we were running a full hotel on a Compaq computer. I learnt the concept which guided my entire career: “Never touch a running machine”.
My station now runs so well with Meteor and a local Mongo Server, I am reluctant to even change my OS from dark to light theme :).

1 Like

I’m getting this error in my frontend application when I try to start my app after updating to Meteor 3.3 Beta 0. It seems like browser-policy-content package needs an update/fix.

Any idea?

[[[[[ ~/yourdnafamily/frontend ]]]]]          

=> Started proxy.                             
I20250425-10:24:11.489(-4)? error on boot.js /home/ferjep/yourdnafamily/frontend/.meteor/local/build/programs/server/packages/browser-policy-content.js:363
I20250425-10:24:11.494(-4)? await setDefaultPolicy();
I20250425-10:24:11.494(-4)? ^^^^^
I20250425-10:24:11.494(-4)? 
I20250425-10:24:11.494(-4)? SyntaxError: await is only valid in async functions and the top level bodies of modules
I20250425-10:24:11.494(-4)?     at new Script (node:vm:117:7)
I20250425-10:24:11.495(-4)?     at createScript (node:vm:269:10)
I20250425-10:24:11.495(-4)?     at Object.runInThisContext (node:vm:317:10)
I20250425-10:24:11.495(-4)?     at /tools/static-assets/server/boot.js:414:32
I20250425-10:24:11.495(-4)?     at /tools/static-assets/server/boot.js:502:11
I20250425-10:24:11.495(-4)?     at Function.run (/home/ferjep/yourdnafamily/frontend/.meteor/local/build/programs/server/tools/tool-env/profile.ts:651:14)
I20250425-10:24:11.495(-4)?     at startServerProcess (/tools/static-assets/server/boot.js:501:17)
I20250425-10:24:11.495(-4)?     at Object.<anonymous> (/tools/static-assets/server/boot.js:506:2)
I20250425-10:24:11.495(-4)?     at Object.<anonymous> (/tools/static-assets/server/boot.js:510:4)
I20250425-10:24:11.495(-4)?     at Module.<anonymous> (node:internal/modules/cjs/loader:1554:14)
I20250425-10:24:11.495(-4)?     at Module.Mp._compile (/tools/static-assets/server/runtime.js:78:21)
I20250425-10:24:11.495(-4)?     at Object.Module._extensions..js (/tools/static-assets/server/runtime.js:112:21)
I20250425-10:24:11.495(-4)?     at Module.<anonymous> (node:internal/modules/cjs/loader:1289:32)
I20250425-10:24:11.496(-4)?     at Module.Mp.load (/tools/static-assets/server/runtime.js:35:31)
I20250425-10:24:11.496(-4)?     at Function._load (node:internal/modules/cjs/loader:1108:12)
I20250425-10:24:11.496(-4)?     at TracingChannel.traceSync (node:diagnostics_channel:322:14)
I20250425-10:24:11.496(-4)? /home/ferjep/yourdnafamily/frontend/.meteor/local/build/programs/server/packages/browser-policy-content.js:363
I20250425-10:24:11.496(-4)? await setDefaultPolicy();
I20250425-10:24:11.496(-4)? ^^^^^
I20250425-10:24:11.496(-4)? 
I20250425-10:24:11.496(-4)? SyntaxError: await is only valid in async functions and the top level bodies of modules
I20250425-10:24:11.496(-4)?     at new Script (node:vm:117:7)
I20250425-10:24:11.496(-4)?     at createScript (node:vm:269:10)
I20250425-10:24:11.496(-4)?     at Object.runInThisContext (node:vm:317:10)
I20250425-10:24:11.496(-4)?     at /tools/static-assets/server/boot.js:414:32
I20250425-10:24:11.496(-4)?     at /tools/static-assets/server/boot.js:502:11
I20250425-10:24:11.496(-4)?     at Function.run (/home/ferjep/yourdnafamily/frontend/.meteor/local/build/programs/server/tools/tool-env/profile.ts:651:14)
I20250425-10:24:11.497(-4)?     at startServerProcess (/tools/static-assets/server/boot.js:501:17)
I20250425-10:24:11.497(-4)?     at Object.<anonymous> (/tools/static-assets/server/boot.js:506:2)
I20250425-10:24:11.497(-4)?     at Object.<anonymous> (/tools/static-assets/server/boot.js:510:4)
I20250425-10:24:11.497(-4)?     at Module.<anonymous> (node:internal/modules/cjs/loader:1554:14)
I20250425-10:24:11.497(-4)?     at Module.Mp._compile (/tools/static-assets/server/runtime.js:78:21)
I20250425-10:24:11.497(-4)?     at Object.Module._extensions..js (/tools/static-assets/server/runtime.js:112:21)
I20250425-10:24:11.497(-4)?     at Module.<anonymous> (node:internal/modules/cjs/loader:1289:32)
I20250425-10:24:11.497(-4)?     at Module.Mp.load (/tools/static-assets/server/runtime.js:35:31)
I20250425-10:24:11.497(-4)?     at Function._load (node:internal/modules/cjs/loader:1108:12)
I20250425-10:24:11.497(-4)?     at TracingChannel.traceSync (node:diagnostics_channel:322:14)
=> Exited with code: 1
=> Your application is crashing. Waiting for file change.

Meteor configs

  "meteor": {
    "modernWebArchsOnly": true,
    "modernTranspiler": true,
    "mainModule": {
      "client": "client/main.js",
      "server": "server/main.js"
    }
  },
1 Like

Mmm, seems like there’s an issue with top-level await in browser-policy-content package. Oddly, it doesn’t fall back to Babel automatically.

What happens if you try this config?

"meteor": {
    "modernWebArchsOnly": true,
    "modernTranspiler": {
       "excludePackages": ["browser-policy-content"]
    },
    "mainModule": {
      "client": "client/main.js",
      "server": "server/main.js"
    }
  },

This is just a quick test. I’ll check into it, it should support top-level await (TLA) since we keep reify on SWC compilation, and webapp package, which also uses TLA works well with SWC.


Update: I reproduced the issue and confirm the config above solves it.

However, I found the proper fix in SWC’s code transpilation. It will be included in the upcoming 3.3-beta.1. At that time, you could remove the “excludePackages” config.

Thanks for the report. These are essential for stable delivery. :pray:

5 Likes

[UPDATE]
SOLVED: Error when observing the cursor: TypeError: this.documents?.clear is not a function

4 Likes
1 Like

2 Likes

I’ve been using 3.3-beta.0 this weekend. The biggest thing that is annoying me during development is it doesn’t seem to know how to get to the code like the old bundler. Everything is anon both client and serverside.

  "meteor": {
    "modernWebArchsOnly": true,
    "modernTranspiler": true,
    "mainModule": {
      "client": "client/main.js",
      "server": "server/main.js"
    },
    "testModule": "tests/main.js"
  },

This also makes using debugger impossible.

2 Likes

Thanks for testing. This time it’s a common use case we haven’t test so much yet, debugging.

I believe the issue is related to how we link the source map data with the file metadata in SWC. I will review this use case, as it likely misses the proper configuration.


Update: Solved it!

3 Likes

This might not be related to this discussion, but I’m having trouble running 3.3.0-beta.0 at all.

When I upgrade I start to get this error while building. (Even after I go back to non-modern transpiler)

/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/runners/run-app.js:380
        throw e;
        ^

SyntaxError: Unexpected token (144:30)
    at Parser.pp$4.raise (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:3656:15)
    at Parser.pp$9.unexpected (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:776:10)
    at Parser.pp$5.parseExprAtomDefault (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2996:10)
    at Parser.pp$5.parseExprAtom (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2991:19)
    at Parser.pp$5.parseExprSubscripts (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2775:21)
    at Parser.pp$5.parseMaybeUnary (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2733:19)
    at Parser.pp$5.parseExprOps (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2661:21)
    at Parser.pp$5.parseMaybeConditional (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2644:21)
    at Parser.pp$5.parseMaybeAssign (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2611:21)
    at Parser.pp$7.parseMaybeDefault (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2166:23)
    at Parser.pp$5.parsePropertyValue (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:3360:27)
    at Parser.pp$5.parseProperty (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:3310:10)
    at Parser.pp$5.parseObj (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:3265:23)
    at Parser.pp$5.parseExprAtom (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2967:19)
    at Parser.pp$5.parseExprSubscripts (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2775:21)
    at Parser.pp$5.parseMaybeUnary (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2733:19)
    at Parser.pp$5.parseExprOps (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2661:21)
    at Parser.pp$5.parseMaybeConditional (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2644:21)
    at Parser.pp$5.parseMaybeAssign (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2611:21)
    at Parser.pp$5.parseParenAndDistinguishExpression (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:3120:30)
    at Parser.pp$5.parseExprAtom (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2950:43)
    at Parser.pp$5.parseExprSubscripts (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2775:21)
    at Parser.pp$5.parseMaybeUnary (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2733:19)
    at Parser.pp$5.parseExprOps (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2661:21)
    at Parser.pp$5.parseMaybeConditional (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2644:21)
    at Parser.pp$5.parseMaybeAssign (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2611:21)
    at Parser.pp$5.parseExprList (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:3524:20)
    at Parser.pp$5.parseSubscript (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2845:27)
    at Parser.pp$5.parseSubscripts (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2794:26)
    at Parser.pp$5.parseExprSubscripts (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2778:23)
    at Parser.pp$5.parseMaybeUnary (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2733:19)
    at Parser.pp$5.parseExprOps (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2661:21)
    at Parser.pp$5.parseMaybeConditional (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2644:21)
    at Parser.pp$5.parseMaybeAssign (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:2611:21)
    at Parser.pp$8.parseVar (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:1331:26)
    at Parser.pp$8.parseVarStatement (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:1195:10)
    at Parser.pp$8.parseStatement (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:931:19)
    at Parser.pp$8.parseTopLevel (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:833:23)
    at Parser.parse (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/acorn/dist/acorn.js:602:17)
    at parse (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/@meteorjs/reify/lib/parsers/acorn.js:18:17)
    at exports.compile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/@meteorjs/reify/lib/compiler.js:61:47)
    at wrap.makeCacheKey (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:90:16)
    at recomputeNewValue (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/optimism/src/entry.ts:198:31)
    at Slot.withValue (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/@wry/context/lib/context.esm.js:69:29)
    at reallyRecompute (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/optimism/src/entry.ts:181:19)
    at Entry.recompute (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/optimism/src/entry.ts:91:9)
    at optimistic (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/optimism/src/index.ts:150:25)
    at DefaultHandlers.js (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:158:12)
    at ImportScanner.readModule (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1279:23)
    at ImportScanner.readDepFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1323:11)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1149:17)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanFile (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:1144:9)
    at ImportScanner.scanImports (/Users/username/.meteor/packages/meteor-tool/.3.3.0-beta.0.iuklqmjxf8++os.osx.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.osx.x86_64/tools/isobuild/tools/isobuild/import-scanner.ts:741:9)
    at Function.computeJsOutputFilesMap (/tools/isobuild/compiler-plugin.js:1404:9)
    at ClientTarget._emitResources (/tools/isobuild/bundler.js:1166:30)
    at /tools/isobuild/bundler.js:861:7
    at Object.enterJob (/tools/utils/buildmessage.js:387:12)
    at ClientTarget.make (/tools/isobuild/bundler.js:849:5)
    at /tools/isobuild/bundler.js:3299:7
    at /tools/isobuild/bundler.js:3458:25
    at Object.capture (/tools/utils/buildmessage.js:282:5)
    at bundle (/tools/isobuild/bundler.js:3280:18)
    at bundleApp (/tools/runners/run-app.js:585:26)
    at AppRunner._runOnce (/tools/runners/run-app.js:630:35)
    at AppRunner._runApp (/tools/runners/run-app.js:952:23) {
  pos: 3578,
  loc: Position { line: 144, column: 30 },
  raisedAt: 3579
}

Any clue on how to get over this error?

3.2 works just fine, and I tried nuking my .meteor folder and trying again just to see if some file had gotten messed up

Edit: Played around a bit and discovered it was related to how I was dealing with react-native-web
I have a package @jonasmerlin/react-native-markdown-display that uses react-native

For babel I symlinked that package and then in babel I had this to map it:

        {
           "root":[
              "./"
           ],
           "alias":{
              "^react-native$":"./node_modules/react-native-web",

That worked just fine for babel, and as far as I can tell I am able to do the mapping itself just fine.

But for some reason some part of 3.3 doesn’t care about my import alias anymore and will crash, whether that file is getting transpilled or not and when it tried to load react-native it crashes.
I have to have react-native for some typing stuff

What seems to have worked for now is to instead do this within the package.json
“react-native”: “npm:react-native-web@^0.20.0”,

I don’t quite know what other problems this will create yet, but it seems to at least finish building

I think I have gotten a bit farther but I am getting hung up with using .swcrc baseUrl

I am trying to do something like this:

{
  "jsc": {
    "baseUrl": "./",

    "paths": {
      "@shared/*": ["common/*"],

ANd I get this error

 ↳ Error: failed to handle: base_dir(`./`) must be absolute. Please ensure that `jsc.baseUrl` is specified correctly. This cannot be deduced by SWC itself because SWC is a transpiler and it does not try to resolve project details. In other words, SWC does not know which directory should be used as a base directory. It can be deduced if `.swcrc` is used, but if not, there are many candidates. e.g. the directory containing `package.json`, or the current working directory. Because of that, the caller (typically the developer of the JavaScript package) should specify it. If you see this error, please report an issue to the package author.

I am assuming this has to do with how meteor is loading the .swcrc since swc doesn’t believe this setting is coming from my .swcrc it doesn’t know how to resolve the baseUrl and since I need this code to be shareable I can’t put in an absolute path like it asks.

Maybe we need to special handle the baseUrl?

Also side note, it doesn’t seem that meteor is watching .swcrc so I have to keep killing the app and reloading when I change this

2 Likes

↳ Error: failed to handle: base_dir(./) must be absolute.

@schlaegerz: Interesting use case. I expected that apps using aliases would need to migrate their aliases to work with the SWC approach.

You’re heading in the right direction. We’ve enabled support for custom .swcrc files to control SWC compilation, and there seems you can describe your aliases. I see the error you’re getting, but I’m not too familiar with your specific setup. Would you mind preparing a minimal app in a GitHub repository that reproduces the issue? That would help me look straight into it and check if anything is missing on our side to support your setup.

Likely I need to add baseUrl: path.resolve(__dirname, yourValueInSwcrcFile) as part of the core, but having the reproduction would help to make the verifications.

If I get it sometime the next days, I should have time to work on it and include the fix in the next beta.


Update: Fixed it!

I was able to reproduce it in a simple project just by adding an alias. If there’s any specific scenario you’re unsure about, feel free to share a minimal repo and I can double-check it for you.

Thank you for your report, this fix will be included in the upcoming 3.3-beta.1.

3 Likes

I’ll try again after the next beta and see what what happens. I know my project has a lot of funkiness to it so in general its just hard to pin down exactly what could be breaking. It also appears there is a decent amount of caching that makes it extra hard to debug. Is there a good way to purge the swc cache, or make it ignore the cache?

I think the cache needs to be purged when .swcrc changes