# 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
