# CiviCRM 6.10.0 Released January 7, 2026; - **[Synopsis](#synopsis)** - **[Features](#features)** - **[Bugs resolved](#bugs)** - **[Miscellany](#misc)** - **[Credits](#credits)** ## <a name="synopsis"></a>Synopsis | *Does this version...?* | | |:--------------------------------------------------------------- |:-------:| | Fix security vulnerabilities? | no | | **Change the database schema?** | **yes** | | **Alter the API?** | **yes** | | **Require attention to configuration options?** | **yes** | | **Fix problems installing or upgrading to a previous version?** | **yes** | | **Introduce features?** | **yes** | | **Fix bugs?** | **yes** | ## <a name="features"></a>Features ### Core CiviCRM - **Afform - Add range slider input element ([33982](https://github.com/civicrm/civicrm-core/pull/33982))** Adds a new form input widget "Range Slider". - **Api4 - Allow GET params in ajax requests ([34054](https://github.com/civicrm/civicrm-core/pull/34054))** Allows get params in ajax requests e.g. `https://example.org/civicrm/ajax/api4/Participant/get?offset=100&limit=200` which can make rest requests a bit easier to write. - **APIv4 Explorer - Add refresh button ([34065](https://github.com/civicrm/civicrm-core/pull/34065))** Adds a button to refresh the results in the APIv4 Explorer. - **SearchUI - provide unified view of available Reports ([33611](https://github.com/civicrm/civicrm-core/pull/33611))** Updates the Reports list in SearchUI to a pluggable listing which can show old / new / custom reports. - **Afform - Allow behaviors to declare their own attributes ([34199](https://github.com/civicrm/civicrm-core/pull/34199))** Makes it so an afform behavior with advanced configuration can declare its own getAttributes function. - **New USPS REST API for address validation ([dev/core#5833](https://lab.civicrm.org/dev/core/-/issues/5833): [34346](https://github.com/civicrm/civicrm-core/pull/34346))** The USPS REST API is changing in January 2026. This change ensures CiviCRM will play nicely with the changes. - **Form Builder and Submission Tokens from the form processor ([dev/core#6170](https://lab.civicrm.org/dev/core/-/issues/6170): [33911](https://github.com/civicrm/civicrm-core/pull/33911))** Improves form processors for form builder. - **CRM_Core_Invoke - Basic support for $request and $response objects (PSR-7) ([34038](https://github.com/civicrm/civicrm-core/pull/34038))** Allows CiviCRM routes to define their inputs and outputs using $request and $response objects. - **Upgrader - Add some more helper functions ([34081](https://github.com/civicrm/civicrm-core/pull/34081))** Gets the extension upgrader closer to par with the functionality of the core upgrader, making it simpler for extension authors to write upgrade code. - **Extensions - Allow integration-extensions to be enabled automatically/as-needed ([34113](https://github.com/civicrm/civicrm-core/pull/34113))** Allows extensions to be enabled automatically as needed. - **Upgrader - Require CIVICRM_CRED_KEYS ([34241](https://github.com/civicrm/civicrm-core/pull/34241))** Makes CIVICRM_CRED_KEYS mandatory for all deployments. If its not defined in the civicrm.settings.php file, the web-upgrader blocks the upgrade. - **Test Extensions - Switch to mgmt:hidden ([34076](https://github.com/civicrm/civicrm-core/pull/34076))** Makes it easier to introduce test-only extensions for use in end-to-end tests. - **add functionality to save combinations of Afform filters ([33801](https://github.com/civicrm/civicrm-core/pull/33801))** Adds "SearchParamSet" entity which allows saving combinations of filter values on an Afform. - **crm-angular-js - support multiple modules space separated ([33995](https://github.com/civicrm/civicrm-core/pull/33995))** Makes it so multiple modules can be bootstrapped using <crm-angular-js> by passing their names space separated to modules attribute - **SearchKit/API - Nicer-formatted SQL ([34093](https://github.com/civicrm/civicrm-core/pull/34093))** Adds more linebreaks to the sql output in Api4/SearchKit which makes it easier to see the whole query without so much sideways scrolling. - **Riverlea - add `safe_css` param for "safe mode" ([33605](https://github.com/civicrm/civicrm-core/pull/33605))** Adds a URL param to disable dynamic CSS loading. Provides a get out of jail card if you somehow add some quirky variables to your active stream (like tiny tiny font) - **CustomField - Cleanup help text ([34200](https://github.com/civicrm/civicrm-core/pull/34200))** Improves the user interface by using popup help in place of descriptions to de-clutter the custom field form. - **allow using TEXT for serialized custom fields ([33932](https://github.com/civicrm/civicrm-core/pull/33932))** Makes it so one can specify data_type = TEXT in APIv4. - **LocationType - Improve admin form with toggles instead of checkboxes. ([34023](https://github.com/civicrm/civicrm-core/pull/34023))** Improves Location Type admin form by using toggles instead of checkboxes. - **CustomFields - Improve admin form with toggles instead of checkboxes. ([34020](https://github.com/civicrm/civicrm-core/pull/34020))** Improves Custom Field admin form by using toggles instead of checkboxes. - **CustomField - Add field type Toggle ([34055](https://github.com/civicrm/civicrm-core/pull/34055))** Makes the new Toggle input available as a custom field type. - **CustomField - Cleanup input types and labels on admin form ([34184](https://github.com/civicrm/civicrm-core/pull/34184))** Makes text and input types a bit more consistent on custom field admin forms. - **CustomField - Allow number fields to use checkbox/autocomplete widgets ([34170](https://github.com/civicrm/civicrm-core/pull/34170))** Enables numeric fields to use checkbox/autocomplete widgets (already supported in practice, it just wasn't an option on the form). - **Make option value and group fields importable ([34126](https://github.com/civicrm/civicrm-core/pull/34126))** Makes it so one can import option value and group fields. - **CoreForm - Support Toggle widget as a core input type ([34082](https://github.com/civicrm/civicrm-core/pull/34082))** Supports Toggle in entityType definitions, and demonstrates its use in the addField function, utilizing it on the ScheduleReminders form. - **AJAX error, API Request Authorization failed - simpler, clearer log messages ([33974](https://github.com/civicrm/civicrm-core/pull/33974))** Improves logging. - **Support 'String' datatype for EntityReference customfield (as required for Afform) ([34096](https://github.com/civicrm/civicrm-core/pull/34096))** Makes it so one can create Afform EntityReference custom fields and save the name of an afform into the field (it gets created as a string/varchar field). - **Allow int in `CRM_Utils_Time::setTime()` ([34062](https://github.com/civicrm/civicrm-core/pull/34062))** Allows UNIX timestamp as int in CRM_Utils_Time::setTime(). Allowing an int better fits to the return value of CRM_Utils_Time::time() and allows calls like CRM_Utils_Time::setTime(CRM_Utils_Time::time() + 1) - **CRM.alert - simple dialog implementation for frontend ([34122](https://github.com/civicrm/civicrm-core/pull/34122))** Adds something better than window.alert for frontend alerts. - **OAuthClient - Fire a hook whenever a token is received ([34058](https://github.com/civicrm/civicrm-core/pull/34058))** Defines a new hook, hook_civicrm_oauthToken, which fires whenever we receive a token via OAuth. This can be used to used to update related records. - **OAuthState - Allow updates ([34129](https://github.com/civicrm/civicrm-core/pull/34129))** Makes it so one can update OAuthState. - **OAuth Client - Facilitate services on the `connect.civicrm.org` bridge ([34130](https://github.com/civicrm/civicrm-core/pull/34130))** Allows a streamlined process for connecting to OAuth services through connect.civicrm.org, which is a bridge server with dynamic registration (etc). - **OAuth Client - Basic work toward a general "templates" property ([33540](https://github.com/civicrm/civicrm-core/pull/33540))** Adds a generic property in Civi\Api4\OAuthProvider where you can define additional templates (for payment-processors and other future applications). - **Admin UI ext: add Price Set admin ([34143](https://github.com/civicrm/civicrm-core/pull/34143))** Adds a SearchKit and FormBuilder to manage Price Set Options. - **Allow id attribute in ckeditor (HTMLPurifier) ([34059](https://github.com/civicrm/civicrm-core/pull/34059))** Small change to the HTML Purifier configuration to allow the id attribute in the ckeditor. ### CiviContribute - **Security fix: Add verification of IPN messages received from PayPal ([33670](https://github.com/civicrm/civicrm-core/pull/33670))** PayPal IPN validation is now in effect. This should not have any impact on operations but admins are advised to check things are working normally. - **RiverLea: adds support for Personal Campaign Pages / funding thermometer ([34197](https://github.com/civicrm/civicrm-core/pull/34197))** Adds RiverLea support for the PCP funding thermometer. ### CiviEvent - **Add participant ID to bearer token ([34035](https://github.com/civicrm/civicrm-core/pull/34035))** Makes it possible to autofill participant ID in formbuilder and pass the ID in a secure way in an URL. ### Drupal Integration - **make way to install CiviCRM when civicrm.settings.php file present ([115](https://github.com/civicrm/civicrm-drupal-8/pull/115) and [33796](https://github.com/civicrm/civicrm-core/pull/33796))** Makes it possible to install CiviCRM when there is an existing civicrm.settings.php present. ### Joomla Integration - **Joomla 5 compatibility (Work Towards [dev/joomla#54](https://lab.civicrm.org/dev/joomla/-/issues/54): [34069](https://github.com/civicrm/civicrm-core/pull/34069), [34068](https://github.com/civicrm/civicrm-core/pull/34068) and [33825](https://github.com/civicrm/civicrm-core/pull/33825))** Work towards Joomla 5 compatibility by resolving legacy Joomla CMS calls in CiviCRM core and modifies the CLI class to bootstrap Joomla first. ### Standalone Integration - **Standalone - PHP errors in AJAX context are extremely difficult to diagnose ([dev/core#6226](https://lab.civicrm.org/dev/core/-/issues/6226): [34202](https://github.com/civicrm/civicrm-core/pull/34202))** Makes the formatting of PHP errors the same as other exceptions. - **Make standalone roles (including permissions) a managed entity ([34039](https://github.com/civicrm/civicrm-core/pull/34039))** Makes standalone roles into a managed entity. ## <a name="bugs"></a>Bugs resolved ### Core CiviCRM - **Multivalued custom group of style tab crashes on Individual subtypes when group is for Contacts. ([dev/core#6122](https://lab.civicrm.org/dev/core/-/issues/6122): [34361](https://github.com/civicrm/civicrm-core/pull/34361))** - **Required Custom File field triggers required message on edit when unchanged ([dev/core#6124](https://lab.civicrm.org/dev/core/-/issues/6124): [34279](https://github.com/civicrm/civicrm-core/pull/34279))** - **"Email Invoice" does not honor CC/BCC for event-related contributions ([dev/core#6209](https://lab.civicrm.org/dev/core/-/issues/6209): [34088](https://github.com/civicrm/civicrm-core/pull/34088))** - **NULL values in civicrm_custom_field.name ([dev/core#6223](https://lab.civicrm.org/dev/core/-/issues/6223): [34145](https://github.com/civicrm/civicrm-core/pull/34145))** Makes custom_field.name required. - **error about managed entity every time clear cache ([dev/core#6228](https://lab.civicrm.org/dev/core/-/issues/6228): [34220](https://github.com/civicrm/civicrm-core/pull/34220))** - **Multivalued custom fields crash on submit ([dev/core#6245](https://lab.civicrm.org/dev/core/-/issues/6245): [34282](https://github.com/civicrm/civicrm-core/pull/34282))** - **Fatal Error on CiviCRM version 6.9.0 if using Smarty 2 ([dev/core#6249](https://lab.civicrm.org/dev/core/-/issues/6249): [34288](https://github.com/civicrm/civicrm-core/pull/34288))** - **Can't save preferences in 6.9 if a preference is defined in civicrm.settings.php ([dev/core#6251](https://lab.civicrm.org/dev/core/-/issues/6251): [34443](https://github.com/civicrm/civicrm-core/pull/34443) and [34442](https://github.com/civicrm/civicrm-core/pull/34442))** - **AdminUI - dont use popups when administering Payment Processors (for CiviConnect) ([34119](https://github.com/civicrm/civicrm-core/pull/34119))** - **FormBuilder - Ensure input type name is translated ([33972](https://github.com/civicrm/civicrm-core/pull/33972))** - **FormBuilder - dont add middle name by default when adding new Individual ([34049](https://github.com/civicrm/civicrm-core/pull/34049))** - **FormBuilder - Prevent "Error: missing field" on overridden field types ([34053](https://github.com/civicrm/civicrm-core/pull/34053))** - **Afform - Fix custom afform submission messages ([34430](https://github.com/civicrm/civicrm-core/pull/34430))** - **Afform - Ensure quote characters don't break inlineAfform ([34012](https://github.com/civicrm/civicrm-core/pull/34012))** - **Afform - Fix regression with rejected Autocomplete request via Authx ([34224](https://github.com/civicrm/civicrm-core/pull/34224))** - **Afform - Flush menu route when making a form public ([34285](https://github.com/civicrm/civicrm-core/pull/34285))** - **afSearchParamSet - css cleanup and improve rendering of values ([34161](https://github.com/civicrm/civicrm-core/pull/34161))** - **Fully hide hidden fields on Afforms ([34157](https://github.com/civicrm/civicrm-core/pull/34157))** - **Api4 - Ensure FKs to arbitrary fields work correctly ([34048](https://github.com/civicrm/civicrm-core/pull/34048))** - **Api4 - Fix Order.Create in Api4 Explorer ([34141](https://github.com/civicrm/civicrm-core/pull/34141))** - **Api4 - Fix query error when option values contain special characters ([34350](https://github.com/civicrm/civicrm-core/pull/34350))** - **SearchKit - Add 'module' key to entities ([34009](https://github.com/civicrm/civicrm-core/pull/34009))** - **SearchKit - Fix error in sortable columns ([34259](https://github.com/civicrm/civicrm-core/pull/34259))** - **RiverLea removes duplicate CSS Custom Properties from Thames ([34063](https://github.com/civicrm/civicrm-core/pull/34063))** - **RiverLea: removes extension version number from Civi 6.10 ([34061](https://github.com/civicrm/civicrm-core/pull/34061))** Stops giving RiverLea its own version number. - **riverlea frontend - wrap title as well as content ([34015](https://github.com/civicrm/civicrm-core/pull/34015))** - **RiverLea: restores ul/ol styles and spacing for .replace-plain wysiwyg regions ([34134](https://github.com/civicrm/civicrm-core/pull/34134))** - **riverlea - fix disappearing text in dark mode using .list-group-item ([34156](https://github.com/civicrm/civicrm-core/pull/34156))** - **RiverLea: fixes left padding size on small bootstrap buttons ([34163](https://github.com/civicrm/civicrm-core/pull/34163))** - **Riverlea: fixes visibility of items set to .disabled in dropdown ([34421](https://github.com/civicrm/civicrm-core/pull/34421))** - **River Lea: renames variable so it uses the correct component prefix ([34415](https://github.com/civicrm/civicrm-core/pull/34415))** - **Errors/Exceptions - Fix misleading message. Adding important details. ([34449](https://github.com/civicrm/civicrm-core/pull/34449))** - **PSR-7 - Normalize getPath(). Fix E2E test-failure. ([34247](https://github.com/civicrm/civicrm-core/pull/34247))** - **Avoid risks of group_concat ([34205](https://github.com/civicrm/civicrm-core/pull/34205))** - **afFieldset - filter out empty filter values when using operators ([34172](https://github.com/civicrm/civicrm-core/pull/34172))** - **Datepicker - Include "required" attribute ([34190](https://github.com/civicrm/civicrm-core/pull/34190))** - **Allow IS NULL / No Value for bools in SK ([34177](https://github.com/civicrm/civicrm-core/pull/34177))** - **Update Report Email Delivery help because you can only email to one recipient ([34148](https://github.com/civicrm/civicrm-core/pull/34148))** - **Pass through checkPermissions into get Dedupe critieria ([34138](https://github.com/civicrm/civicrm-core/pull/34138))** - **Use `Civi::log('queue_runner')` for queue runner ([34142](https://github.com/civicrm/civicrm-core/pull/34142))** - **Expose getSubmittedValues in AfformSubmit and AfformValidate events ([34103](https://github.com/civicrm/civicrm-core/pull/34103))** - **OAuthClient - Ensure that `state`s will eventually be cleaned up ([34047](https://github.com/civicrm/civicrm-core/pull/34047) and [34057](https://github.com/civicrm/civicrm-core/pull/34057))** - **Tighten up financial typing on function, inc apiv4 ([33929](https://github.com/civicrm/civicrm-core/pull/33929))** - **Fix Relationship Custom Field Bug In Search Kit and add test case ([34080](https://github.com/civicrm/civicrm-core/pull/34080))** - **Required radio button fields missing red asterisk ([34452](https://github.com/civicrm/civicrm-core/pull/34452))** - **ensure missing required field is named in error ([34123](https://github.com/civicrm/civicrm-core/pull/34123))** - **Don't crash when deleting ECK entity with custom fields ([34095](https://github.com/civicrm/civicrm-core/pull/34095))** - **Prevent deletion of addresses when country is default and no other values ([34176](https://github.com/civicrm/civicrm-core/pull/34176))** - **CustomFields - Deprecate 'min_multiple' ([34019](https://github.com/civicrm/civicrm-core/pull/34019))** Marks unused field as deprecated. - **Fix custom data type ([34256](https://github.com/civicrm/civicrm-core/pull/34256))** - **Fix crash if we have no tasks ([34104](https://github.com/civicrm/civicrm-core/pull/34104))** - **Fix [PHP Warning] Undefined array key "router" "navigation" ([34147](https://github.com/civicrm/civicrm-core/pull/34147))** - **Fix deprecation warning from RebuildMenuAndCaches ([34146](https://github.com/civicrm/civicrm-core/pull/34146))** - **search_kit - add notice that bulk updating multivalued field replaces existing values ([34050](https://github.com/civicrm/civicrm-core/pull/34050))** ### CiviCase - **Fix multiple clients case relationship missing ([34092](https://github.com/civicrm/civicrm-core/pull/34092))** ### CiviContribute - **PCPInfo: cleanup markup, show admin links to admins, fix tellafriend ([34168](https://github.com/civicrm/civicrm-core/pull/34168))** Fixes a few issues with the "PCP Info" page, i.e. an actual PCP page displayed to visitors and to those who created the PCP page. - **Edit Payment Processor - Prohibit changes to the "Type" ([34046](https://github.com/civicrm/civicrm-core/pull/34046))** - **Make sure we don't process Contribution entity in Formbuilder using generic entity save ([34073](https://github.com/civicrm/civicrm-core/pull/34073))** - **When financial account is the same before and after, treat payment method changes the same as for financial type changes ([dev/financial#230](https://lab.civicrm.org/dev/financial/-/issues/230): [31928](https://github.com/civicrm/civicrm-core/pull/31928))** - **"Edit Payment Processor" - Fix help. Replace redundant code with loop. ([34022](https://github.com/civicrm/civicrm-core/pull/34022))** - **Fix contribution page highlight ([34420](https://github.com/civicrm/civicrm-core/pull/34420))** ### CiviEvent - **Event registration page lets you complete a registration even if event end has past ([dev/core#6232](https://lab.civicrm.org/dev/core/-/issues/6232): [34231](https://github.com/civicrm/civicrm-core/pull/34231))** - **Event autocomplete on a front end page does not work ([dev/core#6196](https://lab.civicrm.org/dev/core/-/issues/6196): [34051](https://github.com/civicrm/civicrm-core/pull/34051))** - **remove references to the token {$participant_status} ([dev/core#6204](https://lab.civicrm.org/dev/core/-/issues/6204): [34075](https://github.com/civicrm/civicrm-core/pull/34075))** - **Replace participant_status smarty var with label ([34026](https://github.com/civicrm/civicrm-core/pull/34026))** - **Tidy up event fee form ([34102](https://github.com/civicrm/civicrm-core/pull/34102))** ### CiviMail - **Add some more known potential bounce patterns that should be classified as Spam type rather than the default of syntax and add unit test of the bounce pattern matching ([34191](https://github.com/civicrm/civicrm-core/pull/34191))** - **AdminUI - Fix deleting mailings ([34440](https://github.com/civicrm/civicrm-core/pull/34440))** ### Drupal Integration - **Make drupal 10/11 installs not fail ([34391](https://github.com/civicrm/civicrm-core/pull/34391))** - **Increase priority of service civicrmtheme.negotiator to make civicrmtheme work with other theme negotiator services (e.g. domain_theme_switch) ([114](https://github.com/civicrm/civicrm-drupal-8/pull/114))** ### Standalone Integration - **Added brackets to fix standalone User-ID check ([34079](https://github.com/civicrm/civicrm-core/pull/34079))** - **Riverlea: fix for settings menu not shown in standalone ([34040](https://github.com/civicrm/civicrm-core/pull/34040))** - **Standalone - don't create table if it already exists ([34008](https://github.com/civicrm/civicrm-core/pull/34008))** ## <a name="misc"></a>Miscellany - **CRM_Utils_JS - better unicode handling ([34007](https://github.com/civicrm/civicrm-core/pull/34007))** - **civicrm#31342 Refactor for the renew link conditions ([31364](https://github.com/civicrm/civicrm-core/pull/31364))** - **CRM.config.isFrontend - prefer `CRM_Utils_System::isFrontendPage` to `CRM_Core_Config::singleton()->userFrameworkFrontend` ([34120](https://github.com/civicrm/civicrm-core/pull/34120))** - **Add totalTaxAmount to deprecated message tokens ([34029](https://github.com/civicrm/civicrm-core/pull/34029))** - **Clean up pseudoconstant handling for membership_type_id on CRM_Financial_BAO_Order::saveLineItemEntity() ([34154](https://github.com/civicrm/civicrm-core/pull/34154))** - **crmDashboard - cleanup, free from page controller, add tests ([34118](https://github.com/civicrm/civicrm-core/pull/34118))** - **Api4 - Make `setUsage` function chainable ([34174](https://github.com/civicrm/civicrm-core/pull/34174))** - **Do logging more consistently in Core Payment processors ([34140](https://github.com/civicrm/civicrm-core/pull/34140))** - **RiverLea: big variable rename (#161) - appends '-color' to colors, renames -dash and -expand, renames sizes, adds ink+paper vars, other tidying ([34067](https://github.com/civicrm/civicrm-core/pull/34067))** - **Move participant validation out of registration forms into the Participant BAO ([30698](https://github.com/civicrm/civicrm-core/pull/30698))** - **Move addActivity call into on_behalf if ([34032](https://github.com/civicrm/civicrm-core/pull/34032))** - **Unshare formatSoftCreditParam ([34028](https://github.com/civicrm/civicrm-core/pull/34028))** - **Settings - Cleanup redundant variations of boolean metadata ([34084](https://github.com/civicrm/civicrm-core/pull/34084))** - **Add link to join docs ([34037](https://github.com/civicrm/civicrm-core/pull/34037))** - **Regenerate SQL file for PR#34191 ([34196](https://github.com/civicrm/civicrm-core/pull/34196))** - **Handle transaction outside shared function ([34031](https://github.com/civicrm/civicrm-core/pull/34031))** - **Ext - Run civix-upgrade on all core extensions ([34087](https://github.com/civicrm/civicrm-core/pull/34087) and [34089](https://github.com/civicrm/civicrm-core/pull/34089))** - **Update composer polyfills ([34036](https://github.com/civicrm/civicrm-core/pull/34036))** - **Use function rather than passing around isARefund ([34033](https://github.com/civicrm/civicrm-core/pull/34033))** - **RiverLea: removes orphaned variable --crm-page-width ([34152](https://github.com/civicrm/civicrm-core/pull/34152))** - **Finally remove deprecated loadRelatedObjects() ([34025](https://github.com/civicrm/civicrm-core/pull/34025))** - **Remove return value that is unused ([34027](https://github.com/civicrm/civicrm-core/pull/34027))** - **Remove hard coded directories in old function/files ([34206](https://github.com/civicrm/civicrm-core/pull/34206))** - **Remove obsolete IE-specific js code ([34201](https://github.com/civicrm/civicrm-core/pull/34201))** - **PHPUnit - Remove unused function ([34098](https://github.com/civicrm/civicrm-core/pull/34098))** - **PHPUnit - Remove reference to obsolete `checkInternalType` ([34094](https://github.com/civicrm/civicrm-core/pull/34094))** - **Afform - Remove non-functional POC permission code ([34226](https://github.com/civicrm/civicrm-core/pull/34226))** - **remove redundant CIVICRM_UF_HEAD ([87](https://github.com/civicrm/civicrm-joomla/pull/87))** - **Refactor CRM_Core_OptionValue::getFields() ([34151](https://github.com/civicrm/civicrm-core/pull/34151))** - **[REF] SearchKit - cleanup js with less lo-dash ([34217](https://github.com/civicrm/civicrm-core/pull/34217))** - **(REF) CRM_Core_Error - Extract formatting utils ([34207](https://github.com/civicrm/civicrm-core/pull/34207))** - **[REF] i18n: minor code cleanup ([34108](https://github.com/civicrm/civicrm-core/pull/34108))** - **REF: Convert if/else to switch for customfield type ([34133](https://github.com/civicrm/civicrm-core/pull/34133))** - **REF: Use API4 to retrieve membership types ([34090](https://github.com/civicrm/civicrm-core/pull/34090))** - **(REF) OAuth - Add more documentation (hook-stubs) ([34072](https://github.com/civicrm/civicrm-core/pull/34072))** - **REF: Simplify isEmailReceipt signature ([34044](https://github.com/civicrm/civicrm-core/pull/34044))** - **[REF] fix signature on isAuthorized call ([34018](https://github.com/civicrm/civicrm-core/pull/34018))** - **[REF] Api4 - Switch to EFv2 method instead of DAO for fetching title ([33996](https://github.com/civicrm/civicrm-core/pull/33996))** - **Update contributor-key.yml ([34071](https://github.com/civicrm/civicrm-core/pull/34071))** - **[NFC] Fix flaky event registration test ([34229](https://github.com/civicrm/civicrm-core/pull/34229))** - **(NFC) RouterTest - Fix false-negatives on WordPress ([34221](https://github.com/civicrm/civicrm-core/pull/34221))** - **[NFC] Backport 2025 back into 2025 ([34392](https://github.com/civicrm/civicrm-core/pull/34392))** - **[NFC] Mixin - Fix signature of alterSchemaField doc ([34286](https://github.com/civicrm/civicrm-core/pull/34286))** - **UnitTests - Minor improvement to getTestRecords function ([34150](https://github.com/civicrm/civicrm-core/pull/34150))** - **[Test Only] Clean up test add additional created entities to clean up. ([34194](https://github.com/civicrm/civicrm-core/pull/34194))** ## <a name="credits"></a>Credits This release was developed by the following code authors: AGH Strategies - Alice Frumin; Benjamin W; Business & Code - Alain Benbassat; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CompuCo - Muhammad Shahrukh; Coop SymbioTIC - Mathieu Lutfy, Shane Bill; CSES (Chelmsford Science and Engineering Society) - Adam Wood; Dave D; Fuzion - Luke Stewart; Jens Schuppe; JMA Consulting - Monish Deb, Seamus Lee; Joinery - Allen Shaw; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Nicol Wistreich; Outlandish - Rasmus Winter; Progressive Technology Project - Jamie McClelland; Richard Baugh; Skvare - Mark Hanna, Sunil Pawar; Stiftung Pfadfinden - Andreas Lietz; Third Sector Design - William Mortada; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sander-Green Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: All In Appli.com - Guillaume Sorel; Artful Robot - Rich Lott; ASMAC (American Society of Music Arrangers and Composers) - Jeff Kellem; CiviCoop - Jaap Jansma; civiservice.de - Gerhard Weber, Martin Correll; Coop SymbioTIC - Samuel Vanhove; Francesc Bassas i Bullich; JMA Consulting - Joe Murray; Lemniscus - Noah Miller; Sjoerd Langkemper; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin Cristiano; 5Knoten - Peter Klausing