-
Notifications
You must be signed in to change notification settings - Fork 501
chore: add page on feature deprecations #2453
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,72 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| id: index | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| title: Feature deprecations | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sidebar_label: Feature deprecations | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This section lists deprecated behavior in Ory Kratos. Check this section regularly to avoid relying on deprecated functionality. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## 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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| <ConsoleLink route="project.settings.advanced" />. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+23
to
+25
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 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] 📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[grammar] ~24-~24: Use a hyphen to join words. (QB_NEW_EN_HYPHEN) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ## Stay informed | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+43
to
+70
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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. |
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -4,6 +4,7 @@ import { projectPaths, workspacesPaths } from "./console-nav-data" | |||||||||||||
|
|
||||||||||||||
| type ConsoleLinkProps = { | ||||||||||||||
| route: string | ||||||||||||||
| hash?: string | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| const flatConsolePaths = [...projectPaths, ...workspacesPaths].flatMap((p) => { | ||||||||||||||
|
|
@@ -33,7 +34,7 @@ const flatConsolePaths = [...projectPaths, ...workspacesPaths].flatMap((p) => { | |||||||||||||
| * @param route a (possible nested) accesor from the routes object | ||||||||||||||
|
||||||||||||||
| * @param route a (possible nested) accesor from the routes object | |
| * @param route a (possible nested) accessor from the routes object |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
| "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 `##...`.
Copilot
AI
Apr 24, 2026
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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").