Skip to content

fix(link): error on missing export between TS modules#9197

Merged
graphite-app[bot] merged 1 commit intomainfrom
04-22-fix_9141
Apr 22, 2026
Merged

fix(link): error on missing export between TS modules#9197
graphite-app[bot] merged 1 commit intomainfrom
04-22-fix_9141

Conversation

@IWANABETHATGUY
Copy link
Copy Markdown
Member

@IWANABETHATGUY IWANABETHATGUY commented Apr 22, 2026

Rolldown previously downgraded MISSING_EXPORT to a warning when both importer and importee were TypeScript modules, while still emitting the dangling re-export in the output — producing syntactically valid but semantically broken JavaScript that crashed downstream bundlers like webpack.

This change removes the TS-to-TS severity downgrade so a missing export is always an error, matching Rollup's behavior. The existing If you meant to import a type... hint is preserved.

Fixes #9141.

Copy link
Copy Markdown
Member Author


How to use the Graphite Merge Queue

Add the label graphite: merge-when-ready to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 22, 2026

Deploy Preview for rolldown-rs canceled.

Name Link
🔨 Latest commit cc38b86
🔍 Latest deploy log https://app.netlify.com/projects/rolldown-rs/deploys/69e8a1cca51a0700090513d6

@IWANABETHATGUY IWANABETHATGUY force-pushed the 04-22-fix_9141 branch 2 times, most recently from 6862aab to e5f1c5c Compare April 22, 2026 10:14
@IWANABETHATGUY IWANABETHATGUY changed the title fix: 9141 fix(link): error on missing export between TS modules (#9141) Apr 22, 2026
@IWANABETHATGUY IWANABETHATGUY changed the title fix(link): error on missing export between TS modules (#9141) fix(link): error on missing export between TS modules Apr 22, 2026
@IWANABETHATGUY IWANABETHATGUY marked this pull request as ready for review April 22, 2026 10:18
@graphite-app
Copy link
Copy Markdown
Contributor

graphite-app Bot commented Apr 22, 2026

Merge activity

Rolldown previously downgraded `MISSING_EXPORT` to a warning when both importer and importee were TypeScript modules, while still emitting the dangling re-export in the output — producing syntactically valid but semantically broken JavaScript that crashed downstream bundlers like webpack.

This change removes the TS-to-TS severity downgrade so a missing export is always an error, matching Rollup's behavior. The existing `If you meant to import a type...` hint is preserved.

Fixes #9141.
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 22, 2026

Merging this PR will not alter performance

✅ 4 untouched benchmarks
⏩ 10 skipped benchmarks1


Comparing 04-22-fix_9141 (cc38b86) with main (42c14bc)2

Open in CodSpeed

Footnotes

  1. 10 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

  2. No successful run was found on main (cc38b86) during the generation of this report, so 42c14bc was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

@graphite-app graphite-app Bot merged commit cc38b86 into main Apr 22, 2026
31 of 32 checks passed
@graphite-app graphite-app Bot deleted the 04-22-fix_9141 branch April 22, 2026 10:28
@rolldown-guard rolldown-guard Bot mentioned this pull request Apr 22, 2026
shulaoda added a commit that referenced this pull request Apr 22, 2026
## [1.0.0-rc.17] - 2026-04-22

### 🐛 Bug Fixes

- link: error on missing export between TS modules (#9197) by @IWANABETHATGUY
- rolldown_plugin_vite_import_glob: import path should not be affected by absolute base option (#9145) by @kermanx
- `this.resolve()` returns null for bare relative paths without importer (#9142) by @Copilot
- collect destructured bindings in HMR module exports (#9146) by @h-a-n-a
- esbuild-tests: handle 0.28.0 test cases (#9149) by @sapphi-red
- plugin/copy-module: honor external resolutions from other plugins (#9139) by @TheAlexLichter
- allow undefined in sourcesContent type (#9136) by @jurijzahn8019
- reduce false positives in chunk optimizer circular dependency detection (#9049) by @AlonMiz

### 🚜 Refactor

- chunk-optimizer: extract runtime-module placement into rehome_runtime_module (#9163) by @IWANABETHATGUY

### 📚 Documentation

- add design doc for sort_modules execution ordering (#9169) by @IWANABETHATGUY
- add document for `RenderedModule` (#9147) by @sapphi-red

### ⚡ Performance

- rolldown_plugin_vite_import_glob: skip self-import earlier using raw path comparison (#9193) by @shulaoda

### 🧪 Testing

- lazy: add `playground/lazy-compilation` (#7974) by @hyf0

### ⚙️ Miscellaneous Tasks

- use app token for release PR (#9198) by @Boshen
- upgrade oxc to 0.127.0 (#9194) by @Dunqing
- use oxc security action (#9196) by @Boshen
- esbuild-tests: remove some tests from ignored list as enum inline is now supported (#9184) by @sapphi-red
- deps: update dependency vite-plus to v0.1.19 (#9183) by @renovate[bot]
- use vp instead of pnpm in check-wasi-binding-deps (#9182) by @shulaoda
- verify wasm32-wasi binding deps match @rolldown/browser before publish (#9162) by @shulaoda
- deps: update esbuild for tests to 0.28.0 (#9172) by @sapphi-red
- deps: update rollup submodule for tests to v4.60.2 (#9173) by @sapphi-red
- deps: update test262 submodule for tests (#9174) by @sapphi-red
- sort_modules: fix stale async-entry sort key comment (#9170) by @IWANABETHATGUY
- deps: update npm packages (#9157) by @renovate[bot]
- deps: update dependency diff to v9 (#9158) by @renovate[bot]
- deps: update rust crates (#9156) by @renovate[bot]
- run Windows CI on PRs labeled with `ci: windows` (#9153) by @hyf0
- update-test-dependencies: run setup-rust before file changes (#9151) by @sapphi-red
- deps: update dependency rust to v1.95.0 (#9140) by @renovate[bot]

### ❤️ New Contributors

* @jurijzahn8019 made their first contribution in [#9136](#9136)
* @AlonMiz made their first contribution in [#9049](#9049)

---------

Co-authored-by: shulaoda <165626830+shulaoda@users.noreply.github.com>
@silverwind
Copy link
Copy Markdown

Seems this exposed bug sxzz/rolldown-plugin-dts#230.

@IWANABETHATGUY
Copy link
Copy Markdown
Member Author

Seems this exposed bug sxzz/rolldown-plugin-dts#230.

We aligned with rollup, which emits an error by default when an export is missing.

@silverwind
Copy link
Copy Markdown

silverwind commented Apr 28, 2026

Yeah, my take is that this is that plugin's fault, it was previously suppressing the warnings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: preserveModules emits dangling export reference for TypeScript interface re-exported without type keyword

4 participants