fix: suppress inner content warning when children prop is forwarded#15269
Merged
dummdidumm merged 2 commits intosveltejs:mainfrom Feb 6, 2026
Merged
Conversation
When a +layout.svelte passes children to a child component via
shorthand ({children}) or explicit prop (children={children}),
the "inner content will not be rendered" warning no longer fires.
Closes sveltejs#13504
🦋 Changeset detectedLatest commit: acb0b5a The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
dummdidumm
requested changes
Feb 6, 2026
Comment on lines
157
to
169
| // Recreate the markup children detection logic for testing (mirrors warning_preprocessor in vite/index.js) | ||
| /** | ||
| * @param {string} content | ||
| * @returns {boolean} | ||
| */ | ||
| function has_children(content) { | ||
| return ( | ||
| content.includes('<slot') || | ||
| content.includes('{@render') || | ||
| content.includes('{children}') || | ||
| content.includes('children={') | ||
| ); | ||
| } |
Member
There was a problem hiding this comment.
No, this is a very bad idea, this will drift. If we want tests for this then the logic in vite/index.js should be extracted out into a function in utils.js and be imported/tested here
FrankFMY
commented
Feb 6, 2026
Contributor
Author
FrankFMY
left a comment
There was a problem hiding this comment.
Done — extracted has_children into utils.js and imported it in both index.js and the test file.
dummdidumm
approved these changes
Feb 6, 2026
Merged
benmccann
pushed a commit
that referenced
this pull request
Feb 12, 2026
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @sveltejs/adapter-netlify@6.0.0 ### Major Changes - breaking: `platform.context` is now the [modern Netlify Functions (\[#15203\](#15203)) context](https://docs.netlify.com/build/functions/api/#netlify-specific-context-object) Previously, this was the [AWS Lambda-style context](https://github.com/netlify/primitives/blob/c1ae30f2745f0a73e26e83334695e205a04ab47d/packages/functions/prod/src/function/handler_context.ts). If you were using this in your app (unlikely), you will need to update your code to read from new fields. ### Minor Changes - feat: Migrate to the modern Netlify Functions API ([#15203](#15203)) The Netlify adapter now generates "v2" Netlify Functions, which uses modern standards (ESM, `Request`, `Response`) instead of the legacy "Lambda-compatible" or "v1" format. Under the hood, this greatly simplifies the adapter code and improves maintainability. For more details on features this unlocks for your SvelteKit app, see <https://developers.netlify.com/guides/migrating-to-the-modern-netlify-functions/>. - feat: allow configuring redirects in `netlify.toml` ([#15203](#15203)) The limitation of only being able to configure redirects via the `_redirects` file has been removed. ### Patch Changes - fix: populate `App.Platform` with `context` property ([#15203](#15203)) - Updated dependencies \[[`37293a5`](37293a5), [`5d05ca6`](5d05ca6), [`ed69b77`](ed69b77), [`b1fc959`](b1fc959), [`159aece`](159aece), [`c690579`](c690579), [`dc8cf2d`](dc8cf2d), [`ace2116`](ace2116), [`0f38f49`](0f38f49)]: - @sveltejs/kit@2.51.0 ## @sveltejs/kit@2.51.0 ### Minor Changes - feat: add `scroll` property to `NavigationTarget` in navigation callbacks ([#15248](#15248)) Navigation callbacks (`beforeNavigate`, `onNavigate`, and `afterNavigate`) now include scroll position information via the `scroll` property on `from` and `to` targets: - `from.scroll`: The scroll position at the moment navigation was triggered - `to.scroll`: In `beforeNavigate` and `onNavigate`, this is populated for `popstate` navigations (back/forward) with the scroll position that will be restored, and `null` for other navigation types. In `afterNavigate`, this is always the final scroll position after navigation completed. This enables use cases like animating transitions based on the target scroll position when using browser back/forward navigation. - feat: `hydratable`'s injected script now works with CSP ([#15048](#15048)) ### Patch Changes - fix: put preloads before styles ([#15232](#15232)) - fix: suppress false-positive inner content warning when children prop is forwarded to a child component ([#15269](#15269)) - fix: `fetch` not working when URL is same host but different than `paths.base` ([#15291](#15291)) - fix: navigate to hash link when base element is present ([#15236](#15236)) - fix: avoid triggering `handleError` when redirecting in a remote function ([#15222](#15222)) - fix: include `test` directory in generated `tsconfig.json` alongside existing `tests` entry ([#15254](#15254)) - fix: generate `tsconfig.json` using the value of `kit.files.src` ([#15253](#15253)) ## @sveltejs/adapter-cloudflare@7.2.7 ### Patch Changes - fix: error if `_routes.json` is in the `/static` public directory ([#12821](#12821)) - fix: correctly handle pathnames found in the `_redirects` file ([#12821](#12821)) - Updated dependencies \[[`37293a5`](37293a5), [`5d05ca6`](5d05ca6), [`ed69b77`](ed69b77), [`b1fc959`](b1fc959), [`159aece`](159aece), [`c690579`](c690579), [`dc8cf2d`](dc8cf2d), [`ace2116`](ace2116), [`0f38f49`](0f38f49)]: - @sveltejs/kit@2.51.0 ## @sveltejs/adapter-node@5.5.3 ### Patch Changes - fix: validate `ORIGIN` env var at startup ([#15045](#15045)) - chore(deps): update dependency `@rollup/plugin-commonjs` to v29 ([#14856](#14856)) - Updated dependencies \[[`37293a5`](37293a5), [`5d05ca6`](5d05ca6), [`ed69b77`](ed69b77), [`b1fc959`](b1fc959), [`159aece`](159aece), [`c690579`](c690579), [`dc8cf2d`](dc8cf2d), [`ace2116`](ace2116), [`0f38f49`](0f38f49)]: - @sveltejs/kit@2.51.0 ## @sveltejs/enhanced-img@0.10.1 ### Patch Changes - fix: replace erroneous `import.meta.DEV` with `import.meta.env.DEV` in generated code ([#15285](#15285)) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.
Summary
Fixes #13504
When a
+layout.svelteforwardschildrento a child component instead of rendering it directly with{@render children()}, the warning "<slot />or{@render ...}tag missing — inner content will not be rendered`" fires as a false positive.This PR suppresses the warning when
childrenis passed to a child component via:<Layout {children} /><Layout children={children} />As suggested by @elliott-with-the-longest-name-on-github in the issue discussion.
Changes
packages/kit/src/exports/vite/index.js— Extendhas_childrencheck to detect{children}andchildren={patterns in markuppackages/kit/src/exports/vite/static_analysis/utils.spec.js— Add unit tests for children forwarding detectionTest plan
pnpm -F @sveltejs/kit test:unit— 424 tests passedpnpm run format— clean