Skip to content
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

Implement Early Hints for modulepreload #5674

Merged
merged 5 commits into from
May 21, 2024

Conversation

itsmatteomanf
Copy link
Contributor

@itsmatteomanf itsmatteomanf commented Apr 21, 2024

What this PR solves / how to test

This PR adds support for <link rel="modulepreload" href="..."> entries in the HTML, to allow them to be added to the Link header.

Author has addressed the following

  • Tests
    • TODO (before merge)
    • Included
    • Not necessary because this feature is already not tested
  • Changeset (Changeset guidelines)
    • TODO (before merge)
    • Included
    • Not necessary because:
  • Public documentation
    • TODO (before merge)
    • Cloudflare docs PR(s): https://github.com/cloudflare/cloudflare-docs/pull/...
    • Not necessary because it's an expansion of the current feature set, which is already expected. Some more docs might be nice in general, but not related to this specific addition.

@itsmatteomanf itsmatteomanf requested a review from a team as a code owner April 21, 2024 12:13
Copy link

changeset-bot bot commented Apr 21, 2024

🦋 Changeset detected

Latest commit: 6b823f7

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@cloudflare/pages-shared Patch

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

Copy link
Contributor

github-actions bot commented Apr 21, 2024

A wrangler prerelease is available for testing. You can install this latest build in your project with:

npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9172210492/npm-package-wrangler-5674

You can reference the automatically updated head of this PR with:

npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/5674/npm-package-wrangler-5674

Or you can use npx with this latest build directly:

npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9172210492/npm-package-wrangler-5674 dev path/to/script.js
Additional artifacts:
npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9172210492/npm-package-create-cloudflare-5674 --no-auto-update
npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9172210492/npm-package-cloudflare-kv-asset-handler-5674
npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9172210492/npm-package-miniflare-5674
npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9172210492/npm-package-cloudflare-pages-shared-5674
npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9172210492/npm-package-cloudflare-vitest-pool-workers-5674

Note that these links will no longer work once the GitHub Actions artifact expires.


wrangler@3.57.0 includes the following runtime dependencies:

Package Constraint Resolved
miniflare workspace:* 3.20240512.0
workerd 1.20240512.0 1.20240512.0
workerd --version 1.20240512.0 2024-05-12

Please ensure constraints are pinned, and miniflare/workerd minor versions match.

@petebacondarwin petebacondarwin added the pages Relating to Pages label May 20, 2024
Copy link
Contributor

@petebacondarwin petebacondarwin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually there are tests for this...

`"</a.png>; rel="preload"; as=image, </b.png>; rel="preload"; as=image"`

@petebacondarwin petebacondarwin self-requested a review May 20, 2024 09:38
@itsmatteomanf
Copy link
Contributor Author

@petebacondarwin I have merged the changes on main as there was a conflict, tell me if I red it wrong, but there is now a cache control header on the early hints cache, which makes sense, so merged it in here.

@itsmatteomanf
Copy link
Contributor Author

Actually there are tests for this...

`"</a.png>; rel="preload"; as=image, </b.png>; rel="preload"; as=image"`

Does it make sense to test for the specific module preload part? The preconnect one isn't checked either...

@petebacondarwin
Copy link
Contributor

I realised that we were not checking the linting on pages-shared, so I have just pushed an extra commit that cleans that up.
Meanwhile I think it is valuable to add a test for this new feature. It looks like it won't be too difficult. The fact that other features are not tested is not really a good argument for not testing new features.
I'm happy to add that test now, if you don't mind.

@itsmatteomanf
Copy link
Contributor Author

I'm happy to add that test now, if you don't mind.

Might make sense to just add the preconnect test, too? It's not hard to do and would cover all cases, should I or should you?

@petebacondarwin
Copy link
Contributor

I'm happy to add that test now, if you don't mind.

Might make sense to just add the preconnect test, too? It's not hard to do and would cover all cases, should I or should you?

If you have time, please do. Thanks.

@petebacondarwin
Copy link
Contributor

Added a small fixup commit because some snapshot tests needed updating. But otherwise looks good. We just need a review from a pages team member and then we are good to merge.

@petebacondarwin petebacondarwin merged commit f461855 into cloudflare:main May 21, 2024
19 checks passed
@itsmatteomanf itsmatteomanf deleted the patch-1 branch May 21, 2024 12:01
@WalshyDev
Copy link
Member

I'll get this released along with #5875 hopefully tomorrow or Thursday @itsmatteomanf
Appreciate it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pages Relating to Pages
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

None yet

3 participants