[BUGFIX] DocumentFragment support - #21551
Open
NullVoxPopuli wants to merge 5 commits into
Open
NullVoxPopuli wants to merge 5 commits into
NullVoxPopuli wants to merge 5 commits into
Conversation
NullVoxPopuli
force-pushed
the
nvp/in-element-document-fragment
branch
from
August 7, 2026 21:46
18e14b8 to
ddfe7b2
Compare
Contributor
📊 Size reportTarball size — dist/dev 0.5%↑
dist/prod 0.5%↑
smoke-tests/v2-app-template/dist 0.8%↑
smoke-tests/v2-app-hello-world-template/dist 0.7%↑
🤖 This report was automatically generated by wyvox/pkg-size |
NullVoxPopuli
marked this pull request as ready for review
August 7, 2026 22:00
NullVoxPopuli
force-pushed
the
nvp/in-element-document-fragment
branch
2 times, most recently
from
August 12, 2026 14:16
babb5d7 to
7c8cb4e
Compare
NullVoxPopuli
commented
Aug 12, 2026
Contributor
Author
There was a problem hiding this comment.
someone's editor doesn't strip unneeded invisible characters :P
NullVoxPopuli
commented
Aug 12, 2026
|
|
||
| `{{in-element}}` requires a single positional argument: | ||
|
|
||
| - `destinationElement` -- the DOM element to render into. It must exist at the time |
Contributor
Author
There was a problem hiding this comment.
meaningful change here
NullVoxPopuli
force-pushed
the
nvp/in-element-document-fragment
branch
from
August 12, 2026 14:19
7c8cb4e to
704c772
Compare
NullVoxPopuli
marked this pull request as draft
August 18, 2026 16:52
This comment was marked as outdated.
This comment was marked as outdated.
NullVoxPopuli
commented
Aug 18, 2026
NullVoxPopuli-ai-agent
pushed a commit
to NullVoxPopuli-ai-agent/ember.js
that referenced
this pull request
Aug 19, 2026
Continuation of emberjs#21551. `{{fragment}}` inserted the fragment's children and returned bounds around them. Inserting a DocumentFragment empties it, so the fragment was no longer an address that later renders could target: `{{#in-element fragment}}` after `{{fragment}}` rendered into a detached fragment and nothing appeared. Rendering a fragment now brackets its children with a pair of comment markers and records that pair as the fragment's region. `{{#in-element fragment}}` renders into the region instead of the fragment, so content lands where the fragment was rendered, stays reactive, and stays between its own markers while sibling regions keep their place. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
NullVoxPopuli
force-pushed
the
nvp/in-element-document-fragment
branch
from
August 19, 2026 19:09
a515761 to
e449a97
Compare
{{#in-element}} with DocumentFragment targetsDocumentFragment support - pairity with Element placed via {{ }} and via {{#in-element}}
Contributor
Author
|
Deploy preview: https://test-ember-source-nvp-in-ele.limber-glimdown.pages.dev/ |
BobrImperator
added a commit
to mainmatter/ember.js
that referenced
this pull request
Sep 2, 2026
NullVoxPopuli
commented
Sep 3, 2026
| { | ||
| input: (test, isHTML) => { | ||
| if (isHTML) { | ||
| return test.makeFragment([test.makeElement('p', 'one'), test.makeElement('p', 'two')]); |
Contributor
Author
There was a problem hiding this comment.
kinda funny we've been testing with fragments all this time, but had no way to actually see them
NullVoxPopuli
marked this pull request as ready for review
September 3, 2026 13:21
DocumentFragment support - pairity with Element placed via {{ }} and via {{#in-element}}DocumentFragment support
17 tasks
NullVoxPopuli
removed this pull request from stack #21593
September 9, 2026 22:31
…nt-what-happens-if-someone-mutates-fragement-while-in-use DocumentFragment tests when fragment is mutated manually during render
…nt-chaos-tests DocumentFragment Chaos Tests
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a feature gap, because we already support
{{domNode}}that someone used createElement with, and the limitations of that should be the same here with a fragmentContinuation of:
{{#in-element}}with DocumentFragment targets, continued #21550Which is a continuation of:
{{#in-element}}with DocumentFragment targets #21253This is required to unblock using shadow-dom with out whack hacks.
See:
Demo of this PR working (REPL)
test code for the repl
REPL deploy info
CI run: https://github.com/NullVoxPopuli/limber/actions/runs/31221384086
Preview PR: NullVoxPopuli/limber#2211
REPL with this change: https://test-ember-source-nvp-in-ele.limber-glimdown.pages.dev/
Perf is good.
Out of scope
insertBeforevalues other thannull/undefined(unchanged fromElementdestinations).