Skip to content

Compiler output bloat #14241

@benmccann

Description

@benmccann

Describe the bug

My site outputs something like this:

	var picture_1 = $.child(a_2);
	var source_3 = $.child(picture_1);
	var source_4 = $.sibling(source_3);
	var source_5 = $.sibling(source_4);
	var img_2 = $.sibling(source_5);

After being built with @sveltejs/adapter-netlify, it is transformed to:

  var picture_1 = child(a_1);
  var source_3 = child(picture_1);
  var source_4 = sibling(source_3);
  var source_5 = sibling(source_4);
  sibling(source_5);

There's multiple problems here. The first is that this DOM walking code is inefficient. E.g. these lines:

	var source_4 = $.sibling(source_3);
	var source_5 = $.sibling(source_4);
	var img_2 = $.sibling(source_5);

Could be replaced with the method that gets the third sibling:

	var img_2 = $.sibling(source_3, 3);

The second is that Rollup (and maybe esbuild after that?) isn't removing the unused code. It removes img_2 as an unused variable, but leaves the whole chain of unused DOM creation code loading up to that point. Perhaps we haven't properly marked $.sibling as being pure or maybe there's some rollup bug here? Of course another alternative to fixing this would be to avoid creating it in the first place.

There's about a hundred instances of this on my page, so it's responsible for a pretty large portion of the output.

Reproduction

https://svelte.dev/playground/hello-world?version=5.1.13#H4sIAAAAAAAAA7VYbVPbOBD-KzoPH9oZFL-EBMIlmYEkvVJKXyil0PONR7HXtg5bciU5L-3w329k55U4JYXrJ7Ck3Wef1bOrnfwwGEnBODZeQ5JwNOYiCdALCKiC4KWxb4Q0AWkc__3DUNNMn9MLxv7c6iTLanIEidJrQyKhat3nTAFT0jg22tIXNFMo5UGeQNdlrqJpxoVCnnd28eH95dWg7518-jS48izPQ6HgKXKNmunRlEQgzREwLrWzmhxFrvGnduBzJrV9f9B7e3K5Zt9BruF512dXg9mi10vY--8p_-J5yLGs8T5a3-6_aqSNvZHyPFRvtcY_R7ArEU7zL6-OyMfbLQi9NHgX21_JTghONQeRqPTk890WhKtk7zy8OeQ7IdQrEZYufm59UB0fZ-9uc3Wi4ztsbOb4qzO8C5qnnocaDeuR-BqVCKL_9mzE7Xgbgjq_vEtpbyeEZjWHVjJOJ-FwC8LnQfzh-nZ4sRPCYSXC0sXPrY8qrafXH51Jqx_oAI6cjfhO3-1djgbq0vOQbTcPHgmwVQnRb52-uSHS3gLRhzBose-3u0HY1eXYDz9fe29u_92GwQ7-Em8v9nbEqC7IpZNHzKur7ZQHQZ4ILROnuamEV9n7wQ29DTWD-mNKsKvL7XQsBz1-J7dAfOOHe3DVc3aDqK7J00E0ODt_Y22BeJ18O7sMx-92g6guyqWPwrxtlr1eN3nWTgllRbtvS_AV5Qz5CZGy4xoMxtI1ij1XtQM6Wuzod4NQBmKxXR5YfLiqHTvdHk8zwqbocxYQBbJtxs7yuLl6fs17JGiA0uBY_8U-TyQ-QDJd-XRQRDJ8hJLoOJ1g20LpBJNc8ZVoXNX-A2OU8IhLJGOeJwGCiQIWoBEIRX2SJFOkOIIgAokIC1BMRoDGNFAxEjyP4mSKmhPEQxQDjWJVm-3NnNEAChdDQIyjlAtAKiYM2VbTyiboRWmE7MNmNnmJMC6SvYhtlW5eZGctdle1CYoFhB3XiJXK5LFpjsfj2vKR9Xlqusaqhau6bZpG60uuksLv_Kh6wu8fnizodVyjblkPPbuqpNNxjUZ9c5MkeucaGP-kg3t4wOy2TbK69IDp-umHtInPlaDDgjHJTKmIguW0gX2eZgkokNhupliCoCAxwSFlhPmURViAD3QEEtMAMMkywUckwXp-wWFAsOJ4CBFlOJdYCUoSk2h5JOCRo0YL6k6I601o4Ebg2HjoHDZx6Djh0UHdGTq2VYtVmqzz7a7TacuMsJXCKSrCNbqLbLVNfaKLFkTQnt28QJ8KJuikhi5nBNBZf4DmBIoBbB3pVf-ktpZYk6yWg_mgPp8gQSVAqgSGlG_RX0Z9lQvotiXPhQ9ICl-C0vrbHE_ukZ5bO65RDJAmGdHQNZD5uG1jw3YMw2w32-aGbcai0pSmEZoVy-aUcI9KjV-VGUCnlKsYBMkgV9SXrlE2h06jYc3aRaflaK_mIiVPL4FSy1CbkpiXmdedeX4beLgeCx5TJnGmN2lEeS7xHQ0YTCfYrluWZR06B09X7Rb-cw1raLQCjfbsC3RewN-gD4J-h9-sUJ-IIWd-TCh7rkSPniHR1jMkquexX9eonrDmIu0VSUA9nYWFMvWUNpem3Tr4BW1udAHwY1_kzI-LFDuWUzetA9NprGZ_2Yn9hKZEAQ6o9BMucwHmg2vcLrdVJnONRaC0rqwL_XoTJscgUMzHKM39GE15LtDMHmU8SXIF8jdrTj_MCR1RFpX8nys8Pe0-WXl6jn269Dbb8i7Sayyl97bIAyrvbdkV64uueNT6v7qiTruAXIGQRcaHuaQMpDRlLvVwSoa6N84XFaREwh1WfMoVwUPi3y2UqRso-DEOqUhxeZO4vEqsxY0tG9uH5pP65Vo-5goWhEr9zDv2Rfk7ylUR1D66KoPcWa-rX8v_2-ZskC_ne3M24Bv7hoKJMo6VyOH-n_v_ANGZCsxgEgAA

Logs

No response

System Info

svelte: ^5.1.13 => 5.1.13

Severity

annoyance

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions