Directus v10.9.0stable Released Feb 06, 2024
⚠️ Breaking Change Impact Score: 7/10

Directus v10.9.0 — Release Notes & Engineering Impact

Source available — automated, not human-reviewed

Component: directus · Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Breaking-change evidence from the source

  • ⚠️ Potential Breaking Changes - **@directus/api**
Read the original context ↗
Source flags breaking changes — review applicability
📄 .MD
⚡ Executive Summary (TL;DR)

Directus v10.9.0. Source highlight: ⚠️ Potential Breaking Changes

Who Does This Impact? (Role-Based Analysis)

💻 Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

📊 Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

⚙️ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

⚠️ Breaking Changes & Deprecations (1)

  • ⚠️ Potential Breaking Changes - **@directus/api**

✨ New Features & Capabilities (6)

  • Enabled theme override permissions to be set on a per role basis (#20899 by @ComfortablyCoding)
  • Added focal point support for images (#20768 by @DanielBiegler)
  • Added a hash display (#20883 by @ComfortablyCoding)
  • Added enable/disable support for bundle type extensions (#20940 by @ComfortablyCoding)
  • Prevented loading of sidebar details (revisions, comments, shares etc) until they are opened (#20848 by @ComfortablyCoding)
  • Added an icon and icon color option for the select dropdown interface choices, added an icon and icon color option for label display choices and added default colors for the status field display (#20782 by @ComfortablyCoding)

🔧 Bug Fixes & Patches (6)

  • Fixed issue of not being able to insert or filter big integer fields via GraphQL (#20888 by @mahendraHegde)
  • Fixed an issue that would prevent prefix-based casted values in environment variables not to be extracted properly. (#21218 by @mahendraHegde)
  • Fixed collection meta fields sometimes not showing and saving properly (#20912 by @DanielBiegler)
  • Added `useSdk` composable for use in the App and extensions (#20811 by @br41nslug)
  • Fixed the system theme overrides interface color rules to refresh on external changes (#20951 by @ComfortablyCoding)
  • Added option in the translation interface for opening the splitview by default (#21160 by @DanielBiegler)
📄 View Raw Release Notes (Original Developer Log)
### ⚠️ Potential Breaking Changes - **@directus/api** - Updated exif-reader (used for image Exif extraction) to v2 ([#20820](https://github.com/directus/directus/pull/20820) by @paescuj) - **@directus/env** - Move environment handling to new tested directus/env package and use it in the api ([#20985](https://github.com/directus/directus/pull/20985) by @rijkvanzanten) - **@directus/sdk** - Dropped the ability to import parts of the SDK through scoped entrypoints to prevent issues with TypeScript based libraries consuming the SDK. ([#21206](https://github.com/directus/directus/pull/21206) by @rijkvanzanten) To migrate away, please update your scoped imports of @directus/sdk to use the root, for example: ```js // Before import { createDirectus } from '@directus/sdk'; import { rest } from '@directus/sdk/rest'; // After import { createDirectus, rest } from '@directus/sdk'; ``` ### ✨ New Features & Improvements - **@directus/app** - Enabled theme override permissions to be set on a per role basis ([#20899](https://github.com/directus/directus/pull/20899) by @ComfortablyCoding) - Added focal point support for images ([#20768](https://github.com/directus/directus/pull/20768) by @DanielBiegler) - Added a hash display ([#20883](https://github.com/directus/directus/pull/20883) by @ComfortablyCoding) - Added enable/disable support for bundle type extensions ([#20940](https://github.com/directus/directus/pull/20940) by @ComfortablyCoding) - Prevented loading of sidebar details (revisions, comments, shares etc) until they are opened ([#20848](https://github.com/directus/directus/pull/20848) by @ComfortablyCoding) - Added an icon and icon color option for the select dropdown interface choices, added an icon and icon color option for label display choices and added default colors for the status field display ([#20782](https://github.com/directus/directus/pull/20782) by @ComfortablyCoding) - **@directus/api** - Enabled theme override permissions to be set on a per role basis ([#20899](https://github.com/directus/directus/pull/20899) by @ComfortablyCoding) - Added focal point support for images ([#20768](https://github.com/directus/directus/pull/20768) by @DanielBiegler) - Added enable/disable support for bundle type extensions ([#20940](https://github.com/directus/directus/pull/20940) by @ComfortablyCoding) - Added support for IP ranges and CIDR notations for IP access & deny lists ([#20971](https://github.com/directus/directus/pull/20971) by @licitdev) - Removed admin only restriction for extension read operations ([#20914](https://github.com/directus/directus/pull/20914) by @ComfortablyCoding) - Made events from `directus_versions` system collection (Content Versioning) available via WebSockets ([#20865](https://github.com/directus/directus/pull/20865) by @yassilah) - Prevented queueing any extension reloads if a reload job is pending ([#20849](https://github.com/directus/directus/pull/20849) by @ComfortablyCoding) - Fixed issue of not being able to insert or filter big integer fields via GraphQL ([#20888](https://github.com/directus/directus/pull/20888) by @mahendraHegde) - **@directus/extensions** - Added enable/disable support for bundle type extensions ([#20940](https://github.com/directus/directus/pull/20940) by @ComfortablyCoding) - **@directus/env** - Fixed an issue that would prevent prefix-based casted values in environment variables not to be extracted properly. ([#21218](https://github.com/directus/directus/pull/21218) by @mahendraHegde) ### 🐛 Bug Fixes & Optimizations - **@directus/app** - Fixed collection meta fields sometimes not showing and saving properly ([#20912](https://github.com/directus/directus/pull/20912) by @DanielBiegler) - Added `useSdk` composable for use in the App and extensions ([#20811](https://github.com/directus/directus/pull/20811) by @br41nslug) - Fixed the system theme overrides interface color rules to refresh on external changes ([#20951](https://github.com/directus/directus/pull/20951) by @ComfortablyCoding) - Added option in the translation interface for opening the splitview by default ([#21160](https://github.com/directus/directus/pull/21160) by @DanielBiegler) - Changed the hard-coded default to current user language in field translation language selector ([#21065](https://github.com/directus/directus/pull/21065) by @FloMaetschke) - Added visual indicator for invalid values in search-input filter rows ([#21023](https://github.com/directus/directus/pull/21023) by @DanielBiegler) - Disabled field permissions to be set for a collections minimal required fields ([#20901](https://github.com/directus/directus/pull/20901) by @ComfortablyCoding) - Ensured unconfigured tables are not displayed/selectable as releated collection ([#20756](https://github.com/directus/directus/pull/20756) by @khako) - Fixed an issue where the field filter in search interface didn't hide non-matching nested fields ([#20457](https://github.com/directus/directus/pull/20457) by @Voldemorten) - Ensured long collection names are not overflowing permission table on Access Control page ([#21120](https://github.com/directus/directus/pull/21120) by @paescuj) - Updated exif-reader (used for image Exif extraction) to v2 ([#20820](https://github.com/directus/directus/pull/20820) by @paescuj) - Prevented changing primary keys to nullable ([#20874](https://github.com/directus/directus/pull/20874) by @mahendraHegde) - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Disabled non-editable permission actions for editing on Access Control page ([#20988](https://github.com/directus/directus/pull/20988) by @paescuj) - Fixed custom field presentation in system collections ([#20910](https://github.com/directus/directus/pull/20910) by @DanielBiegler) - Added field note & template for wysiwyg-html interface ([#20921](https://github.com/directus/directus/pull/20921) by @DanielBiegler) - Added target \_blank to links in form-field notes ([#20922](https://github.com/directus/directus/pull/20922) by @DanielBiegler) - Prevented datetime picker to go off-screen and become unreachable ([#20879](https://github.com/directus/directus/pull/20879) by @paescuj) - Fixed visual inconsistencies in the tree view interface ([#21013](https://github.com/directus/directus/pull/21013) by @ComfortablyCoding) - Bumped date-fns from 3.0.1 to 3.0.5 ([#20846](https://github.com/directus/directus/pull/20846) by @dependabot) - Fixed an issue where the Directus version in the Settings area was displayed as "undefined" ([#20856](https://github.com/directus/directus/pull/20856) by @paescuj) - Fixed confirmation dialog not always showing top level ([#20952](https://github.com/directus/directus/pull/20952) by @ComfortablyCoding) - Added support for IP ranges and CIDR notations for IP access & deny lists ([#20971](https://github.com/directus/directus/pull/20971) by @licitdev) - Fixed displaying of icon fallbacks for card thumbnails ([#21143](https://github.com/directus/directus/pull/21143) by @DanielBiegler) - Updated the language selector of translation form to respect sort field of language collection if defined ([#21134](https://github.com/directus/directus/pull/21134) by @joselcvarela) - Changed the arrow for field details menu to always be placed on the left side ([#20881](https://github.com/directus/directus/pull/20881) by @paescuj) - Fixed issues with the form state when navigating between collection settings pages ([#20949](https://github.com/directus/directus/pull/20949) by @paescuj) - Fixed visual glitch in color of data-model collection-item collapse icon ([#20842](https://github.com/directus/directus/pull/20842) by @rijkvanzanten) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - **@directus/api** - Prevented changing primary keys to nullable ([#20874](https://github.com/directus/directus/pull/20874) by @mahendraHegde) - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Bumped date-fns from 3.0.1 to 3.0.5 ([#20846](https://github.com/directus/directus/pull/20846) by @dependabot) - Replaced the internal API Messenger with the new shared Bus from `@directus/memory` ([#20862](https://github.com/directus/directus/pull/20862) by @rijkvanzanten) - Fixed an issue that would cause the response hook to extract a different IP address from the rest of the API ([#21275](https://github.com/directus/directus/pull/21275) by @rijkvanzanten) - Fixed an issue that would cause the nullable state of columns to be lost on field updates in MySQL ([#20419](https://github.com/directus/directus/pull/20419) by @u12206050) - Adjusted extensions update endpoint to use permission rules for access check ([#20986](https://github.com/directus/directus/pull/20986) by @paescuj) - Fixed custom primary keys not being validated before creating an item ([#20839](https://github.com/directus/directus/pull/20839) by @ComfortablyCoding) - Allow updating custom fields for `directus_extensions` collection ([#20982](https://github.com/directus/directus/pull/20982) by @ComfortablyCoding) - Fixed `@keyv/redis` cache losing track of keys in high latency environments ([#21136](https://github.com/directus/directus/pull/21136) by @ComfortablyCoding) - Fixed invite email regression for new users ([#20891](https://github.com/directus/directus/pull/20891) by @br41nslug) - Fixed the unique name check for extension locations and extensions within bundles ([#20785](https://github.com/directus/directus/pull/20785) by @ComfortablyCoding) - Enabled updates of O2M entities via filter hook on parent level, ensured the payload of update action event reflects the actual updated value ([#20926](https://github.com/directus/directus/pull/20926) by @mahendraHegde) - Fixed big integer auto-incremented primary key not being reset in PostgreSQL ([#20867](https://github.com/directus/directus/pull/20867) by @mahendraHegde) - Fixed GraphQL errors not containing correct extension code for basic errors ([#20873](https://github.com/directus/directus/pull/20873) by @mahendraHegde) - Fixed adding a new role on user update ([#20913](https://github.com/directus/directus/pull/20913) by @ComfortablyCoding) - Fixed an issue where users would be suspended when authenticating while Redis is temporarily unavailable ([#20958](https://github.com/directus/directus/pull/20958) by @joselcvarela) - Bumped oracledb from 6.2.0 to 6.3.0 ([#20847](https://github.com/directus/directus/pull/20847) by @dependabot) - Use official abbreviation "Exif" instead of "EXIF" ([#21030](https://github.com/directus/directus/pull/21030) by @paescuj) - Move environment handling to new tested directus/env package and use it in the api ([#20985](https://github.com/directus/directus/pull/20985) by @rijkvanzanten) - Changed schema snapshot sort ordering of Fields/Relations to creation order ([#20704](https://github.com/directus/directus/pull/20704) by @connorwinston) - Optimized extension auto-reload behaviour and fixed auto-reload for local package extensions ([#21111](https://github.com/directus/directus/pull/21111) by @paescuj) - Bumped @types/qs from 6.9.10 to 6.9.11 ([#20845](https://github.com/directus/directus/pull/20845) by @dependabot) - **@directus/composables** - Added `useSdk` composable for use in the App and extensions ([#20811](https://github.com/directus/directus/pull/20811) by @br41nslug) - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Loosened the peer dependencies constraints ([#21233](https://github.com/directus/directus/pull/21233) by @paescuj) - **@directus/constants** - Added `useSdk` composable for use in the App and extensions ([#20811](https://github.com/directus/directus/pull/20811) by @br41nslug) - **@directus/extensions-sdk** - Added `useSdk` composable for use in the App and extensions ([#20811](https://github.com/directus/directus/pull/20811) by @br41nslug) - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Fixed the unique name check for extension locations and extensions within bundles ([#20785](https://github.com/directus/directus/pull/20785) by @ComfortablyCoding) - **@directus/types** - Added focal point support for images ([#20768](https://github.com/directus/directus/pull/20768) by @DanielBiegler) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Loosened the peer dependencies constraints ([#21233](https://github.com/directus/directus/pull/21233) by @paescuj) - Renamed legacy role's `ip_whitelist` to `ip_access` ([#20970](https://github.com/directus/directus/pull/20970) by @licitdev) - **@directus/sdk** - Added focal point support for images ([#20768](https://github.com/directus/directus/pull/20768) by @DanielBiegler) - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Updated SDK filter operator typing ([#21083](https://github.com/directus/directus/pull/21083) by @br41nslug) - Updated SDK query type and added type documentation ([#21261](https://github.com/directus/directus/pull/21261) by @br41nslug) - Configured sourcemaps to use source from GitHub instead of inlining, reducing the size of the package ([#20927](https://github.com/directus/directus/pull/20927) by @paescuj) - Fixed SDK fields formatting in withSearch ([#20859](https://github.com/directus/directus/pull/20859) by @br41nslug) - **@directus/components** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Loosened the peer dependencies constraints ([#21233](https://github.com/directus/directus/pull/21233) by @paescuj) - **create-directus-extension** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **create-directus-project** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/data-driver-postgres** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/data-sql** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/data** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/env** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/extensions** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Fixed the unique name check for extension locations and extensions within bundles ([#20785](https://github.com/directus/directus/pull/20785) by @ComfortablyCoding) - Loosened the peer dependencies constraints ([#21233](https://github.com/directus/directus/pull/21233) by @paescuj) - **@directus/memory** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Fixed handling of Bus messages with Redis ([#20884](https://github.com/directus/directus/pull/20884) by @paescuj) - **@directus/random** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/release-notes-generator** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/storage-driver-cloudinary** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/storage-driver-local** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/storage-driver-s3** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/storage-driver-supabase** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/storage** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/stores** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Loosened the peer dependencies constraints ([#21233](https://github.com/directus/directus/pull/21233) by @paescuj) - **@directus/themes** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Loosened the peer dependencies constraints ([#21233](https://github.com/directus/directus/pull/21233) by @paescuj) - **@directus/update-check** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Fixed the update check to account for empty response ([#21193](https://github.com/directus/directus/pull/21193) by @paescuj) - **@directus/utils** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Bumped date-fns from 3.0.1 to 3.0.5 ([#20846](https://github.com/directus/directus/pull/20846) by @dependabot) - Updated Vue to v3.4.15 ([#21217](https://github.com/directus/directus/pull/21217) by @paescuj) - Move environment handling to new tested directus/env package and use it in the api ([#20985](https://github.com/directus/directus/pull/20985) by @rijkvanzanten) - Loosened the peer dependencies constraints ([#21233](https://github.com/directus/directus/pull/21233) by @paescuj) - **@directus/validation** - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - **@directus/specs** - Use official abbreviation "Exif" instead of "EXIF" ([#21030](https://github.com/directus/directus/pull/21030) by @paescuj) - Renamed legacy role's `ip_whitelist` to `ip_access` ([#20970](https://github.com/directus/directus/pull/20970) by @licitdev) ### 📝 Documentation - Updated exif-reader (used for image Exif extraction) to v2 ([#20820](https://github.com/directus/directus/pull/20820) by @paescuj) - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) - Added enable/disable support for bundle type extensions ([#20940](https://github.com/directus/directus/pull/20940) by @ComfortablyCoding) - Added support for IP ranges and CIDR notations for IP access & deny lists ([#20971](https://github.com/directus/directus/pull/20971) by @licitdev) - Replaced the internal API Messenger with the new shared Bus from `@directus/memory` ([#20862](https://github.com/directus/directus/pull/20862) by @rijkvanzanten) - Use official abbreviation "Exif" instead of "EXIF" ([#21030](https://github.com/directus/directus/pull/21030) by @paescuj) - Added docs for focal point support ([#20768](https://github.com/directus/directus/pull/20768) by @DanielBiegler) - Added note about possibily required dependencies in NPM Quickstart ([#21195](https://github.com/directus/directus/pull/21195) by @estheragbaje) - Added a note to warn users about NextJS's default caching in fetch ([#21265](https://github.com/directus/directus/pull/21265) by @estheragbaje) - Updated useItems composable example with the required parameters ([#21194](https://github.com/directus/directus/pull/21194) by @estheragbaje) - Updated required Node.js version ([#20939](https://github.com/directus/directus/pull/20939) by @emahuni) - Added npm installation to quickstart guide ([#20836](https://github.com/directus/directus/pull/20836) by @estheragbaje) - Updated docs landing page to include sidebar and new framework guides. ([#21116](https://github.com/directus/directus/pull/21116) by @phazonoverload) - Enriched the SDK storage example ([#21232](https://github.com/directus/directus/pull/21232) by @br41nslug) ### 🧪 Blackbox Tests - Updated dependencies ([#21221](https://github.com/directus/directus/pull/21221) by @paescuj) ### 📦 Published Versions - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `[email protected]` - `[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]` - `@directus/[email protected]`