Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Web Link Laravel Package

symfony/web-link

Symfony WebLink component helps manage link relationships between resources. Create and serialize HTTP Link headers for preload, prefetch, and resource hints (HTML5/Web standards), enabling better performance via HTTP/2 push and client hints.

View on GitHub
Deep Wiki
Context7

Manages links between resources

Frequently asked questions about Web Link
How do I integrate Symfony WebLink into a Laravel application to preload critical CSS/JS files?
Use Laravel middleware to inject Link headers. For example, create a middleware like `InjectWebLinks` that appends a `Link` header with `rel='preload'` and the asset path. The middleware can be applied to specific routes or globally via the `$middleware` array in `app/Http/Kernel.php`. The package’s `HttpHeaderSerializer` formats the headers correctly for HTTP/2 push compatibility.
Does Symfony WebLink support Laravel’s service container for dependency injection?
Yes, bind the `GenericLinkProvider` as a singleton in Laravel’s service container (e.g., in a service provider’s `register()` method). This allows you to inject the provider into controllers, middleware, or other services. You can also dynamically fetch links from databases or config files using Laravel’s dependency injection.
What Laravel versions are compatible with symfony/web-link?
Symfony WebLink is framework-agnostic but works seamlessly with Laravel 8.x, 9.x, and 10.x. Ensure your PHP version (8.1+) matches Symfony’s requirements. Check the [Symfony documentation](https://symfony.com/doc/current/web_link.html) for version-specific notes, as newer Symfony releases may require PHP 8.2+.
Can I use WebLink to implement HATEOAS links for Laravel APIs?
Absolutely. WebLink supports custom link types, including HATEOAS. Create links with `rel` values like `next`, `prev`, or `related`, then serialize them into API responses. This works well with Laravel’s API resources or JSON:API packages. Example: `new Link('next', '/api/users?page=2')`.
How do I test WebLink headers in Laravel’s HTTP tests?
Use Laravel’s `actingAs()` or `withoutMiddleware()` to test header injection. Assert headers with `$response->headers->get('Link')` and validate the serialized output against expected W3C-compliant formats. Mock external resources (e.g., CDN assets) with Laravel’s `HttpTests` trait or Guzzle HTTP client.
Are there security risks with dynamically generated Link headers in production?
Yes, validate `href` attributes to prevent SSRF or XSS. Whitelist allowed `rel` values (e.g., `['preload', 'prefetch']`) and restrict domains using Laravel’s `ValidatesWhen` or custom validators. Always use absolute URLs for external resources and avoid user-controlled input in link generation.
How does WebLink improve Core Web Vitals like LCP and FID?
WebLink optimizes LCP by preloading critical resources (e.g., fonts, CSS) via `rel='preload'`, reducing render-blocking delays. For FID, prefetching non-critical assets (`rel='prefetch'`) ensures smoother interactions. Combine with HTTP/2 server push (configured via Nginx/Apache) for maximum impact. Test with Lighthouse CI or WebPageTest.
What’s the difference between `preload` and `prefetch` in WebLink?
`preload` is for high-priority resources (e.g., fonts, critical CSS) that block rendering, while `prefetch` is for low-priority assets (e.g., future pages, lazy-loaded images). Use `preload` for above-the-fold content and `prefetch` for background optimization. WebLink serializes both into compliant Link headers.
Can I cache WebLink headers to reduce runtime overhead?
Yes, cache precomputed links using Laravel’s cache system (e.g., `Cache::remember()`). Store serialized headers or link providers in memory/Redis for high-traffic routes. Invalidate cache when assets or configurations change (e.g., via `Cache::forget()` in asset update events).
Are there alternatives to Symfony WebLink for Laravel?
For Link headers, alternatives include `spatie/link-header` (Laravel-specific) or `league/uri` for manual header construction. For HTTP/2 push, consider server-level solutions like Nginx’s `proxy_ssl_server_name` or Varnish. Symfony WebLink stands out for its W3C compliance, extensibility (microformats), and seamless Laravel integration.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata