From d113b9d720f11a2120313b556a96f6787969877e Mon Sep 17 00:00:00 2001 From: melindafekete Date: Tue, 27 May 2025 14:37:32 +0200 Subject: [PATCH] Update navigation --- website/docs/api-overview.mdx | 2 +- .../use-cases/a-b-testing.md | 18 +- .../use-cases/gradual-rollout.md | 22 +- .../how-to-create-feature-toggles.md | 1 + .../use-cases/scaling-unleash.mdx | 2 +- .../use-cases/security-compliance.md | 2 +- .../use-cases/trunk-based-development.md | 2 +- .../user-management-access-controls.md | 2 +- .../how-to-setup-provisioning-with-okta.md | 1 + .../docs/reference/activation-strategies.md | 2 +- .../reference/api-tokens-and-client-keys.mdx | 2 +- website/docs/reference/change-requests.mdx | 2 +- website/docs/reference/command-menu.md | 2 +- .../reference/custom-activation-strategies.md | 2 +- .../reference/environment-import-export.mdx | 2 +- .../docs/reference/feature-toggle-variants.md | 2 +- website/docs/reference/feature-toggles.mdx | 2 +- website/docs/reference/impression-data.md | 2 +- website/docs/reference/login-history.mdx | 2 +- website/docs/reference/maintenance-mode.mdx | 2 +- .../reference/project-collaboration-mode.md | 2 +- website/docs/reference/public-signup.mdx | 2 +- website/docs/reference/rbac.md | 2 +- website/docs/reference/resource-limits.mdx | 2 +- website/docs/reference/service-accounts.md | 2 +- website/docs/reference/strategy-variants.mdx | 2 +- website/docs/reference/technical-debt.md | 2 +- website/docs/reference/unleash-context.md | 4 +- .../feature-flag-best-practices.mdx | 1 + .../docs/topics/what-is-a-feature-flag.mdx | 2 +- .../understanding-unleash/data-collection.md | 1 + .../the-anatomy-of-unleash.mdx | 2 +- website/sidebars.ts | 952 +++++++++--------- 33 files changed, 542 insertions(+), 508 deletions(-) diff --git a/website/docs/api-overview.mdx b/website/docs/api-overview.mdx index bb3721d875..2f7794e323 100644 --- a/website/docs/api-overview.mdx +++ b/website/docs/api-overview.mdx @@ -1,5 +1,5 @@ --- -title: Unleash Documentation +title: API overview description: "Unleash is the largest open-source feature management platform. In our documentation, you’ll find everything from core Unleash concepts and feature flag best practices to detailed SDK and API guides—giving you all the resources you need to get the most out of Unleash." displayed_sidebar: documentation --- diff --git a/website/docs/feature-flag-tutorials/use-cases/a-b-testing.md b/website/docs/feature-flag-tutorials/use-cases/a-b-testing.md index 91b2a29e7f..823647d79e 100644 --- a/website/docs/feature-flag-tutorials/use-cases/a-b-testing.md +++ b/website/docs/feature-flag-tutorials/use-cases/a-b-testing.md @@ -1,11 +1,11 @@ --- -title: How to do A/B Testing using Feature Flags +title: How to do A/B testing using feature flags slug: /feature-flag-tutorials/use-cases/a-b-testing --- Feature flags are a great way to run A/B or multivariate tests with minimal code modifications, and Unleash offers built-in features that make it easy to get started. In this tutorial, we will walk through how to do an A/B test using Unleash with your application. -## How to Perform A/B Testing with Feature Flags +## How to perform A/B testing with feature flags To follow along with this tutorial, you need access to an Unleash instance to create and manage feature flags. Head over to our [Quick Start documentation](/quickstart) for options, including running locally or using an [Unleash SaaS instance](https://www.getunleash.io/pricing?). @@ -21,7 +21,7 @@ In this tutorial, you will learn how to set up and run an A/B test using feature You will also learn about how to [automate advanced A/B testing strategies](#multi-arm-bandit-tests-to-find-the-winning-variant) such as multi-arm bandit testing using feature flags. -### Create a Feature Flag +### Create a feature flag To do A/B testing, we'll create a feature flag to implement the rollout strategy. After that, we'll explore what strategies are and how they are configured in Unleash. @@ -39,7 +39,7 @@ Once you have completed the form, click **Create feature flag**. Your new feature flag is now ready to be used. Next, we will configure the A/B testing strategy for your flag. -### Target Users for A/B Testing +### Target users for A/B testing With an A/B testing strategy, you’ll be able to: @@ -93,13 +93,13 @@ Next, decide the percentage of users to target for each variant, known as the va ![You can configure multiple strategy variants for A/B testing within the gradual rollout form.](/img/use-case-experiment-variants.png) -### Manage User Session Behavior +### Manage user session behavior Unleash is built to give developers confidence in their ability to run A/B tests effectively. One critical component of implementing A/B testing strategies is maintaining a consistent experience for each user across multiple user sessions. For example, user `uuid1234` should be the target of `variantA` regardless of their session. The original subset of users that get `variantA` will continue to experience that variation of the feature over time. At Unleash, we call this [stickiness](/reference/stickiness). You can define the parameter of stickiness in the gradual rollout form. By default, stickiness is calculated by `sessionId` and `groupId`. -### Track A/B Testing for your Key Performance Metrics +### Track A/B testing for your key performance metrics An A/B testing strategy is most useful when you can track the results of a feature rollout to users. When your team has clearly defined the goals for your A/B tests, you can use Unleash to analyze how results tie back to key metrics, like conversion rates or time spent on a page. One way to collect this data is by enabling [impression data](/reference/impression-data) per feature flag. Impression data contains information about a specific feature flag activation check. @@ -197,7 +197,7 @@ Here is an example of a payload that is returned from Google Analytics that incl By enabling impression data for your feature flag and listening to events within your application code, you can leverage this data flowing to your integrated analytics tools to make informed decisions faster and adjust your strategies based on real user behavior. -### Roll Out the Winning Variant to All Users +### Roll out the winning variant to all users After you have implemented your A/B test and measured the performance of a feature to a subset of users, you can decide which variant is the most optimal experience to roll out to all users in production. @@ -207,11 +207,11 @@ When rolling out the winning variant, your flag may already be on in your produc After the flag has been available to 100% of users over time, archive the flag and clean up your codebase. -## A/B Testing with Enterprise Automation +## A/B testing with enterprise automation With Unleash, you can automate feature flags through APIs and even rely on [actions](/reference/actions) and [signals](/reference/signals) to enable and disable flags dynamically. When running A/B tests, you can configure your projects to execute tasks in response to application metrics and thresholds you define. For example, if an experimentation feature that targets a part of your user base logs errors, your actions can automatically disable the feature so your team is given the time to triage while still providing a seamless, alternative experience to users. Similarly, you can use the APIs to modify the percentage of users targeted for variations of a feature based off users engaging with one variation more than the other. -### Multi-arm Bandit Tests to Find the Winning Variant +### Multi-arm bandit tests to find the winning variant When running complex multivariate tests with numerous combinations, automating the process of finding the best variation of a feature is the most optimal, cost-effective approach for organizations with a large user base. [Multi-arm bandit tests](https://en.wikipedia.org/wiki/Multi-armed_bandit) are a powerful technique used in A/B testing to allocate traffic to different versions of a feature or application in a way that maximizes the desired outcome, such as conversion rate or click-through rate. This approach offers several advantages over traditional A/B testing and is a viable solution for large enterprise teams. diff --git a/website/docs/feature-flag-tutorials/use-cases/gradual-rollout.md b/website/docs/feature-flag-tutorials/use-cases/gradual-rollout.md index 59d4f09f72..d98bbd909d 100644 --- a/website/docs/feature-flag-tutorials/use-cases/gradual-rollout.md +++ b/website/docs/feature-flag-tutorials/use-cases/gradual-rollout.md @@ -1,10 +1,10 @@ --- -title: How to Perform a Gradual Rollout +title: How to perform a gradual rollout slug: /feature-flag-tutorials/use-cases/gradual-rollout pagination_next: feature-flag-tutorials/use-cases/a-b-testing --- -## What is a Gradual Rollout? +## What is a gradual rollout? A **gradual rollout** is a controlled release strategy where a new feature is first released to a small subset of users. This allows for monitoring user behavior, identifying potential issues, and gathering feedback before a full-scale launch. It also allows us to experiment quickly and safely. @@ -14,7 +14,7 @@ Developers also use gradual rollouts to gather user feedback. Early adopters pro The key benefits of gradual rollouts are that you can experiment rapidly on a controlled group and roll back quickly if the experiment goes wrong. This reduces the risk of failure, improves software quality, improves user experience, and optimizes resource utilization. -## How to Perform a Gradual Rollout with Unleash +## How to perform a gradual rollout with Unleash To follow along with this tutorial, you will need an Unleash instance. If you’d prefer to self-host Unleash, read our [Quickstart guide](/quickstart). Alternatively, if you’d like your project to be hosted by Unleash, go to [getunleash.io](https://www.getunleash.io/pricing). @@ -42,7 +42,7 @@ Your new feature flag has been created and is ready to be used. Upon returning t Next, we will configure the gradual rollout strategy for your new flag. -## Implementing a Gradual Rollout Activation Strategy +## Implementing a gradual rollout activation strategy An important Unleash concept that enables developers to perform a gradual rollout is an [activation strategy](/reference/activation-strategies). An activation strategy defines who will be exposed to a particular flag or flags. Unleash comes pre-configured with multiple activation strategies that let you enable a feature only for a specified audience, depending on the parameters under which you would like to release a feature. @@ -76,7 +76,7 @@ Constraints and variants are not required for a gradual rollout. These additiona For gradual rollouts, _strategy constraints_ are most applicable for more granular conditions of a feature release. In the next section, we’ll explore how to apply a strategy constraint on top of a gradual rollout for more advanced use cases. -## Applying Strategy Constraints +## Applying strategy constraints When utilizing an activation strategy such as a gradual rollout, it may be necessary to further define which subset of users get access to a feature and when the rollout takes place, depending on the complexity of your use case. Unleash provides [strategy constraints](/reference/activation-strategies#constraints) as a way to fine-tune conditions under which a feature flag is evaluated. @@ -95,11 +95,11 @@ Within a gradual rollout activation strategy, you can use strategy constraints t Add [constraints](/reference/activation-strategies#constraints) to refine the rollout based on user attributes, segments, or conditions. -### Define Custom Context Fields for Strategy Constraints +### Define custom context Fields for strategy constraints If you want to create new types of constraints that are not built into Unleash, you can create [custom context fields](/reference/unleash-context#custom-context-fields) to use in your gradual rollout for more advanced use cases. -## Leveraging Segments +## Using segments A [segment](/reference/segments) is a reusable collection of [strategy constraints](/reference/activation-strategies#constraints). Like with strategy constraints, you apply segments to feature flag activation strategies. @@ -126,7 +126,7 @@ You must pass the relevant fields in your context in the SDK in order for gradua By following these steps and leveraging Unleash's features, you can effectively execute and refine gradual rollouts to minimize risks and optimize feature delivery. -## Managing Gradual Rollouts With Enterprise Security In Mind +## Managing gradual rollouts with enterprise security in mind For large-scale organizations, managing feature flags across many teams can be complex and challenging. Unleash was architected for your feature flag management to be scalable and traceable for enterprises, which boosts overall internal security posture while delivering software efficiently. @@ -138,7 +138,7 @@ After you have implemented a gradual rollout strategy, we recommend managing the Read our documentation on how to effectively manage [feature flags at scale](/topics/feature-flags/best-practices-using-feature-flags-at-scale) while reducing security risks. Let’s walk through these recommended Unleash features in the subsequent sections. -### Reviewing Application Metrics +### Reviewing application metrics [Unleash metrics](/reference/api/unleash/metrics) are a great way to understand user traffic. With your application using feature flags, you can review: @@ -150,7 +150,7 @@ Read our documentation on how to effectively manage [feature flags at scale](/to When managing a gradual rollout, leverage metrics to gain deeper insight into flag usage against your application over time. For large-scale organizations with many feature flags to manage, this can be a useful monitoring tool for individual flags you would like to keep track of. -### Reviewing Audit Logs +### Reviewing audit logs Because a feature flag service controls the way an application behaves in production, it can be highly important to have visibility into when changes have been made and by whom. This is especially true in highly regulated environments. In these cases, you might find audit logging useful for: @@ -165,7 +165,7 @@ Unleash provides the data to log any change that has happened over time, at the Learn more about [Event Log](/reference/events#event-log) in our documentation. -### Managing Change Requests +### Managing change requests You can use Unleash's [change request](/reference/change-requests) feature to propose and review modifications to feature flags. This gives developers complete control over your production environment. In large scale organizations and heavily regulated industries, we want to help developers reduce risk of errors in production or making unwanted changes by team members that have not been properly reviewed and approved. diff --git a/website/docs/feature-flag-tutorials/use-cases/how-to-create-feature-toggles.md b/website/docs/feature-flag-tutorials/use-cases/how-to-create-feature-toggles.md index d1a628539e..42c9c96544 100644 --- a/website/docs/feature-flag-tutorials/use-cases/how-to-create-feature-toggles.md +++ b/website/docs/feature-flag-tutorials/use-cases/how-to-create-feature-toggles.md @@ -2,6 +2,7 @@ title: Create a feature flag description: 'This guide shows you how to create feature flags in Unleash and how to add constraints, segments, variants, and more.' slug: /how-to-create-feature-flag +pagination_next: how-to/how-to-schedule-feature-releases --- [Feature flags](../reference/feature-toggles) are a foundational component of Unleash, enabling you to manage features dynamically. This guide details the process of creating and configuring feature flags within Unleash. You'll learn how to create flags, define activation strategies, enable them, and optionally refine their behavior with constraints, segments, and variants. diff --git a/website/docs/feature-flag-tutorials/use-cases/scaling-unleash.mdx b/website/docs/feature-flag-tutorials/use-cases/scaling-unleash.mdx index 62028dc694..4a4b31c05b 100644 --- a/website/docs/feature-flag-tutorials/use-cases/scaling-unleash.mdx +++ b/website/docs/feature-flag-tutorials/use-cases/scaling-unleash.mdx @@ -1,5 +1,5 @@ --- -title: Scaling Unleash for Enterprise Workloads +title: Scaling Unleash for enterprise workloads --- import Tabs from '@theme/Tabs'; diff --git a/website/docs/feature-flag-tutorials/use-cases/security-compliance.md b/website/docs/feature-flag-tutorials/use-cases/security-compliance.md index 3eaa7e65e7..5e955c51af 100644 --- a/website/docs/feature-flag-tutorials/use-cases/security-compliance.md +++ b/website/docs/feature-flag-tutorials/use-cases/security-compliance.md @@ -1,5 +1,5 @@ --- -title: Feature Flag Security and Compliance for Enterprises +title: Feature flag security and compliance for enterprises slug: /feature-flag-tutorials/use-cases/security-and-compliance --- diff --git a/website/docs/feature-flag-tutorials/use-cases/trunk-based-development.md b/website/docs/feature-flag-tutorials/use-cases/trunk-based-development.md index 95081dccba..81038acc15 100644 --- a/website/docs/feature-flag-tutorials/use-cases/trunk-based-development.md +++ b/website/docs/feature-flag-tutorials/use-cases/trunk-based-development.md @@ -1,5 +1,5 @@ --- -title: How to do Trunk-Based Development using Feature Flags +title: How to do trunk-based development using feature flags slug: /feature-flag-tutorials/use-cases/trunk-based-development --- diff --git a/website/docs/feature-flag-tutorials/use-cases/user-management-access-controls.md b/website/docs/feature-flag-tutorials/use-cases/user-management-access-controls.md index 6113c9058b..fe459a25a4 100644 --- a/website/docs/feature-flag-tutorials/use-cases/user-management-access-controls.md +++ b/website/docs/feature-flag-tutorials/use-cases/user-management-access-controls.md @@ -1,5 +1,5 @@ --- -title: How to Implement User Management, Access Controls, and Auditing with Feature Flags +title: How to implement user management, access controls, and auditing with feature flags slug: /feature-flag-tutorials/use-cases/user-management-access-controls-auditing --- diff --git a/website/docs/how-to/how-to-setup-provisioning-with-okta.md b/website/docs/how-to/how-to-setup-provisioning-with-okta.md index 10a4dfbd6f..e711c72808 100644 --- a/website/docs/how-to/how-to-setup-provisioning-with-okta.md +++ b/website/docs/how-to/how-to-setup-provisioning-with-okta.md @@ -1,5 +1,6 @@ --- title: Set up Okta provisioning +pagination_next: how-to/how-to-setup-provisioning-with-okta --- :::note Availability diff --git a/website/docs/reference/activation-strategies.md b/website/docs/reference/activation-strategies.md index bf02437c24..7785f14844 100644 --- a/website/docs/reference/activation-strategies.md +++ b/website/docs/reference/activation-strategies.md @@ -1,5 +1,5 @@ --- -title: Activation Strategies +title: Activation strategies --- import VideoContent from '@site/src/components/VideoContent.jsx' diff --git a/website/docs/reference/api-tokens-and-client-keys.mdx b/website/docs/reference/api-tokens-and-client-keys.mdx index 2d1fa02911..1bfdaf481b 100644 --- a/website/docs/reference/api-tokens-and-client-keys.mdx +++ b/website/docs/reference/api-tokens-and-client-keys.mdx @@ -1,5 +1,5 @@ --- -title: API Tokens and Client Keys +title: API tokens and client keys pagination_next: reference/front-end-api --- diff --git a/website/docs/reference/change-requests.mdx b/website/docs/reference/change-requests.mdx index e414072df2..860d3a0c88 100644 --- a/website/docs/reference/change-requests.mdx +++ b/website/docs/reference/change-requests.mdx @@ -1,5 +1,5 @@ --- -title: Change Requests +title: Change requests --- import VideoContent from '@site/src/components/VideoContent.jsx'; diff --git a/website/docs/reference/command-menu.md b/website/docs/reference/command-menu.md index 3ec16eed41..c5d369b79e 100644 --- a/website/docs/reference/command-menu.md +++ b/website/docs/reference/command-menu.md @@ -1,5 +1,5 @@ --- -title: Command Menu +title: Command menu --- :::note Availability diff --git a/website/docs/reference/custom-activation-strategies.md b/website/docs/reference/custom-activation-strategies.md index e32ef5ef6a..820fa09545 100644 --- a/website/docs/reference/custom-activation-strategies.md +++ b/website/docs/reference/custom-activation-strategies.md @@ -1,5 +1,5 @@ --- -title: Custom Activation Strategies +title: Custom activation strategies --- :::caution diff --git a/website/docs/reference/environment-import-export.mdx b/website/docs/reference/environment-import-export.mdx index f7437b1e1e..f28e662650 100644 --- a/website/docs/reference/environment-import-export.mdx +++ b/website/docs/reference/environment-import-export.mdx @@ -1,5 +1,5 @@ --- -title: 'Import and Export' +title: Import and export --- import ApiRequest from '@site/src/components/ApiRequest' diff --git a/website/docs/reference/feature-toggle-variants.md b/website/docs/reference/feature-toggle-variants.md index a02bcc7c48..69cfbb7c3e 100644 --- a/website/docs/reference/feature-toggle-variants.md +++ b/website/docs/reference/feature-toggle-variants.md @@ -1,5 +1,5 @@ --- -title: Feature Flag Variants (deprecated) +title: Feature flag variants (deprecated) --- :::warning diff --git a/website/docs/reference/feature-toggles.mdx b/website/docs/reference/feature-toggles.mdx index 2bf4877033..869392615e 100644 --- a/website/docs/reference/feature-toggles.mdx +++ b/website/docs/reference/feature-toggles.mdx @@ -1,5 +1,5 @@ --- -title: Feature Flags +title: Feature flags pagination_next: reference/activation-strategies --- diff --git a/website/docs/reference/impression-data.md b/website/docs/reference/impression-data.md index e604e3a1ed..922218f567 100644 --- a/website/docs/reference/impression-data.md +++ b/website/docs/reference/impression-data.md @@ -1,5 +1,5 @@ --- -title: Impression Data +title: Impression data pagination_next: reference/events --- diff --git a/website/docs/reference/login-history.mdx b/website/docs/reference/login-history.mdx index 3bd5c9d31e..57eebd106d 100644 --- a/website/docs/reference/login-history.mdx +++ b/website/docs/reference/login-history.mdx @@ -1,5 +1,5 @@ --- -title: Login History +title: Login history --- :::note Availability diff --git a/website/docs/reference/maintenance-mode.mdx b/website/docs/reference/maintenance-mode.mdx index 7351ede36c..fa58371165 100644 --- a/website/docs/reference/maintenance-mode.mdx +++ b/website/docs/reference/maintenance-mode.mdx @@ -1,5 +1,5 @@ --- -title: Maintenance Mode +title: Maintenance mode --- :::note Availability diff --git a/website/docs/reference/project-collaboration-mode.md b/website/docs/reference/project-collaboration-mode.md index f5c41aa7f0..49d3de12c3 100644 --- a/website/docs/reference/project-collaboration-mode.md +++ b/website/docs/reference/project-collaboration-mode.md @@ -1,5 +1,5 @@ --- -title: Project Collaboration Mode +title: Project collaboration mode --- :::note Availability diff --git a/website/docs/reference/public-signup.mdx b/website/docs/reference/public-signup.mdx index 001dfd4ee2..9cd18a4c7b 100644 --- a/website/docs/reference/public-signup.mdx +++ b/website/docs/reference/public-signup.mdx @@ -1,5 +1,5 @@ --- -title: Public Invite Links +title: Public invite links --- Public invite links allow you to invite new team members to your Unleash instance. Any user who receives an invite link can use it to sign up for the Unleash instance that generated the link. When users sign up using an invite link, they are automatically assigned the [Viewer](../reference/rbac.md#predefined-roles) role. diff --git a/website/docs/reference/rbac.md b/website/docs/reference/rbac.md index 13370183d8..1c5463ef9a 100644 --- a/website/docs/reference/rbac.md +++ b/website/docs/reference/rbac.md @@ -1,6 +1,6 @@ --- id: rbac -title: Role-based Access Control +title: Role-based access control --- :::note Availability diff --git a/website/docs/reference/resource-limits.mdx b/website/docs/reference/resource-limits.mdx index 289cb4f208..32e0fc0ca8 100644 --- a/website/docs/reference/resource-limits.mdx +++ b/website/docs/reference/resource-limits.mdx @@ -1,5 +1,5 @@ --- -title: Resource Limits +title: Resource limits --- :::note Availability diff --git a/website/docs/reference/service-accounts.md b/website/docs/reference/service-accounts.md index 231334cfa2..ea04013bc2 100644 --- a/website/docs/reference/service-accounts.md +++ b/website/docs/reference/service-accounts.md @@ -1,5 +1,5 @@ --- -title: Service Accounts +title: Service accounts --- :::note Availability diff --git a/website/docs/reference/strategy-variants.mdx b/website/docs/reference/strategy-variants.mdx index 69a6b7abe7..a615d91e48 100644 --- a/website/docs/reference/strategy-variants.mdx +++ b/website/docs/reference/strategy-variants.mdx @@ -1,5 +1,5 @@ --- -title: Strategy Variants +title: Strategy variants --- import VideoContent from '@site/src/components/VideoContent.jsx' diff --git a/website/docs/reference/technical-debt.md b/website/docs/reference/technical-debt.md index ba4254fb8e..e38c3b9aee 100644 --- a/website/docs/reference/technical-debt.md +++ b/website/docs/reference/technical-debt.md @@ -1,5 +1,5 @@ --- -title: Technical Debt +title: Technical debt pagination_next: reference/insights --- diff --git a/website/docs/reference/unleash-context.md b/website/docs/reference/unleash-context.md index f5f6aad232..9a63c32ee4 100644 --- a/website/docs/reference/unleash-context.md +++ b/website/docs/reference/unleash-context.md @@ -1,8 +1,8 @@ --- -title: Unleash Context +title: Unleash context --- -The **Unleash Context** contains information related to the current feature flag request. Unleash uses this context to evaluate [activation strategies](activation-strategies) and [strategy constraints](../reference/activation-strategies#constraints) and to calculate [flag stickiness](../reference/stickiness). The Unleash Context is an important feature of all the [Unleash client SDKs](../reference/sdks). +The **Unleash context** contains information related to the current feature flag request. Unleash uses this context to evaluate [activation strategies](activation-strategies) and [strategy constraints](../reference/activation-strategies#constraints) and to calculate [flag stickiness](../reference/stickiness). The Unleash Context is an important feature of all the [Unleash client SDKs](../reference/sdks). ## Overview diff --git a/website/docs/topics/feature-flags/feature-flag-best-practices.mdx b/website/docs/topics/feature-flags/feature-flag-best-practices.mdx index 9a90fe0989..2f789e38ed 100644 --- a/website/docs/topics/feature-flags/feature-flag-best-practices.mdx +++ b/website/docs/topics/feature-flags/feature-flag-best-practices.mdx @@ -2,6 +2,7 @@ title: "11 principles for building and scaling feature flag systems" description: Build a scalable, secure feature flag system with 11 key principles. Improve DevOps metrics, ensure reliability, and enhance developer experience." toc_max_heading_level: 2 +pagination_next: topics/feature-flags/best-practices-using-feature-flags-at-scale --- import VideoContent from '@site/src/components/VideoContent.jsx'; diff --git a/website/docs/topics/what-is-a-feature-flag.mdx b/website/docs/topics/what-is-a-feature-flag.mdx index aed8d711ab..cbc55463bb 100644 --- a/website/docs/topics/what-is-a-feature-flag.mdx +++ b/website/docs/topics/what-is-a-feature-flag.mdx @@ -2,7 +2,7 @@ title: What is a feature flag and why are feature flags used? slug: /what-is-a-feature-flag description: Feature flags let you control software features in real time, enabling safer deployments, better testing, and faster innovation. -pagination_next: topics/feature-flags/feature-flag-best-practices +pagination_next: understanding-unleash/the-anatomy-of-unleash --- Feature flags allow you to release, test, and manage features and functionality across your application without changing the source code. Organizations use added control and flexibility to deliver more and higher quality features with reduced cost, time, and risk. diff --git a/website/docs/understanding-unleash/data-collection.md b/website/docs/understanding-unleash/data-collection.md index 3c15818a08..d986d0d910 100644 --- a/website/docs/understanding-unleash/data-collection.md +++ b/website/docs/understanding-unleash/data-collection.md @@ -1,5 +1,6 @@ --- title: Data and privacy +pagination_next: using-unleash/compliance/compliance-overview --- At Unleash, we prioritize the privacy and security of our customers' data. Our [architecture](/understanding-unleash/the-anatomy-of-unleash) ensures privacy by evaluating feature flags locally within the [client SDKs](/reference/sdks) or [Unleash Edge](/reference/unleash-edge), meaning no user data is shared with the Unleash instance. diff --git a/website/docs/understanding-unleash/the-anatomy-of-unleash.mdx b/website/docs/understanding-unleash/the-anatomy-of-unleash.mdx index c2dbc8751a..7c7d0ded2c 100644 --- a/website/docs/understanding-unleash/the-anatomy-of-unleash.mdx +++ b/website/docs/understanding-unleash/the-anatomy-of-unleash.mdx @@ -1,5 +1,5 @@ --- -title: The Anatomy of Unleash +title: Unleash fundamentals --- This guide's purpose is to give you a conceptual overview of how Unleash works. It covers the various components that exist within our system and how they interact with each other and with external applications. The diagrams help you understand the fundamental building blocks, such as [projects](../reference/projects), [environments](../reference/environments), [variants](../reference/strategy-variants) and of course, [feature flags](../reference/feature-toggles). diff --git a/website/sidebars.ts b/website/sidebars.ts index 637f6f30ff..840be4e513 100644 --- a/website/sidebars.ts +++ b/website/sidebars.ts @@ -37,29 +37,159 @@ const sidebars: SidebarsConfig = { }, ], documentation: [ - 'quickstart', { - label: 'Feature Flags Developer Guide', + label: 'Get started', type: 'category', link: { type: 'doc', - id: 'topics/what-is-a-feature-flag', + id: 'quickstart', }, items: [ { - label: 'Feature Flag Best Practices', + type: 'doc', + label: 'What is a feature flag?', + id: 'topics/what-is-a-feature-flag', + }, + { + type: 'doc', + label: 'Unleash fundamentals', + id: 'understanding-unleash/the-anatomy-of-unleash', + }, + { + type: 'doc', + label: 'Architecture overview', + id: 'understanding-unleash/unleash-overview', + }, + ], + }, + { + label: 'Core concepts', + type: 'category', + items: [ + { + label: 'Projects and environments', + collapsed: true, + type: 'category', + link: { type: 'doc', id: 'reference/projects' }, + items: [ + 'reference/projects', + 'reference/project-collaboration-mode', + 'reference/environments', + 'reference/environment-import-export', + ], + }, + { + label: 'Feature flags and activation strategies', collapsed: true, type: 'category', link: { type: 'doc', - id: 'topics/what-is-a-feature-flag', + id: 'reference/feature-toggles', + }, + items: [ + 'reference/feature-toggles', + 'reference/activation-strategies', + 'reference/strategy-variants', + 'understanding-unleash/managing-constraints', + 'reference/segments', + 'reference/unleash-context', + 'reference/stickiness', + 'reference/release-templates', + ], + }, + { + label: 'Identity and access', + collapsed: true, + type: 'category', + link: { + type: 'doc', + id: 'reference/api-tokens-and-client-keys', + }, + items: [ + 'reference/api-tokens-and-client-keys', + 'reference/front-end-api', + 'reference/rbac', + 'reference/sso', + 'reference/scim', + 'reference/change-requests', + 'reference/public-signup', + ], + }, + { + label: 'Instance health and configuration', + collapsed: true, + type: 'category', + link: { + type: 'doc', + id: 'reference/technical-debt', + }, + items: [ + 'reference/technical-debt', + 'reference/insights', + 'reference/resource-limits', + ], + }, + { + label: 'Testing and monitoring', + collapsed: true, + type: 'category', + link: { + type: 'doc', + id: 'reference/impression-data', + }, + items: [ + 'reference/impression-data', + 'reference/events', + 'reference/playground', + 'reference/network-view', + ], + }, + { + label: 'Automation and integrations', + collapsed: true, + type: 'category', + link: { + type: 'doc', + id: 'reference/applications', + }, + items: [ + 'reference/applications', + 'reference/service-accounts', + 'reference/signals', + 'reference/actions', + ], + }, + { + label: 'Admin UI', + collapsed: true, + type: 'category', + link: { + type: 'doc', + id: 'reference/login-history', + }, + items: [ + 'reference/login-history', + 'reference/banners', + 'reference/command-menu', + 'reference/search-operators', + 'reference/maintenance-mode', + ], + }, + ], + }, + { + label: 'Tutorials and guides', + type: 'category', + items: [ + { + label: 'Feature flag best practices', + collapsed: true, + type: 'category', + link: { + type: 'doc', + id: 'topics/feature-flags/feature-flag-best-practices', }, items: [ - { - type: 'doc', - label: 'What is a feature flag', - id: 'topics/what-is-a-feature-flag', - }, { type: 'doc', label: 'Building and scaling feature flag systems', @@ -75,16 +205,62 @@ const sidebars: SidebarsConfig = { label: 'Migrating from homegrown feature management solutions', id: 'topics/feature-flag-migration/feature-flag-migration-best-practices', }, + { + type: 'doc', + label: 'Scaling Unleash', + id: 'feature-flag-tutorials/use-cases/scaling-unleash', + }, ], }, { - label: 'Feature Flag Tutorials', + label: 'Common patterns and use cases', type: 'category', collapsed: true, link: { type: 'doc', id: 'feature-flag-tutorials/use-cases/gradual-rollout', }, + items: [ + { + type: 'doc', + label: 'Gradual rollout', + id: 'feature-flag-tutorials/use-cases/gradual-rollout', + }, + { + type: 'doc', + label: 'A/B testing', + id: 'feature-flag-tutorials/use-cases/a-b-testing', + }, + { + type: 'doc', + label: 'Feature flags for AI', + id: 'feature-flag-tutorials/use-cases/ai', + }, + { + type: 'doc', + label: 'Trunk-based development', + id: 'feature-flag-tutorials/use-cases/trunk-based-development', + }, + { + type: 'doc', + label: 'User management, access controls, and auditing', + id: 'feature-flag-tutorials/use-cases/user-management-access-controls', + }, + { + type: 'doc', + label: 'Security and compliance', + id: 'feature-flag-tutorials/use-cases/security-compliance', + }, + ], + }, + { + label: 'Developer tutorials', + type: 'category', + collapsed: true, + link: { + type: 'doc', + id: 'feature-flag-tutorials/use-cases/how-to-create-feature-toggles', + }, items: [ { type: 'doc', @@ -92,241 +268,192 @@ const sidebars: SidebarsConfig = { }, { type: 'doc', + label: 'Schedule a feature release', id: 'how-to/how-to-schedule-feature-releases', }, { type: 'doc', - id: 'how-to/how-to-synchronize-unleash-instances', + label: 'Use impression data for analytics', + id: 'feature-flag-tutorials/use-cases/how-to-capture-impression-data', }, + ], + }, + { + type: 'category', + label: 'Language and framework guides', + collapsed: true, + link: { + type: 'doc', + id: 'feature-flag-tutorials/react/implementing-feature-flags', + }, + items: [ { type: 'category', - label: 'Use Cases', - collapsed: true, - link: { - type: 'doc', - id: 'feature-flag-tutorials/use-cases/gradual-rollout', - }, - items: [ - { - type: 'doc', - label: 'Gradual Rollout', - id: 'feature-flag-tutorials/use-cases/gradual-rollout', - }, - { - type: 'doc', - label: 'A/B Testing', - id: 'feature-flag-tutorials/use-cases/a-b-testing', - }, - { - type: 'doc', - label: 'Feature Flags for AI', - id: 'feature-flag-tutorials/use-cases/ai', - }, - { - type: 'doc', - label: 'Trunk-Based Development', - id: 'feature-flag-tutorials/use-cases/trunk-based-development', - }, - { - type: 'doc', - label: 'User Management, Access Controls, and Auditing', - id: 'feature-flag-tutorials/use-cases/user-management-access-controls', - }, - { - type: 'doc', - label: 'Security and Compliance', - id: 'feature-flag-tutorials/use-cases/security-compliance', - }, - { - type: 'doc', - label: 'Scaling Unleash', - id: 'feature-flag-tutorials/use-cases/scaling-unleash', - }, - { - type: 'doc', - label: 'Impression Data for Analytics', - id: 'feature-flag-tutorials/use-cases/how-to-capture-impression-data', - }, - ], - }, - { - type: 'category', - label: 'Languages and Frameworks', - collapsed: true, + label: 'React', link: { type: 'doc', id: 'feature-flag-tutorials/react/implementing-feature-flags', }, items: [ { - type: 'category', - label: 'React', - link: { - type: 'doc', - id: 'feature-flag-tutorials/react/implementing-feature-flags', - }, - items: [ - { - type: 'doc', - label: 'Examples', - id: 'feature-flag-tutorials/react/examples', - }, - ], + type: 'doc', + label: 'Examples', + id: 'feature-flag-tutorials/react/examples', }, + ], + }, + { + type: 'category', + label: 'Java', + link: { + type: 'doc', + id: 'feature-flag-tutorials/java/implementing-feature-flags', + }, + items: [ { - type: 'category', - label: 'Java', - link: { - type: 'doc', - id: 'feature-flag-tutorials/java/implementing-feature-flags', - }, - items: [ - { - type: 'doc', - label: 'Spring Boot', - id: 'feature-flag-tutorials/java/spring-boot-implementing-feature-flags', - }, - { - type: 'doc', - label: 'Spring Boot Examples', - id: 'feature-flag-tutorials/java/spring-boot-examples', - }, - ], - }, - { - type: 'category', - label: 'Python', - link: { - type: 'doc', - id: 'feature-flag-tutorials/python/implementing-feature-flags', - }, - items: [ - { - type: 'doc', - label: 'Python Examples', - id: 'feature-flag-tutorials/python/examples', - }, - { - type: 'doc', - label: 'Django Tutorial', - id: 'feature-flag-tutorials/django/implementing-feature-flags-django', - }, - { - type: 'doc', - label: 'Django Examples', - id: 'feature-flag-tutorials/django/django-examples', - }, - ], + type: 'doc', + label: 'Spring Boot', + id: 'feature-flag-tutorials/java/spring-boot-implementing-feature-flags', }, { type: 'doc', - label: 'Next.js', - id: 'feature-flag-tutorials/nextjs/implementing-feature-flags-nextjs', + label: 'Spring Boot Examples', + id: 'feature-flag-tutorials/java/spring-boot-examples', }, + ], + }, + { + type: 'category', + label: 'Python', + link: { + type: 'doc', + id: 'feature-flag-tutorials/python/implementing-feature-flags', + }, + items: [ { - type: 'category', - label: 'Go', - link: { - type: 'doc', - id: 'feature-flag-tutorials/golang/implementing-feature-flags-golang', - }, - items: [ - { - type: 'doc', - label: 'Go Examples', - id: 'feature-flag-tutorials/golang/golang-examples', - }, - ], + type: 'doc', + label: 'Python Examples', + id: 'feature-flag-tutorials/python/examples', }, { type: 'doc', - label: 'JavaScript', - id: 'feature-flag-tutorials/javascript/implementing-feature-flags-js', - }, - { - type: 'category', - label: '.NET', - link: { - type: 'doc', - id: 'feature-flag-tutorials/dotnet/implementing-feature-flags-dotnet', - }, - items: [ - { - type: 'doc', - label: 'Examples', - id: 'feature-flag-tutorials/dotnet/dotnet-examples', - }, - ], - }, - { - type: 'category', - label: 'iOS', - link: { - type: 'doc', - id: 'feature-flag-tutorials/ios/implementing-feature-flags-ios', - }, - items: [ - { - type: 'doc', - label: 'Examples', - id: 'feature-flag-tutorials/ios/examples', - }, - ], + label: 'Django Tutorial', + id: 'feature-flag-tutorials/django/implementing-feature-flags-django', }, { type: 'doc', - label: 'Serverless', - id: 'feature-flag-tutorials/serverless/implementing-feature-flags-in-aws-lambda', + label: 'Django Examples', + id: 'feature-flag-tutorials/django/django-examples', }, + ], + }, + { + type: 'doc', + label: 'Next.js', + id: 'feature-flag-tutorials/nextjs/implementing-feature-flags-nextjs', + }, + { + type: 'category', + label: 'Go', + link: { + type: 'doc', + id: 'feature-flag-tutorials/golang/implementing-feature-flags-golang', + }, + items: [ { - type: 'category', - label: 'Rust', - link: { - type: 'doc', - id: 'feature-flag-tutorials/rust/implementing-feature-flags-rust', - }, - items: [ - { - type: 'doc', - label: 'Examples', - id: 'feature-flag-tutorials/rust/rust-examples', - }, - ], + type: 'doc', + label: 'Go Examples', + id: 'feature-flag-tutorials/golang/golang-examples', + }, + ], + }, + { + type: 'doc', + label: 'JavaScript', + id: 'feature-flag-tutorials/javascript/implementing-feature-flags-js', + }, + { + type: 'category', + label: '.NET', + link: { + type: 'doc', + id: 'feature-flag-tutorials/dotnet/implementing-feature-flags-dotnet', + }, + items: [ + { + type: 'doc', + label: 'Examples', + id: 'feature-flag-tutorials/dotnet/dotnet-examples', + }, + ], + }, + { + type: 'category', + label: 'iOS', + link: { + type: 'doc', + id: 'feature-flag-tutorials/ios/implementing-feature-flags-ios', + }, + items: [ + { + type: 'doc', + label: 'Examples', + id: 'feature-flag-tutorials/ios/examples', + }, + ], + }, + { + type: 'doc', + label: 'Serverless', + id: 'feature-flag-tutorials/serverless/implementing-feature-flags-in-aws-lambda', + }, + { + type: 'category', + label: 'Rust', + link: { + type: 'doc', + id: 'feature-flag-tutorials/rust/implementing-feature-flags-rust', + }, + items: [ + { + type: 'doc', + label: 'Examples', + id: 'feature-flag-tutorials/rust/rust-examples', + }, + ], + }, + { + type: 'doc', + label: 'Flutter', + id: 'feature-flag-tutorials/flutter/a-b-testing', + }, + { + type: 'doc', + label: 'SvelteKit', + id: 'feature-flag-tutorials/sveltekit/implementing-feature-flags-sveltekit', + }, + { + type: 'category', + label: 'Ruby', + link: { + type: 'doc', + id: 'feature-flag-tutorials/ruby/implementing-feature-flags-ruby', + }, + items: [ + { + type: 'doc', + label: 'Ruby Examples', + id: 'feature-flag-tutorials/ruby/ruby-examples', }, { type: 'doc', - label: 'Flutter', - id: 'feature-flag-tutorials/flutter/a-b-testing', + label: 'Rails Tutorial', + id: 'feature-flag-tutorials/rails/implementing-feature-flags-rails', }, { type: 'doc', - label: 'SvelteKit', - id: 'feature-flag-tutorials/sveltekit/implementing-feature-flags-sveltekit', - }, - { - type: 'category', - label: 'Ruby', - link: { - type: 'doc', - id: 'feature-flag-tutorials/ruby/implementing-feature-flags-ruby', - }, - items: [ - { - type: 'doc', - label: 'Ruby Examples', - id: 'feature-flag-tutorials/ruby/ruby-examples', - }, - { - type: 'doc', - label: 'Rails Tutorial', - id: 'feature-flag-tutorials/rails/implementing-feature-flags-rails', - }, - { - type: 'doc', - label: 'Rails Examples', - id: 'feature-flag-tutorials/rails/rails-examples', - }, - ], + label: 'Rails Examples', + id: 'feature-flag-tutorials/rails/rails-examples', }, ], }, @@ -334,246 +461,101 @@ const sidebars: SidebarsConfig = { }, ], }, - { - label: 'Understanding Unleash', - collapsed: false, + label: 'SDKs', type: 'category', - link: { - type: 'doc', - id: 'understanding-unleash/unleash-overview', - }, + link: { type: 'doc', id: 'reference/sdks/index' }, items: [ - 'understanding-unleash/unleash-overview', - 'understanding-unleash/the-anatomy-of-unleash', - 'understanding-unleash/managing-constraints', - 'understanding-unleash/hosting-options', - 'understanding-unleash/data-collection', { type: 'category', - link: { - type: 'doc', - id: 'reference/projects', - }, - label: 'Unleash Concepts', + label: 'Server-side SDKs', items: [ { - label: 'Projects and Environments', - collapsed: false, - type: 'category', - link: { type: 'doc', id: 'reference/projects' }, - items: [ - 'reference/projects', - 'reference/project-collaboration-mode', - 'reference/environments', - 'reference/environment-import-export', - ], - }, - { - label: 'Feature Flags and Activation Strategies', - collapsed: false, - type: 'category', - link: { - type: 'doc', - id: 'reference/feature-toggles', - }, - items: [ - 'reference/feature-toggles', - 'reference/activation-strategies', - 'reference/strategy-variants', - 'reference/segments', - 'reference/unleash-context', - 'reference/stickiness', - 'reference/release-templates', - ], - }, - { - label: 'Access Controls', - collapsed: true, - type: 'category', - link: { - type: 'doc', - id: 'reference/api-tokens-and-client-keys', - }, - items: [ - 'reference/api-tokens-and-client-keys', - 'reference/front-end-api', - 'reference/rbac', - 'reference/sso', - 'reference/scim', - 'reference/change-requests', - 'reference/public-signup', - ], - }, - { - label: 'Instance Health and Configuration', - collapsed: true, - type: 'category', - link: { - type: 'doc', - id: 'reference/technical-debt', - }, - items: [ - 'reference/technical-debt', - 'reference/insights', - 'reference/resource-limits', - ], - }, - { - label: 'Testing and Monitoring', - collapsed: true, - type: 'category', - link: { - type: 'doc', - id: 'reference/impression-data', - }, - items: [ - 'reference/impression-data', - 'reference/events', - 'reference/playground', - 'reference/network-view', - ], - }, - { - label: 'Automation and Integrations', - collapsed: true, - type: 'category', - link: { - type: 'doc', - id: 'reference/applications', - }, - items: [ - 'reference/applications', - 'reference/service-accounts', - 'reference/signals', - 'reference/actions', - ], - }, - { - label: 'Admin UI', - collapsed: true, - type: 'category', - link: { - type: 'doc', - id: 'reference/login-history', - }, - items: [ - 'reference/login-history', - 'reference/banners', - 'reference/command-menu', - 'reference/search-operators', - 'reference/maintenance-mode', - ], + type: 'autogenerated', + dirName: 'generated/sdks/server-side', }, ], }, + { + type: 'category', + label: 'Client-side SDKs', + items: [ + { + type: 'autogenerated', + dirName: 'generated/sdks/client-side', + }, + ], + }, + { + type: 'link', + label: 'Community SDKs', + href: '/reference/sdks#community-sdks', + }, ], }, { - label: 'Using Unleash', - collapsed: false, + label: 'API reference', type: 'category', link: { type: 'doc', id: 'api-overview', }, items: [ + docsSidebar, { - label: 'APIs', - collapsed: true, - type: 'category', - link: { - type: 'doc', - id: 'api-overview', - }, - items: [ - docsSidebar, - { - 'System API': [ - 'reference/api/legacy/unleash/internal/prometheus', - 'reference/api/legacy/unleash/internal/health', - ], - '(Legacy Docs) Admin API': [ - 'reference/api/legacy/unleash/admin/addons', - 'reference/api/legacy/unleash/admin/context', - 'reference/api/legacy/unleash/admin/events', - 'reference/api/legacy/unleash/admin/features-v2', - 'reference/api/legacy/unleash/admin/feature-types', - 'reference/api/legacy/unleash/admin/features', - 'reference/api/legacy/unleash/admin/archive', - 'reference/api/legacy/unleash/admin/metrics', - 'reference/api/legacy/unleash/admin/projects', - 'reference/api/legacy/unleash/admin/segments', - 'reference/api/legacy/unleash/admin/state', - 'reference/api/legacy/unleash/admin/strategies', - 'reference/api/legacy/unleash/admin/tags', - 'reference/api/legacy/unleash/admin/user-admin', - ], - '(Legacy Docs) Client API': [ - 'reference/api/legacy/unleash/client/features', - 'reference/api/legacy/unleash/client/metrics', - 'reference/api/legacy/unleash/client/register', - ], - }, + 'System API': [ + 'reference/api/legacy/unleash/internal/prometheus', + 'reference/api/legacy/unleash/internal/health', + ], + '(Legacy Docs) Admin API': [ + 'reference/api/legacy/unleash/admin/addons', + 'reference/api/legacy/unleash/admin/context', + 'reference/api/legacy/unleash/admin/events', + 'reference/api/legacy/unleash/admin/features-v2', + 'reference/api/legacy/unleash/admin/feature-types', + 'reference/api/legacy/unleash/admin/features', + 'reference/api/legacy/unleash/admin/archive', + 'reference/api/legacy/unleash/admin/metrics', + 'reference/api/legacy/unleash/admin/projects', + 'reference/api/legacy/unleash/admin/segments', + 'reference/api/legacy/unleash/admin/state', + 'reference/api/legacy/unleash/admin/strategies', + 'reference/api/legacy/unleash/admin/tags', + 'reference/api/legacy/unleash/admin/user-admin', + ], + '(Legacy Docs) Client API': [ + 'reference/api/legacy/unleash/client/features', + 'reference/api/legacy/unleash/client/metrics', + 'reference/api/legacy/unleash/client/register', ], }, + ], + }, + { + type: 'category', + label: 'Unleash Edge', + collapsed: true, + link: { + type: 'doc', + id: 'generated/unleash-edge', + }, + items: [ + 'generated/unleash-edge/concepts', + 'generated/unleash-edge/deploying', + 'generated/unleash-edge/benchmarking', + 'generated/unleash-edge/cli', + 'generated/unleash-edge/development-guide', + 'generated/unleash-edge/migration-guide', + ], + }, + { + label: 'Integrate and deploy', + type: 'category', + items: [ { - label: 'Application SDKs', - type: 'category', - link: { type: 'doc', id: 'reference/sdks/index' }, - items: [ - { - type: 'category', - label: 'Server-side SDKs', - items: [ - { - type: 'autogenerated', - dirName: 'generated/sdks/server-side', - }, - ], - }, - { - type: 'category', - label: 'Client-side SDKs', - items: [ - { - type: 'autogenerated', - dirName: 'generated/sdks/client-side', - }, - ], - }, - { - type: 'link', - label: 'Community SDKs', - href: '/reference/sdks#community-sdks', - }, - ], - }, - { - label: 'Integrations and automation', - type: 'category', - link: { type: 'doc', id: 'reference/integrations/index' }, - items: [ - 'reference/integrations/datadog', - { - 'Jira Server': [ - 'reference/integrations/jira-server-plugin-installation', - 'reference/integrations/jira-server-plugin-usage', - ], - 'Jira Cloud': [ - 'reference/integrations/jira-cloud-plugin-installation', - 'reference/integrations/jira-cloud-plugin-usage', - ], - }, - 'reference/integrations/slack-app', - 'reference/integrations/teams', - 'reference/integrations/webhook', - { - type: 'doc', - label: 'Terraform', - id: 'reference/terraform', - }, - ], + type: 'doc', + label: 'Unleash hosting options', + id: 'understanding-unleash/hosting-options', }, { type: 'category', @@ -588,10 +570,20 @@ const sidebars: SidebarsConfig = { 'using-unleash/deploy/upgrading-unleash', 'using-unleash/deploy/license-keys', 'using-unleash/deploy/https', + { + type: 'doc', + label: 'Synchronize Unleash instances', + id: 'how-to/how-to-synchronize-unleash-instances', + }, ], }, { label: 'Single sign-on', + type: 'category', + link: { + type: 'doc', + id: 'how-to/how-to-add-sso-open-id-connect', + }, items: [ 'how-to/how-to-add-sso-open-id-connect', 'how-to/how-to-add-sso-saml', @@ -600,41 +592,69 @@ const sidebars: SidebarsConfig = { 'how-to/how-to-setup-sso-keycloak-group-sync', 'how-to/how-to-set-up-group-sso-sync', ], - type: 'category', - link: { - type: 'doc', - id: 'how-to/how-to-add-sso-open-id-connect', - }, }, { label: 'Automatic provisioning', - items: [ - 'how-to/how-to-setup-provisioning-with-okta', - 'how-to/how-to-setup-provisioning-with-entra', - ], type: 'category', link: { type: 'doc', id: 'how-to/how-to-setup-provisioning-with-okta', }, + items: [ + 'how-to/how-to-setup-provisioning-with-okta', + 'how-to/how-to-setup-provisioning-with-entra', + ], }, { + label: 'Integrations', type: 'category', - label: 'Unleash Edge', - collapsed: true, link: { type: 'doc', - id: 'generated/unleash-edge', + id: 'reference/integrations/index', }, items: [ - 'generated/unleash-edge/concepts', - 'generated/unleash-edge/deploying', - 'generated/unleash-edge/benchmarking', - 'generated/unleash-edge/cli', - 'generated/unleash-edge/development-guide', - 'generated/unleash-edge/migration-guide', + 'reference/integrations/datadog', + { + type: 'category', + label: 'Jira server', + items: [ + 'reference/integrations/jira-server-plugin-installation', + 'reference/integrations/jira-server-plugin-usage', + ], + }, + { + type: 'category', + label: 'Jira cloud', + items: [ + 'reference/integrations/jira-cloud-plugin-installation', + 'reference/integrations/jira-cloud-plugin-usage', + ], + }, + 'reference/integrations/slack-app', + 'reference/integrations/teams', + 'reference/integrations/webhook', + { + type: 'doc', + label: 'Terraform', + id: 'reference/terraform', + }, ], }, + ], + }, + { + label: 'Data privacy and compliance', + type: 'category', + link: { + type: 'doc', + id: 'understanding-unleash/data-collection', + }, + items: [ + { + type: 'doc', + label: 'Data collection and privacy', + id: 'understanding-unleash/data-collection', + }, { type: 'category', label: 'Compliance', @@ -650,7 +670,7 @@ const sidebars: SidebarsConfig = { }, { type: 'doc', - label: 'SOC2 Type II', + label: 'SOC2 type II', id: 'using-unleash/compliance/soc2', }, { @@ -660,28 +680,38 @@ const sidebars: SidebarsConfig = { }, ], }, - 'troubleshooting', ], }, { - label: 'Contributing to Unleash', + label: 'Support and community', type: 'category', - collapsed: true, - link: { - type: 'doc', - id: 'contributing/developer-guide', - }, items: [ - 'contributing/developer-guide', - 'contributing/frontend/overview', - 'contributing/backend/overview', { + type: 'doc', + id: 'troubleshooting', + label: 'Troubleshooting', + }, + { + label: 'Contribute to Unleash', type: 'category', - label: 'Architectural Decision Records', + collapsed: true, + link: { + type: 'doc', + id: 'contributing/developer-guide', + }, items: [ + 'contributing/developer-guide', + 'contributing/frontend/overview', + 'contributing/backend/overview', { - type: 'autogenerated', - dirName: 'contributing/ADRs', // '.' means the current docs folder + type: 'category', + label: 'Architectural decision records', + items: [ + { + type: 'autogenerated', + dirName: 'contributing/ADRs', + }, + ], }, ], },