---
description: JavaScript Workers with compatibility dates on or after November 17, 2026 will use URL-based module resolution and import.meta by default.
title: Workers will use the new module registry by default on November 17
image: https://developers.cloudflare.com/changelog/post/2026-11-02-module-registry-default/og.png?v=f91da57dac2029e4
---

[Skip to content](#main-content)

[View RSS feeds](https://developers.cloudflare.com/fundamentals/new-features/available-rss-feeds/) [ Subscribe to RSS](https://developers.cloudflare.com/changelog/rss/index.xml)

[Back to all posts](https://developers.cloudflare.com/changelog)

November 2, 2026

## Workers will use the new module registry by default on November 17

[Workers](https://developers.cloudflare.com/workers/)

Copy as Markdown| [View as Markdown](https://developers.cloudflare.com/changelog/post/2026-11-02-module-registry-default/index.md)| [Agent setup](https://developers.cloudflare.com/agent-setup/)

Starting November 17, 2026, JavaScript Workers with a [compatibility date](https://developers.cloudflare.com/workers/configuration/compatibility-dates/) of `2026-11-17` or later will use the new module registry by default. You will no longer need the `new_module_registry` flag for these dates. Python Workers keep using the legacy registry.

The module registry finds and loads JavaScript modules in your Worker. We [announced the new registry in September 2026 ↗︎](https://blog.cloudflare.com/workers-module-registry-nodejs/). It improves compatibility with JavaScript standards and Node.js. In Workers using [Node.js compatibility](https://developers.cloudflare.com/workers/runtime-apis/nodejs/), you can use `require()` to load ES modules. The module and its dependencies must not use top-level `await`.

You can also use `import.meta` to get information about the current module and find the URL of another module without loading it:

*src/index.jsjs*

```js
export default {
	fetch() {
		return Response.json({
			moduleUrl: import.meta.url,
			isEntrypoint: import.meta.main,
			helperUrl: import.meta.resolve("./helper.js"),
		});
	},
};
```

*src/index.tsts*

```ts
export default {
	fetch(): Response {
		return Response.json({
			moduleUrl: import.meta.url,
			isEntrypoint: import.meta.main,
			helperUrl: import.meta.resolve("./helper.js"),
		});
	},
} satisfies ExportedHandler;
```

When deployed with `src/index.ts` as the unbundled entrypoint, `isEntrypoint` is `true`. `helperUrl` is a URL within your Worker bundle. Resolving the URL does not check whether the module exists or load it over the network. Build tools may transform `import.meta`. To try this example directly, refer to [unbundled deployments](https://developers.cloudflare.com/workers/wrangler/configuration/#bundling).

Existing Workers keep their current behavior until you change their compatibility date or flags. To try the new registry before November 17, keep your current date and add `new_module_registry` to your [compatibility flags](https://developers.cloudflare.com/workers/configuration/compatibility-flags/).

Before updating, check your dependencies for invalid import attributes and changes to `require()` behavior. The new registry rejects invalid import attributes. Calls to `require()` also fail if the module or any of its dependencies use top-level `await`. To keep the legacy registry with a compatibility date of `2026-11-17` or later, add `legacy_module_registry`.

For migration details, refer to the [new module registry compatibility flag](https://developers.cloudflare.com/workers/configuration/compatibility-flags/#new-module-registry), [bundling documentation](https://developers.cloudflare.com/workers/wrangler/bundling/#runtime-module-loading), and [Node.js compatibility documentation](https://developers.cloudflare.com/workers/runtime-apis/nodejs/).

```json
{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://developers.cloudflare.com/changelog/post/2026-11-02-module-registry-default/#page","headline":"Workers will use the new module registry by default on November 17","description":"JavaScript Workers with compatibility dates on or after November 17, 2026 will use URL-based module resolution and import.meta by default.","url":"https://developers.cloudflare.com/changelog/post/2026-11-02-module-registry-default/","inLanguage":"en","image":"https://developers.cloudflare.com/changelog/post/2026-11-02-module-registry-default/og.png?v=f91da57dac2029e4","dateModified":"2026-11-02","datePublished":"2026-11-02","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
```
