Skip to content

Conversation

@Shazwazza
Copy link
Contributor

@Shazwazza Shazwazza commented Dec 16, 2025

Examine v4 is now producing builds and there will be quite a lot of breaking changes. In order to move forward, many of these breaking changes will persist and there may not be a clear upgrade path for older versions of Umbraco depending on what backward compat shims would be required and for how many previous version of Umbraco it could support.

Ideally, Examine 4 will be based off of Umbraco 17 the latest LTS release.

See Examine v4 release checklist: Shazwazza/Examine#420

The changes in this PR showcase the changes required in Umbraco to support the Examine v4 APIs. Currently, most of the changes were due to incorrectly assigned nullability operators. The breaking changes seen though are:

  • No more DirectoryFactoryBase
  • Facets are always on, they will be a 1st class citizen and as such the IDirectoryFactory must return a taxonomy directory too
  • Ctor changes for FileSystemDirectoryFactory

Do we need to support compat with v3?

This will be tricky considering facets are enabled by default. If we need to support that, we'll need to re-add back the UseTaxonomyIndex option which adds quite a lot of complexity. Else, maybe this targets Umbraco 18. Happy to discuss but really, the more we try to add backwards compat, the longer this is delayed and its already been delayed by years. If the community wishes to step in to make this happen at the Examine level, I'm more than happy to help review PRs.

Will also mean that none of the nice Examine v4 APIs could be used.

There's quite a few places in Umbraco that could be cleaned up and potentially some of this can be moved into Examine core. One of which is:

  • Each ValueSet value requires IEnumerable - in Umbraco, an array is created for this each time. Using Yield() might be better for performance, however eventually this will end up as an array, so Array Pooling should absolutely be used, either at the Umbraco level and/or Examine too. Ideally, some more thought is put into the way ValueSet works so allocations can remain minimal and the ease of creating a ValueSet (i.e. single values) is simpler without allocations. - Some of this work is already enabled in Examine v4 with this change Allow mix of single objects and enumerables in valueset Shazwazza/Examine#340 so will need to port some of that back to Umbraco ideally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant