Version 5.2.0
October 9, 2026
Added
- Each element link type (Entry, Asset, Category, User, Product, Variant) now has a selection condition in the field settings. It uses the same condition builder as Craft's relation fields. The condition filters the element select modal, and it is checked again on save. A link to an element that doesn't match is refused, including an element ID posted straight to the form.
Fixed
- Custom link type labels set in the field settings now show in the link type menu. Before this, the menu always used the type's default name.
- Element sources saved as a list are now stored as a list. Before this, they were saved as one comma-joined string that the element select modal couldn't use.
- The "Allow multiple links" switch in the field settings now shows and hides the Min/Max Links inputs. Before this, its script looked for an input name and an element ID that Craft's field settings had namespaced, so it never found them.
Version 5.1.2
October 5, 2026
Links now refuse to render script. If a Custom link of yours used a
javascript:URL other thanjavascript:void(0)orjavascript:;, or a custom attribute namedon…, it now renders with no URL, or without that attribute. Custom attributes no longer render on fields with Show Advanced off, and no longer replace an attribute the link sets itself (target,rel,class,id…).
Security
- Anybody who could edit an entry could save a Custom link to
javascript:…, or a custom attribute such asonmouseover, andlinkrendered it into the page. Links with ajavascript:,vbscript:ordata:URL now fail validation, and any that are already stored render with no URL. Custom attribute names are checked the same way on save and on render.javascript:void(0)andjavascript:;are still allowed. - Custom attributes rendered even when the field's Show Advanced setting was off, where editors couldn't see them. They're now ignored there.
Version 5.1.1
July 19, 2026
Fixed
- Fixed a fatal error when running any built-in migration (Hyper, Linkit, Typed Link Field, or Craft's native Link field). The migration runner read each source field record with object syntax when the records are arrays, so it errored before migrating anything.
- Fixed the Site link type erroring when the target site has no base URL configured; it now resolves to no URL instead of failing.
Version 5.1.0
July 7, 2026
Added
- Email link type now has an optional subject line, encoded into the
mailto:URL as?subject=. The subject is available in Twig (via the resolved URL), API/JSON output (subject), and GraphQL (via the resolvedurl).
Version 5.0.2
July 7, 2026
Fixed
- Fixed links saved through the control panel coming out with a null destination. The field now maps the CP form's
values[<type>]/elements[<type>]inputs onto the value and target element it stores, so URLs, emails, and other links save correctly. Element links now also capture their target on first save and when changed or cleared in the control panel.
Version 5.0.1
June 23, 2026
Fixed
- Fixed field inputs rendering as escaped HTML markup (element selects, lightswitch, and nested link blocks) by marking the form macro output as raw
Version 5.0.0
June 11, 2026
Added
- Initial release
- 12 built-in link types: URL, Email, Phone, SMS, Custom, Site, Entry, Asset, Category, User, Product, Variant
- Hybrid storage with JSON content column and relations table for element links
- Single and multi-link field modes
- Automatic element resolution for element links (entries, assets, etc.)
- GraphQL support
- Custom link type registration via events
- Migration commands for Hyper, Linkit, Typed Link Field, and native Craft Link fields
- Advanced link attributes: ARIA label, title, URL suffix, CSS classes, HTML ID, rel, custom attributes
- Twig variable for reverse element lookups