Problem/Motivation
The last release, 4.0.0-alpha6, was tagged 2024-12-11. Since then the 4.x branch has picked up fixes that are not in any release, the queue has accumulated 18 RTBC issues, and users keep asking for a new tag — see #2830988-56: [meta] 4.0.0 release roadmap, #2830988-57: [meta] 4.0.0 release roadmap and #2830988-59: [meta] 4.0.0 release roadmap.
The roadmap issue #2830988: [meta] 4.0.0 release roadmap has been open since 2016 and 22 of its 26 listed items are closed, which makes it hard to see what actually stands between us and a release. The gate that was set for beta in #2830988-19: [meta] 4.0.0 release roadmap — "the couple of remaining issues are or could be API-breaking changes, which should be resolved before we get to beta" — refers to #2830989: Use services instead of global functions, which was closed fixed in March 2024. That precondition has been met for two years.
This issue tracks the short list of work needed to get 4.0.0-beta1 out. It does not replace #2830988: [meta] 4.0.0 release roadmap, which stays as the longer roadmap to stable.
Proposed resolution
Tag 4.0.0-beta1 — not another alpha, and not stable.
Why beta and not another alpha: the API-breaking work that gated beta is done, GitLab CI is green on 4.x HEAD, and beta correctly signals that no further API breaks are planned for 4.0.0. Another alpha would ship the same code with less signal.
Why not stable yet:
- #3344587: Support for field hidden by condition losing its required status is an unresolved semantics decision: does a field hidden by a condition still validate as required? Whichever way it lands, it changes behaviour on existing sites, so it belongs before a stable tag rather than after one.
- A stable release activates security advisory coverage — the project is opted in per #2830988-36: [meta] 4.0.0 release roadmap, and beta releases are not covered. Taking that on is premature while #1561272: Conditionally required fields are not required is open at critical, and while the XSS concern raised in #3377983-8: Comparison of WYSIWYG field values fail because of HTML tags involved is unreviewed.
- Drupal 12 compatibility is unresolved (#3596497: Automated Drupal 12 compatibility fixes for conditional_fields 4.x-dev), so a stable 4.0.0 would need an immediate follow-up release anyway.
Remaining tasks
1. Land the RTBC backlog
18 issues are Reviewed & tested by the community, most of them small crash or warning fixes. Where an issue only has a patch, roll it into a merge request first so the pipeline runs. Merge in batches and re-run the test suite between batches.
Regression against the current release, highest priority:
- #3501575: TypeError: NestedArray::getValue(): Argument #2 ($parents) must be of type array, null given in ConditionalFieldsFormHelper::formFieldGetValues() — major, MR !81
Critical and major:
- #3574101: Field dependency Edit/Delete links point to wrong entity type — major, MR !96
- #3507266: Empty action sets field value to "undefined" — major, needs MR; requested for the roadmap in #2830988-57: [meta] 4.0.0 release roadmap
Warnings, type errors and validation bugs:
- #3495402: Warning: Trying to access array offset on value of type null in Drupal\conditional_fields\ConditionalFieldsFormHelper::formFieldGetValues() — MR !67
- #3505514: Undefined array key "#type" in /var/www/app/docroot/modules/contrib/conditional_fields/src/ConditionalFieldsFormHelper.php on line 618 — MR !71
- #3517815: [] operator not supported for strings in ConditionalFieldsFormHelper — MR !77
- #3512213: Wrong validation of required integer fields with value of "0" — MR !72
- #3438997: Field data array cannot be retrieved from form array by field name. — MR !100
- #3443731: Warning: Undefined array key "regex" in Drupal\conditional_fields\ConditionalFieldsFormHelper::evaluateDependency() (line 793 of modules/contrib/conditional_fields/src/ConditionalFieldsFormHelper.php). — MR !46
- #3245121: Variable type is string but applied schema class is Drupal\Core\Config\Schema\Sequence — MR !94
- #3391444: Warning: Undefined array key "#multiple" — needs MR
- #3308745: Entity reference conditionals store null values — needs MR
- #3503448: Interdependent field conditions not working: "Undefined" value set — needs MR
Performance, deprecations and one feature:
- #3573139: Plugin definitions not cached causing full annotation discovery on every request — MR !92
- #3374313: Allow to statically cache more than one DependencyHelper — needs MR
- #3494204: Call to deprecated function watchdog_exception(). — MR !65
- #3057831: Conditional Fields not avaialble for commerce product type — needs MR
Postponed, not blocking beta1:
- #3499371: Error addStateToGroup(): Argument #1 ($new_states) must be of type array, null given — postponed (maintainer needs more info). No path in 4.x passes
NULLtoaddStateToGroup(), and the reported backtrace's line numbers match no commit in the branch's history, so the crash came from a locally patched file. Re-rated Normal; see #5 comment #3499371-5: Error addStateToGroup(): Argument #1 ($new_states) must be of type array, null given for the analysis. Will be committed if a reproduction on unpatched 4.x-dev arrives.
2. Close out the two remaining beta gates from the old roadmap
- #3207751: URL validation of link field doesn't work — the committed "dirty fix" was reopened because it triggers validation errors on fields hidden by a condition. The open question in #3207751-17: URL validation of link field doesn't work is whether that fix is good enough to mark a beta. Proposal: yes. Declare it beta-sufficient, retarget the real fix to stable alongside #3344587: Support for field hidden by condition losing its required status, and check whether MR !109 on #3616106: Link field displays duplicate validation errors at fieldset, URI, and title levels supersedes it.
- #2859667: Conditional Required Field not Evaluating on Save with Autocomplete widget — at Needs work and dormant since February 2025. Proposal: not a beta blocker, move it to the stable list.
3. Decide the supported core versions
Drop#3617070: Drop Drupal 9 support and require Drupal >= 10.3^9fromcore_version_requirement, since Drupal 9 is end of life. The current value is^9 || ^10 || ^11.Decide on Drupal 12: either land MR !107 from #3596497: Automated Drupal 12 compatibility fixes for conditional_fields 4.x-dev and addGot MR !107 green and merged, so we will have D12 ready for the beta^12, or say explicitly in that issue that D12 support lands after beta1. Upgrade Status reports the module is not yet D12-compatible even with the automated changes, so shipping beta1 as^10 || ^11is acceptable.
4. Release
- Confirm the pipeline is green on 4.x after the merges.
- Update the issue summary of #2830988: [meta] 4.0.0 release roadmap to drop the closed items and show the remaining path to stable.
- Tag 4.0.0-beta1 and write the release notes.
Not in scope for beta1
These stay on #2830988: [meta] 4.0.0 release roadmap as the path to stable:
- #3344587: Support for field hidden by condition losing its required status — needs a documented decision plus FunctionalJavascript coverage before stable.
- #1561272: Conditionally required fields are not required — critical.
- #3105263: Support for Layout Builder — feature; the MR is at Needs review and still getting reports about reusable versus inline blocks.
- #3377983: Comparison of WYSIWYG field values fail because of HTML tags involved — the XSS concern raised in #3377983-8: Comparison of WYSIWYG field values fail because of HTML tags involved should move to a private security issue before the MR lands.
- #2859667: Conditional Required Field not Evaluating on Save with Autocomplete widget — see above.
Comments
Comment #2
joelpittetComment #3
joelpittet