This issue tracks all currently skipped/ignored esbuild and rollup compatibility tests, categorized by whether the fix belongs in rolldown or oxc.
Legend: 🔵 = rolldown, 🟠 = oxc
2026-05-19 sync with reasons.ts: removed 15 enum-related tests (previously listed under "🟠 oxc — Enum inlining") that have graduated out of notSupportedReasons and now pass. Removed default/legal_comments_inline from the Failed table — closed by #7387 and graduated out of failedReasons. Moved ts/ts_print_non_finite_number_inside_with from "Enum inlining" to the Failed table (its actual reasons.ts category; the entry was misclassified). Totals updated.
esbuild tests
Source: scripts/src/esbuild-tests/reasons.ts
Failed tests (24) — tests that run but produce sub-optimal output
| Test |
Owner |
Reason |
dce/dce_of_iife |
🟠 oxc |
oxc-project/oxc#17480 — IIFEs not unwrapped |
dce/tree_shaking_lowered_class_static_field |
🔵 rolldown |
sub optimal: REMOVE_ME class can be removed |
dce/tree_shaking_react_elements |
🔵 rolldown |
sub optimal: React.Fragment should be removed |
dce/tree_shaking_unary_operators |
🔵 rolldown |
rejected due to #7009 |
default/comment_preservation_preserve_jsx |
🟠 oxc |
comments not kept properly (oxc_codegen) |
default/comment_preservation_transform_jsx |
🟠 oxc |
comments not kept properly (oxc_codegen) |
default/comment_preservation |
🔵 rolldown |
with statement rejected due to #7009 |
default/direct_eval_tainting_no_bundle |
🔵 rolldown |
rejected due to #7009 |
default/export_forms_with_minify_identifiers_and_no_bundle |
🔵 rolldown |
sub optimal: should not generate duplicate export binding |
default/external_es6_converted_to_common_js |
🔵 rolldown |
sub optimal: redundant import statements |
default/false_require |
🔵 rolldown |
should rename require when it appears in param position |
default/jsx_dev_self_edge_cases |
🟠 oxc |
oxc-project/oxc#16654 |
default/mangle_props_import_export |
🔵 rolldown |
sub optimal: no ModePassThrough |
default/no_warn_common_js_exports_in_esm_pass_through |
🔵 rolldown |
sub optimal: no pass through mode |
default/top_level_await_allowed_import_with_splitting |
🔵 rolldown |
sub optimal: empty chunks should be removed |
loader/jsx_preserve_capital_letter_minify |
🟠 oxc |
oxc minifier does not support JSX (oxc-project/oxc#13248) |
loader/jsx_preserve_capital_letter_minify_nested |
🟠 oxc |
oxc minifier does not support JSX (oxc-project/oxc#13248) |
loader/loader_data_url_base64_invalid_utf8 |
🔵 rolldown |
mime type should be data:text/plain |
loader/loader_file_one_source_two_different_output_paths_css |
🔵 rolldown |
wrong output when css as entry and has shared css |
packagejson/common_js_variable_in_esm_type_module |
🔵 rolldown |
sub optimal: redundant __commonJS wrapper |
packagejson/package_json_browser_issue2002_b |
🟠 oxc |
sub is not resolved (oxc_resolver browser field) |
packagejson/package_json_disabled_type_module_issue3367 |
🔵 rolldown |
ignored module debug name seems not correct |
ts/ts_export_default_type_issue316 |
🔵 rolldown |
related to #3048 |
ts/ts_print_non_finite_number_inside_with |
🔵 rolldown |
with statement rejected due to #7009 |
Not supported tests (65) — features not yet implemented
🟠 oxc — Mangle props (8)
default/mangle_props_jsx_transform_namespace
default/mangle_props_type_script_features
ts/ts_experimental_decorators_mangle_props_assign_semantics
ts/ts_experimental_decorators_mangle_props_define_semantics
ts/ts_experimental_decorators_mangle_props_methods
ts/ts_experimental_decorators_mangle_props_static_assign_semantics
ts/ts_experimental_decorators_mangle_props_static_define_semantics
ts/ts_experimental_decorators_mangle_props_static_methods
🟠 oxc — Label mangling (1)
default/minify_nested_labels_no_bundle
🟠 oxc — verbatimModuleSyntax (1)
ts/export_type_issue379 — verbatimModuleSyntax=false not supported in oxc_transformer
🔵 rolldown — Legal comments (14)
default/legal_comments_avoid_slash_tag_end_of_file
default/legal_comments_avoid_slash_tag_external
default/legal_comments_avoid_slash_tag_inline
default/legal_comments_end_of_file
default/legal_comments_escape_slash_script_and_style_end_of_file
default/legal_comments_escape_slash_script_and_style_external
default/legal_comments_external
default/legal_comments_linked
default/legal_comments_many_end_of_file
default/legal_comments_many_linked
default/legal_comments_no_escape_slash_script_end_of_file
default/legal_comments_no_escape_slash_style_end_of_file
default/legal_comments_none
🔵 rolldown — Copy loader (14)
default/metafile_various_cases
default/metafile_very_long_external_paths
loader/loader_bundle_with_unknown_import_attributes_and_copy_loader
loader/loader_copy_entry_point_advanced
loader/loader_copy_explicit_output_file
loader/loader_copy_starts_with_dot_abs_path
loader/loader_copy_starts_with_dot_rel_path
loader/loader_copy_use_index
loader/loader_copy_with_bundle_entry_point
loader/loader_copy_with_bundle_from_css
loader/loader_copy_with_bundle_from_js
loader/loader_copy_with_format
loader/loader_copy_with_injected_file_bundle
loader/loader_copy_with_transform
🔵 rolldown — Empty/extensionless loader (2)
loader/empty_loader_css
loader/extensionless_loader_css
🔵 rolldown — Glob (10)
glob/glob_basic_no_splitting
glob/glob_basic_splitting
glob/glob_entry_point_abs_path
glob/glob_no_matches
glob/glob_wildcard_no_slash
glob/glob_wildcard_slash
glob/ts_glob_basic_no_splitting
glob/ts_glob_basic_splitting
default/require_and_dynamic_import_invalid_template
loader/with_type_bytes_override_loader_glob
🔵 rolldown — publicPath (4)
loader/loader_file_public_path_js
loader/loader_file_public_path_css
loader/loader_file_public_path_asset_names_js
loader/loader_file_public_path_asset_names_css
🔵 rolldown — File reference URL difference (4)
loader/loader_file_relative_path_asset_names_css
loader/loader_file_relative_path_asset_names_js
loader/loader_file_relative_path_css
loader/loader_file_relative_path_js
🔵 rolldown — Import attributes (9)
default/comment_preservation_import_assertions
default/metafile_import_with_type_json
default/output_for_assert_type_json
loader/loader_bundle_with_import_attributes
loader/loader_bundle_with_unknown_import_attributes_and_js_loader
loader/with_bad_attribute
loader/with_bad_type
loader/with_type_bytes_override_loader
loader/with_type_json_override_loader
🔵 rolldown — Other (4)
default/conditional_require_resolve — converting conditional require.resolve not supported
default/require_shim_substitution — require second argument not supported
dce/dead_code_inside_unused_cases — dce inside unused switch cases not supported
default/import_with_hash_parameter / default/import_with_query_parameter / loader/loader_file_with_query_parameter / loader/loader_from_extension_with_query_parameter — stripping hash/query parameters not supported
Ignored tests (39) — intentional behavior differences or test infra limitations
🔵 rolldown — Test infra limitations (5)
default/import_abs_path_as_dir
default/import_abs_path_as_file
default/entry_names_non_portable_character
loader/loader_inline_source_map_absolute_path_issue4075_unix
loader/loader_inline_source_map_absolute_path_issue4075_windows
🔵 rolldown — Intentional: hacky esbuild behavior (3)
dce/package_json_side_effects_array_keep_main_implicit_main
dce/package_json_side_effects_array_keep_module_implicit_main
dce/package_json_side_effects_array_keep_module_use_main
🔵 rolldown — Compiler hints spec (1)
dce/remove_unused_no_side_effects_tagged_templates
🔵 rolldown — ES5 target not supported (2)
default/define_import_meta_es5
loader/loader_json_prototype_es5
🔵 rolldown — Resolve alias behavior difference (3)
default/package_alias_match_longest
default/package_alias
default/warnings_inside_node_modules
🟠 oxc — Extension resolution difference (2) — oxc_resolver prefers .js over .ts in node_modules
ts/ts_import_in_node_modules_name_collision_with_css
ts/ts_prefer_js_over_ts_inside_node_modules
🔵 rolldown — Inject feature aligned with @rollup/plugin-inject (5)
default/inject_duplicate
default/inject_import_order
default/inject_import_ts
default/inject_with_string_export_name_bundle
default/inject_with_string_export_name_no_bundle
🔵 rolldown — Multi-pass transformer architecture limitation (3)
default/inject_jsx
default/jsx_import_meta_property
default/jsx_import_meta_value
🟠 oxc — Covered by minifier (1)
default/quoted_property_mangle
🔵 rolldown — Irrelevant/will not support (4)
default/entry_names_no_slash_after_dir — no [dir] placeholder
default/error_message_crash_stdin_issue2913 — stdin not supported
default/line_limit_minified — lineLimit will not be supported
default/line_limit_not_minified — lineLimit will not be supported
🔵 rolldown — CSS bundling not supported (10) — #4271
dce/tree_shaking_js_with_associated_css (+ 6 variants)
default/entry_names_chunk_names_ext_placeholder
default/legal_comments_modify_indent
default/metafile_no_bundle
loader/loader_data_url_text_css
Rollup tests
Ignored tests (100) — behavior differences (excluding 37 ported tests)
Source: packages/rollup-tests/src/ignored-tests.js
🔵 rolldown — Build timing difference (3) — rolldown builds on bundle.generate/write vs rollup()
rollup@hooks@supports buildStart and buildEnd hooks
rollup@hooks@supports warnings in buildStart and buildEnd hooks
rollup@hooks@passes errors to the buildEnd hook
🔵 rolldown — import.meta.url polyfill difference (5)
rollup@function@import-meta-url-b
rollup@form@import-meta-url
rollup@form@resolve-import-meta-url-export
rollup@form@resolve-import-meta-url
rollup@function@import-meta-url-with-compact
🔵 rolldown — Module type guessing difference (3)
rollup@function@non-js-extensions
rollup@function@error-parse-unknown-extension
rollup@function@error-parse-json
🔵 rolldown — Bundle assignment not supported (8)
rollup@function@error-file-name-absolute-path
rollup@function@error-file-name-deep-traversal
rollup@function@error-file-name-dot-dot
rollup@function@error-file-name-escaped-via-filename-property
rollup@function@error-file-name-path-traversal-plugin
rollup@function@error-file-name-windows-absolute-path
rollup@function@file-name-double-dot-prefix-is-valid
rollup@function@file-name-leading-dot-slash-is-valid
🔵 rolldown — Warning/error differences (22)
rollup@function@plugin-hook-filters
rollup@function@generate-bundle-mutation
rollup@function@missing-entry-export
rollup@hooks@Throws when using the "file" option for multiple chunks
- 8 logging-related tests
rollup@function@cannot-call-external-namespace
rollup@function@cannot-call-internal-namespace
- 3 reassign-import tests
rollup@function@warning-const-reassign
rollup@function@namespace-reassign-import-fails
rollup@function@namespace-update-import-fails
🔵 rolldown — Plugin dependencies (5)
rollup@function@no-treeshake-react
rollup@function@strip-bom-1
rollup@form@supports-core-js
rollup@form@supports-es5-shim
rollup@form@supports-es6-shim
🔵 rolldown — Parallelism ordering (2)
rollup@hooks@assigns chunk IDs before creating outputBundle chunks
rollup@function@external-resolved
🔵 rolldown — external: true not supported (3)
rollup@function@external-namespace-and-default-reexport-compat2
rollup@function@external-namespace-and-default-reexport-compat3
rollup@function@external-namespace-and-default-reexport-compat
🔵 rolldown — Test infra (3)
rollup@function@preserve-symlink
rollup@function@symlink
rollup@form@sourcemaps-inline
🔵 rolldown — Other behavior differences (9)
rollup@hooks@Throws when not specifying "file" or "dir"
rollup@function@bundle-facade-order
rollup@function@argument-deoptimization@global-calls
rollup@function@es5-class-called-without-new
rollup@function@jsx@unknown-mode
rollup@function@jsx@unnecessary-import-source
rollup@function@catch-rust-panic
rollup@function@exports-are-not-defined
rollup@function@dynamic-import-call-method-with-this-await
🔵 rolldown — Treeshaking tests (278) — treeshaking algorithm differences
Source: packages/rollup-tests/src/ignored-treeshaking-tests.js + ignored-treeshaking-tests.json
All 278 tests are rolldown — tree-shaking is implemented in rolldown's link stage.
49 manually listed tests in ignored-treeshaking-tests.js covering:
- Scope handling and variable shadowing
- Deoptimization of recursive functions
- Const folding across modules
- Parameter optimization
- Property access side-effects tracking
- Namespace mutation tracking
- Class static block tree-shaking
- Proxy tree-shaking
229 auto-generated tests in ignored-treeshaking-tests.json covering:
- Array element tracking, arrow/function call parameters
- Async function effects, binary/unary expressions
- Break control flow, builtin prototypes
- Class fields/constructors/static blocks
- Conditional/logical expressions, dead branch elimination
- Decorator tree-shaking, empty statement removal
- Function mutation tracking, getter/setter side-effects
- Object expression tree-shaking, optional chaining
- Pattern assignments, property setters/getters
- Pure comment handling, recursive calls/values
- Self-calling functions, sequence expressions
- Side-effect detection (a through t, plus variants)
- Switch/try statement deoptimization, template literals
- Tree-shake literal parameters, unused imports/vars/functions
Full list in packages/rollup-tests/src/ignored-treeshaking-tests.json.
Passed but snapshot different (173) — functionally correct but different output
Source: packages/rollup-tests/src/ignored-passed-snapshot-different-tests.js
🔵 rolldown — Deconflict logic differences (~30)
rollup@form@catch-parameter-shadowing
rollup@form@body-less-for-loops
rollup@form@import-specifier-deshadowing
rollup@form@base64-deshadow
rollup@form@conflicting-imports
rollup@form@deconflict-format-specific-exports
rollup@form@deconflict-format-specific-globals
rollup@form@internal-conflict-resolution
rollup@form@large-var-cnt-deduping
rollup@form@deconflict-module-priority
- (and ~20 more deconflict-related tests)
🔵 rolldown — Reexport handling (~20) — rolldown converts reexport to import+export
rollup@form@reexport-external-default-and-name
rollup@form@reexport-external-default-and-namespace
rollup@form@reexport-external-default-as-name-and-name
rollup@form@reexport-external-default
rollup@form@reexport-external-name-as-default2
rollup@form@reexport-external-name-as-default
rollup@form@reexport-external-name
rollup@form@reexport-external-namespace-as
rollup@form@reexport-external-namespace
rollup@form@reexport-used-external-namespace-as
rollup@form@external-export-tracing
- (and more)
🔵 rolldown — Dynamic import inlining (~5)
rollup@form@dynamic-import-inlining
rollup@form@dynamic-import-inlining-array
rollup@form@inline-with-reexport
rollup@form@nested-inlined-dynamic-import
rollup@form@inlined-treeshaken-dynamic-import (from treeshaking json)
🔵 rolldown — Class rendering differences (~15) — class A → var A = class
rollup@form@use-class-name-in-static-block
rollup@form@static-method-deoptimization
rollup@form@reassigned-exported-functions-and-classes
rollup@form@computed-properties
rollup@form@empty-statament-class-member
rollup@form@exported-class-declaration-conflict
rollup@form@support-decorators-after-export
rollup@form@support-decorators-before-export
rollup@form@default-export-anonymous-class-extends
rollup@form@default-export-class
- (and more)
🟠 oxc — undefined → void 0 replacement (2) — oxc_codegen behavior
rollup@form@proper-this-context
rollup@form@this-is-undefined
🔵 rolldown — Sourcemap mapping differences (~8)
rollup@function@sourcemap-true-generatebundle
rollup@function@sourcemap-inline-generatebundle
rollup@form@sourcemaps-external
rollup@form@sourcemaps-hidden
rollup@sourcemaps@render-chunk-babili
rollup@form@render-chunk-plugin-sourcemaps
rollup@sourcemaps@transform-low-resolution
rollup@sourcemaps@names
rollup@sourcemaps@basic-support
🔵 rolldown — Inlining/optimization differences (~20)
rollup@form@assignment-to-exports
rollup@form@deep-properties-access
rollup@form@deep-properties
rollup@form@handles-async-await
rollup@form@recursive-computed-members
rollup@form@recursive-multi-expressions
rollup@form@reexport-star-deshadow
rollup@form@function-id-as-parameter
rollup@form@remove-whitespace-of-logical-expression
rollup@form@pure-comment-scenarios-complex
rollup@form@non-empty-block-statement
rollup@form@nested-pure-comments
rollup@form@unary-expressions-preserve-constants
- (and more)
🔵 rolldown — Other output differences (~70)
- Format-specific rendering, namespace objects, hash values, export handling, emit-asset, etc.
rollup@form@hoisted-vars-in-dead-branches — var hoisting happens in Rollup but not Rolldown
rollup@form@export-__proto__ — Rolldown uses __export helper
rollup@function@emit-chunk-hash — hash value difference
rollup@function@cycles-export-star — cycle handling
- (and many more — full list in source file)
Unsupported features (219) — features not yet implemented
Source: packages/rollup-tests/src/ignored-by-unsupported-features.md
🔵 rolldown — Plugin-related (31)
NormalizedOptions at hooks not compatible (2)
load hook ast return not supported (2)
resolveId hook resolvedBy not supported (1)
shouldTransformCachedModule hook not supported (1)
resolveDynamicImport hook specifier: AstNode not supported (2)
- Plugin
sequential not supported (2)
renderDynamicImport/resolveFileUrl/resolveImportMeta hooks not supported (3)
PluginContext.parse allowReturnOutsideFunction not supported (1)
PluginContext.cache not supported (7)
PluginContext.load not fully supported (4)
maxParallelFileOps not supported (5)
PluginContext.emitFile emit chunk partially supported (13)
PluginContext.emitFile prebuilt chunk not supported (3)
PluginContext.setAssetSource not supported (9)
originalFileName/originalFileNames not supported (3)
🔵 rolldown — Options-related (102)
output.format systemjs not supported (15)
input.perf and bundle.getTimings() not supported (2)
input.moduleContext not supported (2)
output.compact not supported (4)
output.validate not supported (1)
output.interop not supported (16)
Bundle.cache not supported (2)
output.generatedCode not supported (21)
output.preserveModules not compatible (11)
output.manualChunks not compatible (8)
format: amd not supported (3)
output.sourcemapExcludeSources not supported (1)
output.sourcemapBaseUrl not compatible (3)
output.treeshake.preset not supported (1)
output.treeshake.moduleSideEffect not compatible (2)
ModuleInfo not compatible (8)
- Chunk information not compatible (2)
🔵 rolldown — Features (86)
syntheticNamedExports not supported (25)
- Import assertions/attributes not supported (28)
- Watch behavior not compatible (1)
- Escaping external id not supported (1)
- Remove
use strict from function body (1)
- Namespace object not compatible (12)
hasOwnProperty export handling (1)
__proto__ export handling (2)
- Source map combine logic (1)
strictDeprecations option not supported (7)
- Error/warning information not compatible (52) — includes missing error codes like
VALIDATION_ERROR, EMPTY_BUNDLE, ASSET_SOURCE_MISSING, UNUSED_EXTERNAL_IMPORT, etc.
Summary
| Category |
🔵 rolldown |
🟠 oxc |
Total |
| esbuild — failed |
16 |
8 |
24 |
| esbuild — not supported |
46 |
12 |
58 |
| esbuild — ignored |
34 |
3 |
37 |
| rollup — ignored |
100 |
0 |
100 |
| rollup — treeshaking |
278 |
0 |
278 |
| rollup — snapshot different |
171 |
2 |
173 |
| rollup — unsupported features |
219 |
0 |
219 |
| Total |
864 |
25 |
889 |
Note: 37 ported rollup tests are excluded from the ignored count as they are already moved to other test locations and are not actually skipped.
This issue tracks all currently skipped/ignored esbuild and rollup compatibility tests, categorized by whether the fix belongs in rolldown or oxc.
Legend: 🔵 = rolldown, 🟠 = oxc
esbuild tests
Source:
scripts/src/esbuild-tests/reasons.tsFailed tests (24) — tests that run but produce sub-optimal output
dce/dce_of_iifedce/tree_shaking_lowered_class_static_fielddce/tree_shaking_react_elementsReact.Fragmentshould be removeddce/tree_shaking_unary_operatorsdefault/comment_preservation_preserve_jsxdefault/comment_preservation_transform_jsxdefault/comment_preservationdefault/direct_eval_tainting_no_bundledefault/export_forms_with_minify_identifiers_and_no_bundledefault/external_es6_converted_to_common_jsimportstatementsdefault/false_requirerequirewhen it appears in param positiondefault/jsx_dev_self_edge_casesdefault/mangle_props_import_exportdefault/no_warn_common_js_exports_in_esm_pass_throughdefault/top_level_await_allowed_import_with_splittingloader/jsx_preserve_capital_letter_minifyloader/jsx_preserve_capital_letter_minify_nestedloader/loader_data_url_base64_invalid_utf8data:text/plainloader/loader_file_one_source_two_different_output_paths_csspackagejson/common_js_variable_in_esm_type_module__commonJSwrapperpackagejson/package_json_browser_issue2002_bsubis not resolved (oxc_resolver browser field)packagejson/package_json_disabled_type_module_issue3367ts/ts_export_default_type_issue316ts/ts_print_non_finite_number_inside_withNot supported tests (65) — features not yet implemented
🟠 oxc — Mangle props (8)
default/mangle_props_jsx_transform_namespacedefault/mangle_props_type_script_featurests/ts_experimental_decorators_mangle_props_assign_semanticsts/ts_experimental_decorators_mangle_props_define_semanticsts/ts_experimental_decorators_mangle_props_methodsts/ts_experimental_decorators_mangle_props_static_assign_semanticsts/ts_experimental_decorators_mangle_props_static_define_semanticsts/ts_experimental_decorators_mangle_props_static_methods🟠 oxc — Label mangling (1)
default/minify_nested_labels_no_bundle🟠 oxc — verbatimModuleSyntax (1)
ts/export_type_issue379—verbatimModuleSyntax=falsenot supported in oxc_transformer🔵 rolldown — Legal comments (14)
default/legal_comments_avoid_slash_tag_end_of_filedefault/legal_comments_avoid_slash_tag_externaldefault/legal_comments_avoid_slash_tag_inlinedefault/legal_comments_end_of_filedefault/legal_comments_escape_slash_script_and_style_end_of_filedefault/legal_comments_escape_slash_script_and_style_externaldefault/legal_comments_externaldefault/legal_comments_linkeddefault/legal_comments_many_end_of_filedefault/legal_comments_many_linkeddefault/legal_comments_no_escape_slash_script_end_of_filedefault/legal_comments_no_escape_slash_style_end_of_filedefault/legal_comments_none🔵 rolldown — Copy loader (14)
default/metafile_various_casesdefault/metafile_very_long_external_pathsloader/loader_bundle_with_unknown_import_attributes_and_copy_loaderloader/loader_copy_entry_point_advancedloader/loader_copy_explicit_output_fileloader/loader_copy_starts_with_dot_abs_pathloader/loader_copy_starts_with_dot_rel_pathloader/loader_copy_use_indexloader/loader_copy_with_bundle_entry_pointloader/loader_copy_with_bundle_from_cssloader/loader_copy_with_bundle_from_jsloader/loader_copy_with_formatloader/loader_copy_with_injected_file_bundleloader/loader_copy_with_transform🔵 rolldown — Empty/extensionless loader (2)
loader/empty_loader_cssloader/extensionless_loader_css🔵 rolldown — Glob (10)
glob/glob_basic_no_splittingglob/glob_basic_splittingglob/glob_entry_point_abs_pathglob/glob_no_matchesglob/glob_wildcard_no_slashglob/glob_wildcard_slashglob/ts_glob_basic_no_splittingglob/ts_glob_basic_splittingdefault/require_and_dynamic_import_invalid_templateloader/with_type_bytes_override_loader_glob🔵 rolldown — publicPath (4)
loader/loader_file_public_path_jsloader/loader_file_public_path_cssloader/loader_file_public_path_asset_names_jsloader/loader_file_public_path_asset_names_css🔵 rolldown — File reference URL difference (4)
loader/loader_file_relative_path_asset_names_cssloader/loader_file_relative_path_asset_names_jsloader/loader_file_relative_path_cssloader/loader_file_relative_path_js🔵 rolldown — Import attributes (9)
default/comment_preservation_import_assertionsdefault/metafile_import_with_type_jsondefault/output_for_assert_type_jsonloader/loader_bundle_with_import_attributesloader/loader_bundle_with_unknown_import_attributes_and_js_loaderloader/with_bad_attributeloader/with_bad_typeloader/with_type_bytes_override_loaderloader/with_type_json_override_loader🔵 rolldown — Other (4)
default/conditional_require_resolve— converting conditionalrequire.resolvenot supporteddefault/require_shim_substitution— require second argument not supporteddce/dead_code_inside_unused_cases— dce inside unused switch cases not supporteddefault/import_with_hash_parameter/default/import_with_query_parameter/loader/loader_file_with_query_parameter/loader/loader_from_extension_with_query_parameter— stripping hash/query parameters not supportedIgnored tests (39) — intentional behavior differences or test infra limitations
🔵 rolldown — Test infra limitations (5)
default/import_abs_path_as_dirdefault/import_abs_path_as_filedefault/entry_names_non_portable_characterloader/loader_inline_source_map_absolute_path_issue4075_unixloader/loader_inline_source_map_absolute_path_issue4075_windows🔵 rolldown — Intentional: hacky esbuild behavior (3)
dce/package_json_side_effects_array_keep_main_implicit_maindce/package_json_side_effects_array_keep_module_implicit_maindce/package_json_side_effects_array_keep_module_use_main🔵 rolldown — Compiler hints spec (1)
dce/remove_unused_no_side_effects_tagged_templates🔵 rolldown — ES5 target not supported (2)
default/define_import_meta_es5loader/loader_json_prototype_es5🔵 rolldown — Resolve alias behavior difference (3)
default/package_alias_match_longestdefault/package_aliasdefault/warnings_inside_node_modules🟠 oxc — Extension resolution difference (2) — oxc_resolver prefers .js over .ts in node_modules
ts/ts_import_in_node_modules_name_collision_with_cssts/ts_prefer_js_over_ts_inside_node_modules🔵 rolldown — Inject feature aligned with @rollup/plugin-inject (5)
default/inject_duplicatedefault/inject_import_orderdefault/inject_import_tsdefault/inject_with_string_export_name_bundledefault/inject_with_string_export_name_no_bundle🔵 rolldown — Multi-pass transformer architecture limitation (3)
default/inject_jsxdefault/jsx_import_meta_propertydefault/jsx_import_meta_value🟠 oxc — Covered by minifier (1)
default/quoted_property_mangle🔵 rolldown — Irrelevant/will not support (4)
default/entry_names_no_slash_after_dir— no [dir] placeholderdefault/error_message_crash_stdin_issue2913— stdin not supporteddefault/line_limit_minified— lineLimit will not be supporteddefault/line_limit_not_minified— lineLimit will not be supported🔵 rolldown — CSS bundling not supported (10) — #4271
dce/tree_shaking_js_with_associated_css(+ 6 variants)default/entry_names_chunk_names_ext_placeholderdefault/legal_comments_modify_indentdefault/metafile_no_bundleloader/loader_data_url_text_cssRollup tests
Ignored tests (100) — behavior differences (excluding 37 ported tests)
Source:
packages/rollup-tests/src/ignored-tests.js🔵 rolldown — Build timing difference (3) — rolldown builds on
bundle.generate/writevsrollup()rollup@hooks@supports buildStart and buildEnd hooksrollup@hooks@supports warnings in buildStart and buildEnd hooksrollup@hooks@passes errors to the buildEnd hook🔵 rolldown — import.meta.url polyfill difference (5)
rollup@function@import-meta-url-brollup@form@import-meta-urlrollup@form@resolve-import-meta-url-exportrollup@form@resolve-import-meta-urlrollup@function@import-meta-url-with-compact🔵 rolldown — Module type guessing difference (3)
rollup@function@non-js-extensionsrollup@function@error-parse-unknown-extensionrollup@function@error-parse-json🔵 rolldown — Bundle assignment not supported (8)
rollup@function@error-file-name-absolute-pathrollup@function@error-file-name-deep-traversalrollup@function@error-file-name-dot-dotrollup@function@error-file-name-escaped-via-filename-propertyrollup@function@error-file-name-path-traversal-pluginrollup@function@error-file-name-windows-absolute-pathrollup@function@file-name-double-dot-prefix-is-validrollup@function@file-name-leading-dot-slash-is-valid🔵 rolldown — Warning/error differences (22)
rollup@function@plugin-hook-filtersrollup@function@generate-bundle-mutationrollup@function@missing-entry-exportrollup@hooks@Throws when using the "file" option for multiple chunksrollup@function@cannot-call-external-namespacerollup@function@cannot-call-internal-namespacerollup@function@warning-const-reassignrollup@function@namespace-reassign-import-failsrollup@function@namespace-update-import-fails🔵 rolldown — Plugin dependencies (5)
rollup@function@no-treeshake-reactrollup@function@strip-bom-1rollup@form@supports-core-jsrollup@form@supports-es5-shimrollup@form@supports-es6-shim🔵 rolldown — Parallelism ordering (2)
rollup@hooks@assigns chunk IDs before creating outputBundle chunksrollup@function@external-resolved🔵 rolldown —
external: truenot supported (3)rollup@function@external-namespace-and-default-reexport-compat2rollup@function@external-namespace-and-default-reexport-compat3rollup@function@external-namespace-and-default-reexport-compat🔵 rolldown — Test infra (3)
rollup@function@preserve-symlinkrollup@function@symlinkrollup@form@sourcemaps-inline🔵 rolldown — Other behavior differences (9)
rollup@hooks@Throws when not specifying "file" or "dir"rollup@function@bundle-facade-orderrollup@function@argument-deoptimization@global-callsrollup@function@es5-class-called-without-newrollup@function@jsx@unknown-moderollup@function@jsx@unnecessary-import-sourcerollup@function@catch-rust-panicrollup@function@exports-are-not-definedrollup@function@dynamic-import-call-method-with-this-await🔵 rolldown — Treeshaking tests (278) — treeshaking algorithm differences
Source:
packages/rollup-tests/src/ignored-treeshaking-tests.js+ignored-treeshaking-tests.jsonAll 278 tests are rolldown — tree-shaking is implemented in rolldown's link stage.
49 manually listed tests in
ignored-treeshaking-tests.jscovering:229 auto-generated tests in
ignored-treeshaking-tests.jsoncovering:Full list in
packages/rollup-tests/src/ignored-treeshaking-tests.json.Passed but snapshot different (173) — functionally correct but different output
Source:
packages/rollup-tests/src/ignored-passed-snapshot-different-tests.js🔵 rolldown — Deconflict logic differences (~30)
rollup@form@catch-parameter-shadowingrollup@form@body-less-for-loopsrollup@form@import-specifier-deshadowingrollup@form@base64-deshadowrollup@form@conflicting-importsrollup@form@deconflict-format-specific-exportsrollup@form@deconflict-format-specific-globalsrollup@form@internal-conflict-resolutionrollup@form@large-var-cnt-dedupingrollup@form@deconflict-module-priority🔵 rolldown — Reexport handling (~20) — rolldown converts reexport to import+export
rollup@form@reexport-external-default-and-namerollup@form@reexport-external-default-and-namespacerollup@form@reexport-external-default-as-name-and-namerollup@form@reexport-external-defaultrollup@form@reexport-external-name-as-default2rollup@form@reexport-external-name-as-defaultrollup@form@reexport-external-namerollup@form@reexport-external-namespace-asrollup@form@reexport-external-namespacerollup@form@reexport-used-external-namespace-asrollup@form@external-export-tracing🔵 rolldown — Dynamic import inlining (~5)
rollup@form@dynamic-import-inliningrollup@form@dynamic-import-inlining-arrayrollup@form@inline-with-reexportrollup@form@nested-inlined-dynamic-importrollup@form@inlined-treeshaken-dynamic-import(from treeshaking json)🔵 rolldown — Class rendering differences (~15) —
class A→var A = classrollup@form@use-class-name-in-static-blockrollup@form@static-method-deoptimizationrollup@form@reassigned-exported-functions-and-classesrollup@form@computed-propertiesrollup@form@empty-statament-class-memberrollup@form@exported-class-declaration-conflictrollup@form@support-decorators-after-exportrollup@form@support-decorators-before-exportrollup@form@default-export-anonymous-class-extendsrollup@form@default-export-class🟠 oxc —
undefined→void 0replacement (2) — oxc_codegen behaviorrollup@form@proper-this-contextrollup@form@this-is-undefined🔵 rolldown — Sourcemap mapping differences (~8)
rollup@function@sourcemap-true-generatebundlerollup@function@sourcemap-inline-generatebundlerollup@form@sourcemaps-externalrollup@form@sourcemaps-hiddenrollup@sourcemaps@render-chunk-babilirollup@form@render-chunk-plugin-sourcemapsrollup@sourcemaps@transform-low-resolutionrollup@sourcemaps@namesrollup@sourcemaps@basic-support🔵 rolldown — Inlining/optimization differences (~20)
rollup@form@assignment-to-exportsrollup@form@deep-properties-accessrollup@form@deep-propertiesrollup@form@handles-async-awaitrollup@form@recursive-computed-membersrollup@form@recursive-multi-expressionsrollup@form@reexport-star-deshadowrollup@form@function-id-as-parameterrollup@form@remove-whitespace-of-logical-expressionrollup@form@pure-comment-scenarios-complexrollup@form@non-empty-block-statementrollup@form@nested-pure-commentsrollup@form@unary-expressions-preserve-constants🔵 rolldown — Other output differences (~70)
rollup@form@hoisted-vars-in-dead-branches— var hoisting happens in Rollup but not Rolldownrollup@form@export-__proto__— Rolldown uses__exporthelperrollup@function@emit-chunk-hash— hash value differencerollup@function@cycles-export-star— cycle handlingUnsupported features (219) — features not yet implemented
Source:
packages/rollup-tests/src/ignored-by-unsupported-features.md🔵 rolldown — Plugin-related (31)
NormalizedOptionsat hooks not compatible (2)loadhookastreturn not supported (2)resolveIdhookresolvedBynot supported (1)shouldTransformCachedModulehook not supported (1)resolveDynamicImporthookspecifier: AstNodenot supported (2)sequentialnot supported (2)renderDynamicImport/resolveFileUrl/resolveImportMetahooks not supported (3)PluginContext.parseallowReturnOutsideFunctionnot supported (1)PluginContext.cachenot supported (7)PluginContext.loadnot fully supported (4)maxParallelFileOpsnot supported (5)PluginContext.emitFileemit chunk partially supported (13)PluginContext.emitFileprebuilt chunk not supported (3)PluginContext.setAssetSourcenot supported (9)originalFileName/originalFileNamesnot supported (3)🔵 rolldown — Options-related (102)
output.formatsystemjs not supported (15)input.perfandbundle.getTimings()not supported (2)input.moduleContextnot supported (2)output.compactnot supported (4)output.validatenot supported (1)output.interopnot supported (16)Bundle.cachenot supported (2)output.generatedCodenot supported (21)output.preserveModulesnot compatible (11)output.manualChunksnot compatible (8)format: amdnot supported (3)output.sourcemapExcludeSourcesnot supported (1)output.sourcemapBaseUrlnot compatible (3)output.treeshake.presetnot supported (1)output.treeshake.moduleSideEffectnot compatible (2)ModuleInfonot compatible (8)🔵 rolldown — Features (86)
syntheticNamedExportsnot supported (25)use strictfrom function body (1)hasOwnPropertyexport handling (1)__proto__export handling (2)strictDeprecationsoption not supported (7)VALIDATION_ERROR,EMPTY_BUNDLE,ASSET_SOURCE_MISSING,UNUSED_EXTERNAL_IMPORT, etc.Summary