Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions docs/kratos/deprecations/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
id: index
title: Feature Deprecations
sidebar_label: Feature Deprecations
Comment thread
vinckr marked this conversation as resolved.
Outdated
---

This section lists all behavior that has been deprecated in Ory Kratos. It is recommended to check this section regularly to stay
up-to-date with the latest changes and to avoid relying on deprecated functionality in your implementation. While Ory Kratos is
designed to be backward compatible, some improvements require changes to the underlying implementation, which may lead to the
deprecation of certain functionality.
Comment thread
vinckr marked this conversation as resolved.
Outdated

Ory is committed to maintaining a high level of quality and performance in our products, and deprecating features is a rare but
necessary step to ensure that we can continue to innovate and improve our offerings. We understand that deprecations can be
disruptive, and we strive to provide clear communication and ample time for users to adapt to changes. We encourage users to
review the deprecation information provided in this section and to reach out to our support channels if they have any questions or
concerns about the deprecation of features in any Ory product.
Comment thread
vinckr marked this conversation as resolved.
Outdated

## Who does this apply to?

Users of the Ory Network, Ory Kratos (open source) and the OEL (Ory Enterprise License) are affected by this section.

## How to use this section

Each entry in this section provides information about the deprecated feature, including:

- A brief description of the feature and its purpose.
- The reason for deprecation, if available.
- The version in which the feature was deprecated.
- Any recommended alternatives or migration paths, if applicable.

If you're using an Ory Network project, your configuration will not change, unless you have explicitly disabled the deprecated
feature via a project level feature flag. To check which flags are currently enabled, go to
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammar: "project level" should be hyphenated as "project-level" when used as a compound modifier ("project-level feature flag").

Suggested change
feature via a project level feature flag. To check which flags are currently enabled, go to
feature via a project-level feature flag. To check which flags are currently enabled, go to

Copilot uses AI. Check for mistakes.
<ConsoleLink route="project.settings.advanced" />.
Comment on lines +23 to +25
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix minor grammar: “project level” → “project-level”.

Hyphenate “project-level” for consistent compound-adjective formatting.

🛠️ Proposed fix
-If you're using an Ory Network project, your configuration will not change, unless you have explicitly disabled the deprecated
-feature via a project level feature flag. To check which flags are currently enabled, go to
+If you're using an Ory Network project, your configuration will not change, unless you have explicitly disabled the deprecated
+feature via a project-level feature flag. To check which flags are currently enabled, go to
 <ConsoleLink route="project.settings.advanced" />.

[r a i s e _ m i n o r _ i s s u e]

[guidelines_check]
As per static analysis hint: “Use a hyphen to join words.” (QB_NEW_EN_HYPHEN)

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
If you're using an Ory Network project, your configuration will not change, unless you have explicitly disabled the deprecated
feature via a project level feature flag. To check which flags are currently enabled, go to
<ConsoleLink route="project.settings.advanced" />.
If you're using an Ory Network project, your configuration will not change, unless you have explicitly disabled the deprecated
feature via a project-level feature flag. To check which flags are currently enabled, go to
<ConsoleLink route="project.settings.advanced" />.
🧰 Tools
🪛 LanguageTool

[grammar] ~24-~24: Use a hyphen to join words.
Context: ...led the deprecated feature via a project level feature flag. To check which flags...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/kratos/deprecations/index.mdx` around lines 23 - 25, Replace the
unhyphenated compound adjective "project level" with the hyphenated form
"project-level" in the sentence that references the ConsoleLink component
(ConsoleLink route="project.settings.advanced") so the phrase reads "...unless
you have explicitly disabled the deprecated feature via a project-level feature
flag." This ensures consistent compound-adjective formatting across the
deprecations page.


If you're self-hosting Ory Kratos (either through open source or the OEL), you should review your configuration and codebase to
identify any usage of deprecated features before upgrading to a new version. This will help you avoid any potential issues that
may arise from the removal of deprecated features in future releases.

## Staying Informed
Comment thread
vinckr marked this conversation as resolved.
Outdated

Subscribe to the [Ory Changelog](https://changelog.ory.com) to receive updates on new releases, including information about
deprecated features and their removal timelines. Additionally, consider joining the Ory community on Slack or GitHub to stay
engaged with other users and developers, and to get support for any questions or issues related to deprecated features.

## Impacted functionality

### Admin session extension API (`faster_session_extend`)

**Who is impacted by this change?**
Comment thread
vinckr marked this conversation as resolved.
Outdated

This improvement may impact users who are using the `/admin/sessions/{id}/extend` endpoint ([`extendSession`](../reference/api#tag/identity/operation/extendSession) SDK operation) to
extend their users' sessions. The new implementation may result in faster response times and improved performance when extending
sessions.

**Why was this change made?**
Comment thread
vinckr marked this conversation as resolved.
Outdated

The change was made to improve the performance and efficiency of the session extension process. By decoupling the session
extension from the retrieval of the updated session information, we can reduce the processing time and resource usage for
extending sessions, especially in scenarios with high traffic or large session data.

**How to adapt to this change?**
Comment thread
vinckr marked this conversation as resolved.
Outdated

If your application is using the updated session returned by the `/admin/sessions/{id}/extend` endpoint after the session
extension, you will need to update your implementation to retrieve the updated session information separately, using the
`/admin/sessions/{id}` endpoint ([`getSession`](../reference/api#tag/identity/operation/getSession) SDK operation) after the session extension.

After you reviewed your usage of this API, follow the instructions below based on your deployment type to ensure that you are
benefiting from the improved session extension process.

<Tabs>
<TabItem value="network" label="Ory Network">
Go to <ConsoleLink route="project.settings.advanced" hash="kratos_feature_flags_faster_session_extend" /> and enable the
"Faster session extension" feature flag to benefit from this improvement.
</TabItem>
<TabItem value="self-hosted" label="Self-hosted (OSS or OEL)">
Starting with [Ory Kratos v1.3.0](https://github.com/ory/kratos/releases/tag/v1.3.0), the faster session extension process is
enabled by default. If you need to disable this feature for any reason, you can set the `feature_flags.faster_session_extend`
configuration option to `false` in your Kratos configuration file.
Comment on lines +43 to +70
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This entry is framed as an "improvement" and focuses on "benefiting" from it, but the page is about deprecated behavior. It would be clearer to explicitly state what behavior is deprecated (e.g., relying on the extend endpoint returning the updated session) and, if known, the removal/default-change timeline so readers understand why they need to adapt.

Suggested change
This improvement may impact users who are using the `/admin/sessions/{id}/extend` endpoint ([`extendSession`](../reference/api#tag/identity/operation/extendSession) SDK operation) to
extend their users' sessions. The new implementation may result in faster response times and improved performance when extending
sessions.
- Why was this change made?
The change was made to improve the performance and efficiency of the session extension process. By decoupling the session
extension from the retrieval of the updated session information, we can reduce the processing time and resource usage for
extending sessions, especially in scenarios with high traffic or large session data.
- How to adapt to this change?
If your application is using the updated session returned by the `/admin/sessions/{id}/extend` endpoint after the session
extension, you will need to update your implementation to retrieve the updated session information separately, using the
`/admin/sessions/{id}` endpoint ([`getSession`](../reference/api#tag/identity/operation/getSession) SDK operation) after the session extension.
After you reviewed your usage of this API, follow the instructions below based on your deployment type to ensure that you are
benefiting from the improved session extension process.
<Tabs>
<TabItem value="network" label="Ory Network">
Go to <ConsoleLink route="project.settings.advanced" hash="kratos_feature_flags_faster_session_extend" /> and enable the
"Faster session extension" feature flag to benefit from this improvement.
</TabItem>
<TabItem value="self-hosted" label="Self-hosted (OSS or OEL)">
Starting with [Ory Kratos v1.3.0](https://github.com/ory/kratos/releases/tag/v1.3.0), the faster session extension process is
enabled by default. If you need to disable this feature for any reason, you can set the `feature_flags.faster_session_extend`
configuration option to `false` in your Kratos configuration file.
This deprecation impacts users who rely on the `/admin/sessions/{id}/extend` endpoint
([`extendSession`](../reference/api#tag/identity/operation/extendSession) SDK operation) returning the updated session after
extending a user's session. With `faster_session_extend` enabled, session extension is decoupled from returning the updated
session data.
- Why was this change made?
The previous behavior was deprecated to improve the performance and efficiency of the session extension process. By decoupling
session extension from retrieval of the updated session information, Ory Kratos can reduce processing time and resource usage,
especially in scenarios with high traffic or large session data.
- How to adapt to this change?
If your application uses the updated session returned by the `/admin/sessions/{id}/extend` endpoint, update your implementation
to retrieve the updated session separately after extending it by calling `/admin/sessions/{id}`
([`getSession`](../reference/api#tag/identity/operation/getSession) SDK operation).
After reviewing your usage of this API, follow the instructions below based on your deployment type to adopt the non-deprecated
behavior.
<Tabs>
<TabItem value="network" label="Ory Network">
Go to <ConsoleLink route="project.settings.advanced" hash="kratos_feature_flags_faster_session_extend" /> and enable the
"Faster session extension" feature flag.
</TabItem>
<TabItem value="self-hosted" label="Self-hosted (OSS or OEL)">
Starting with [Ory Kratos v1.3.0](https://github.com/ory/kratos/releases/tag/v1.3.0), the faster session extension behavior
is enabled by default. If your code still relies on `/admin/sessions/{id}/extend` returning the updated session, update it
to call `getSession` separately, or temporarily set `feature_flags.faster_session_extend` to `false` in your Kratos
configuration file.

Copilot uses AI. Check for mistakes.
</TabItem>
</Tabs>
7 changes: 5 additions & 2 deletions src/components/ConsoleLink/console-link.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { projectPaths, workspacesPaths } from "./console-nav-data"

type ConsoleLinkProps = {
route: string
hash?: string
}

const flatConsolePaths = [...projectPaths, ...workspacesPaths].flatMap((p) => {
Expand Down Expand Up @@ -33,7 +34,7 @@ const flatConsolePaths = [...projectPaths, ...workspacesPaths].flatMap((p) => {
* @param route a (possible nested) accesor from the routes object
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The JSDoc has a typo: "accesor" should be "accessor".

Suggested change
* @param route a (possible nested) accesor from the routes object
* @param route a (possible nested) accessor from the routes object

Copilot uses AI. Check for mistakes.
* @returns
*/
export default function ConsoleLink({ route }: ConsoleLinkProps) {
export default function ConsoleLink({ route, hash }: ConsoleLinkProps) {
const routeObj = route.split(".").reduce((p, c) => p[c], routes)
if (!routeObj || (typeof routeObj !== "string" && !("route" in routeObj))) {
throw new Error("Route not found: " + route)
Expand Down Expand Up @@ -61,7 +62,9 @@ export default function ConsoleLink({ route }: ConsoleLinkProps) {

// TODO: add current project resolution via the console API
const renderedRoute =
"https://console.ory.sh" + resolvedRoute.replace("[project]", "current")
"https://console.ory.sh" +
resolvedRoute.replace("[project]", "current") +
(hash ? `#${hash}` : "")
Comment on lines +65 to +67
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Normalize and encode the fragment before appending it.

Passing hash through verbatim makes links brittle: hash="#section" renders ##section, and spaces/special characters are not encoded. Normalizing the leading # and encoding the fragment avoids malformed console links.

Suggested fix
   const renderedRoute =
     "https://console.ory.sh" +
     resolvedRoute.replace("[project]", "current") +
-    (hash ? `#${hash}` : "")
+    (hash ? `#${encodeURIComponent(hash.replace(/^#/, ""))}` : "")
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"https://console.ory.sh" +
resolvedRoute.replace("[project]", "current") +
(hash ? `#${hash}` : "")
"https://console.ory.sh" +
resolvedRoute.replace("[project]", "current") +
(hash ? `#${encodeURIComponent(hash.replace(/^#/, ""))}` : "")
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/components/ConsoleLink/console-link.tsx` around lines 65 - 67, The URL
builder currently appends the fragment verbatim causing double hashes and
unencoded characters; update the fragment handling where the URL is constructed
(using resolvedRoute and the hash variable) to first normalize by stripping any
leading '#' from hash, then apply encodeURIComponent to the normalized fragment,
and finally append it only if non-empty as `#${encodedFragment}` so spaces and
special characters are encoded and you never produce `##...`.

Comment on lines 64 to +67
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hash is appended as #${hash} without any normalization/encoding. If a caller passes a value that already starts with # (or contains spaces/special chars), the resulting URL will be malformed. Consider stripping a leading # and applying encodeURIComponent to the fragment before concatenation.

Copilot uses AI. Check for mistakes.

return (
<>
Expand Down
1 change: 1 addition & 0 deletions src/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,7 @@ const kratos: SidebarItemsConfig = [
"identities/sign-in/login-hint",
"identities/sign-in/actions",
"identities/sign-in/code-submission-limit",
"kratos/deprecations/index",
],
},
{
Expand Down
Loading