-
Notifications
You must be signed in to change notification settings - Fork 795
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(hydrate): support server side rendering of components with listener #5877
Conversation
a06f64c
to
8b6b03d
Compare
PR built and packed!Download the tarball here: https://github.com/ionic-team/stencil/actions/runs/9752231365/artifacts/1657419397 If your browser saves files to
|
|
Path | Error Count |
---|---|
src/dev-server/index.ts | 37 |
src/dev-server/server-process.ts | 32 |
src/compiler/prerender/prerender-main.ts | 22 |
src/runtime/vdom/vdom-render.ts | 22 |
src/runtime/client-hydrate.ts | 20 |
src/runtime/vdom/test/patch.spec.ts | 19 |
src/runtime/vdom/test/util.spec.ts | 19 |
src/screenshot/connector-base.ts | 19 |
src/testing/puppeteer/puppeteer-element.ts | 19 |
src/dev-server/request-handler.ts | 15 |
src/compiler/prerender/prerender-optimize.ts | 14 |
src/compiler/sys/stencil-sys.ts | 14 |
src/runtime/connected-callback.ts | 14 |
src/sys/node/node-sys.ts | 14 |
src/compiler/prerender/prerender-queue.ts | 13 |
src/compiler/sys/in-memory-fs.ts | 13 |
src/runtime/set-value.ts | 13 |
src/compiler/output-targets/output-www.ts | 12 |
src/compiler/transformers/test/parse-vdom.spec.ts | 12 |
src/compiler/transformers/transform-utils.ts | 12 |
Our most common errors
Typescript Error Code | Count |
---|---|
TS2322 | 338 |
TS2345 | 328 |
TS18048 | 188 |
TS18047 | 99 |
TS2722 | 27 |
TS2532 | 23 |
TS2531 | 19 |
TS2790 | 11 |
TS2454 | 10 |
TS2352 | 9 |
TS2769 | 8 |
TS2416 | 7 |
TS2538 | 4 |
TS2493 | 3 |
TS18046 | 2 |
TS2684 | 1 |
TS2430 | 1 |
Unused exports report
There are 15 unused exports on this PR. That's the same number of errors on main, so at least we're not creating new ones!
Unused exports
File | Line | Identifier |
---|---|---|
src/runtime/bootstrap-lazy.ts | 22 | setNonce |
src/screenshot/screenshot-fs.ts | 18 | readScreenshotData |
src/testing/testing-utils.ts | 198 | withSilentWarn |
src/utils/index.ts | 145 | CUSTOM |
src/utils/index.ts | 245 | NODE_TYPES |
src/utils/index.ts | 269 | normalize |
src/utils/index.ts | 7 | escapeRegExpSpecialCharacters |
src/compiler/app-core/app-data.ts | 25 | BUILD |
src/compiler/app-core/app-data.ts | 116 | Env |
src/compiler/app-core/app-data.ts | 118 | NAMESPACE |
src/compiler/fs-watch/fs-watch-rebuild.ts | 123 | updateCacheFromRebuild |
src/compiler/types/validate-primary-package-output-target.ts | 82 | satisfies |
src/compiler/types/validate-primary-package-output-target.ts | 82 | Record |
src/testing/puppeteer/puppeteer-declarations.ts | 496 | WaitForEventOptions |
src/compiler/sys/fetch/write-fetch-success.ts | 7 | writeFetchSuccessSync |
Issue number: resolves #29681 --------- ### Release Notes <details> <summary>ionic-team/stencil (@​stencil/core)</summary> ### [`v4.19.2`](https://togithub.com/ionic-team/stencil/blob/HEAD/CHANGELOG.md#-4192-2024-07-02) [Compare Source](https://togithub.com/ionic-team/stencil/compare/v4.19.1...v4.19.2) ### Bug Fixes * **hydrate:** partially revert [#5838](ionic-team/stencil#5838) ([#5876](ionic-team/stencil#5876)) ([dfbc340](ionic-team/stencil@dfbc340)) * **hydrate:** support server side rendering of components with listener ([#5877](ionic-team/stencil#5877)) ([2c5b7f8](ionic-team/stencil@2c5b7f8)), fixes [#5869](ionic-team/stencil#5869) * **testing:** add testing sub module to export map ([#5873](ionic-team/stencil#5873)) ([bb2e04f](ionic-team/stencil@bb2e04f)), fixes [#5871](ionic-team/stencil#5871) and [#5868](ionic-team/stencil#5868) </details>
What is the current behavior?
Server side rendering fails when the component has a event listener attached to it. e.g.:
Culprit here was that
addHostEventListeners
was called withoutthis
attached to it, causing the function to throw an error and stopping the vdom annotation process to continue, leaving some nested components without annotations which caused double render.GitHub Issue Number: fixes #5869
What is the new behavior?
Attach
this
context and require this in the TypeScript definition so this error can be caught during development.Documentation
n/a
Does this introduce a breaking change?
Testing
Added an e2e test for this.
Other information
n/a