update language-specific guides
@ -69,18 +69,18 @@ Learn more:
|
||||
Step-by-step examples for React, Java, Python, and other SDKs show you how to connect, configure, and evaluate feature flags in real applications.
|
||||
|
||||
**Frontend SDKs**
|
||||
- [React](/feature-flag-tutorials/react)
|
||||
- [JavaScript](/feature-flag-tutorials/javascript)
|
||||
- [Next.js](/feature-flag-tutorials/nextjs)
|
||||
- [SvelteKit](/feature-flag-tutorials/sveltekit)
|
||||
- [Flutter](/feature-flag-tutorials/flutter/a-b-testing)
|
||||
- [iOS](/feature-flag-tutorials/ios)
|
||||
- [React](/guides/implement-feature-flags-in-react)
|
||||
- [JavaScript](/guides/implement-feature-flags-in-javascript)
|
||||
- [Next.js](/guides/implement-feature-flags-in-nextjs)
|
||||
- [SvelteKit](/guides/implement-feature-flags-in-sveltekit)
|
||||
- [Flutter](/guides/implement-ab-test-in-flutter)
|
||||
- [iOS](/guides/implement-feature-flags-in-ios)
|
||||
|
||||
**Backend SDKs**
|
||||
- [Java](/feature-flag-tutorials/java)
|
||||
- [Python](/feature-flag-tutorials/python)
|
||||
- [Go](/feature-flag-tutorials/go)
|
||||
- [.NET](/feature-flag-tutorials/dotnet)
|
||||
- [Ruby](/feature-flag-tutorials/ruby)
|
||||
- [Rust](/feature-flag-tutorials/rust)
|
||||
- [Serverless](/feature-flag-tutorials/serverless/lambda)
|
||||
- [Java](/guides/implement-feature-flags-in-java)
|
||||
- [Python](/guides/implement-feature-flags-in-python)
|
||||
- [Go](/guides/implement-feature-flags-in-golang)
|
||||
- [.NET](/guides/implement-feature-flags-in-dotnet)
|
||||
- [Ruby](/guides/implement-feature-flags-in-ruby)
|
||||
- [Rust](/guides/implement-feature-flags-in-rust)
|
||||
- [Serverless](/guides/implement-feature-flags-in-aws-lambda)
|
||||
@ -128,5 +128,5 @@ For examples that show how to connect to Unleash in other programming languages,
|
||||
You have successfully connected Unleash to your application. To continue exploring, see the following resources:
|
||||
|
||||
- **Core concepts**: Learn about the [Unleash architecture](/get-started/unleash-overview), available [hosting options](/deploy/hosting-options), and other [reference documentation](/reference/projects).
|
||||
- **Developer guides**: Explore feature flag [best practices](/guides/feature-flag-best-practices) and [language-specific tutorials](/feature-flag-tutorials/react).
|
||||
- **Developer guides**: Explore feature flag [best practices](/guides/feature-flag-best-practices) and [language-specific tutorials](/guides/implement-feature-flags-in-react).
|
||||
- **Join the community**: Have questions or feedback? Join the [Unleash community on Slack](https://slack.unleash.run) to connect with other developers and the Unleash team.
|
||||
|
||||
@ -136,7 +136,7 @@ The output from the impression data in your app may look like this code snippet:
|
||||
}
|
||||
```
|
||||
|
||||
In order to capture impression events in your app, follow our [language and framework-specific tutorials](/feature-flag-tutorials/react).
|
||||
In order to capture impression events in your app, follow our [language and framework-specific tutorials](/guides/implement-feature-flags-in-react).
|
||||
|
||||
Now that your application is capturing impression events, you can configure the correct data fields and formatting to send to any analytics tool or data warehouse you use.
|
||||
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Django Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/django/examples
|
||||
slug: /guides/feature-flag-examples-django
|
||||
---
|
||||
|
||||
In our [Django feature flag tutorial](/feature-flag-tutorials/django), we implemented a simple feature flag that could be turned on and off. In the real world, many feature flag use cases have more nuance than this. This document will walk you through some common examples of using feature flags in Django with some of those more advanced use cases in mind.
|
||||
In our [Django feature flag tutorial](/guides/implement-feature-flags-in-django), we implemented a simple feature flag that could be turned on and off. In the real world, many feature flag use cases have more nuance than this. This document will walk you through some common examples of using feature flags in Django with some of those more advanced use cases in mind.
|
||||
|
||||
We built multiple features into Unleash, an open-source feature flag platform, to address the complexities of releasing code and managing feature flags along the way. This tutorial will explore the following:
|
||||
|
||||
@ -186,7 +186,7 @@ A/B testing is a common way for teams to test out how users interact with two or
|
||||
|
||||
When a feature flag is enabled, we can expose a particular version of a feature to select user bases. From there, we can use the variants to view the performance metrics in Unleash and see which is more efficient.
|
||||
|
||||
In the context of our [Python tutorial](/feature-flag-tutorials/python), let’s say we want to test a new variation of the flag for deleting surveys. In this new variation, we want the UI to remain the same–a delete button that removes a survey–but server-side, we’d like to store the deleted surveys in a new database model so they can be restored if a user decides to.
|
||||
In the context of our [Python tutorial](/guides/implement-feature-flags-in-python), let’s say we want to test a new variation of the flag for deleting surveys. In this new variation, we want the UI to remain the same–a delete button that removes a survey–but server-side, we’d like to store the deleted surveys in a new database model so they can be restored if a user decides to.
|
||||
|
||||
While we won’t implement all the functionality required to save and restore deleted surveys in this example, we can walk through how to set up variants and where the server-side changes would take place in the Python app.
|
||||
|
||||
@ -326,7 +326,7 @@ You can find more information in our [impression data docs](/reference/impressio
|
||||
|
||||
## Application Metrics and Monitoring for Django
|
||||
|
||||
Under your feature flag’s Metrics tab in Unleash, you can see the general activity of the [Flask Surveys Container App](/feature-flag-tutorials/python) tutorial in the development environment over different periods of time. If the app had a production environment enabled, we would also be able to view exposure (amount of users that are exposed to the flag by count and overall percentage) and requests the app is receiving over time.
|
||||
Under your feature flag’s Metrics tab in Unleash, you can see the general activity of the [Flask Surveys Container App](/guides/implement-feature-flags-in-python) tutorial in the development environment over different periods of time. If the app had a production environment enabled, we would also be able to view exposure (amount of users that are exposed to the flag by count and overall percentage) and requests the app is receiving over time.
|
||||
|
||||

|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Django
|
||||
description: "How to use Unleash feature flags with Django."
|
||||
slug: /feature-flag-tutorials/django
|
||||
slug: /guides/implement-feature-flags-in-django
|
||||
---
|
||||
|
||||
Hello! In this tutorial, we’ll show you how to add feature flags to your Django app, using [Unleash](https://www.getunleash.io/) and the official [Unleash Python SDK](/reference/sdks/python). With Unleash, an open-source feature flag service, you can use our tooling to add feature flags to your application and release new features faster.
|
||||
@ -16,7 +16,7 @@ For this tutorial, you'll need the following:
|
||||
- Git
|
||||
- Docker and Docker Compose
|
||||
|
||||

|
||||

|
||||
|
||||
The Unleash Server is a **Feature Flag Control Service**, which manages your feature flags and lets you retrieve flag data. Unleash has a UI for creating and managing projects and feature flags. For backend applications or automated scripts, Unleash exposes an [API](/get-started/api-overview) defined by an OpenAPI specification, allowing you to perform these actions programmatically.
|
||||
|
||||
@ -43,11 +43,11 @@ Password: unleash4all
|
||||
|
||||
Click the 'New feature flag' button to create a new feature flag.
|
||||
|
||||

|
||||

|
||||
|
||||
Call it `top-3` and enable it in the `development` environment.
|
||||
|
||||

|
||||

|
||||
|
||||
Everything's now set up on the Unleash side. Let's set up the Django application.
|
||||
|
||||
@ -84,7 +84,7 @@ python manage.py runserver
|
||||
|
||||
Go to [http://localhost:8000](http://localhost:8000) and check that you see the following:
|
||||
|
||||

|
||||

|
||||
|
||||
## 3. Restrict the number of posts
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: .NET Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/dotnet/examples
|
||||
slug: /guides/feature-flag-examples-dotnet
|
||||
---
|
||||
|
||||
In our [.NET feature flag tutorial](/feature-flag-tutorials/dotnet), we implemented a simple feature flag that could be turned on and off. This document will walk you through some common examples of using feature flags in .NET.
|
||||
In our [.NET feature flag tutorial](/guides/implement-feature-flags-in-dotnet), we implemented a simple feature flag that could be turned on and off. This document will walk you through some common examples of using feature flags in .NET.
|
||||
|
||||
We built many features into Unleash, our open-source feature flag platform, to address the complexities of releasing code. This tutorial will explore the following:
|
||||
|
||||
@ -182,7 +182,7 @@ When a feature flag is enabled, we can expose a particular version of a feature
|
||||
|
||||
In Unleash, navigate go to a feature flag, then click on an environment to open your strategy.
|
||||
|
||||

|
||||

|
||||
|
||||
Click ‘Edit Strategy'
|
||||
|
||||
@ -190,7 +190,7 @@ Click ‘Edit Strategy'
|
||||
|
||||
Only enable your flag for 50% of users.
|
||||
|
||||

|
||||

|
||||
|
||||
Alternatively, you can do that with a `PUT` request in .NET using our API:
|
||||
|
||||
@ -244,13 +244,13 @@ Let’s walk through how to enable impression data for a feature flag.
|
||||
|
||||
At the flag level in Unleash, navigate to the Settings view.
|
||||
|
||||

|
||||

|
||||
|
||||
In the Settings view, there's an edit button with pencil icon. This will take us to the ‘Edit Feature flag’ form.
|
||||
|
||||
Turn on the impression data and then save it. Events will now be emitted every time the feature flag is triggered.
|
||||
|
||||

|
||||

|
||||
|
||||
You can also use our API command to enable the impression data:
|
||||
|
||||
@ -318,7 +318,7 @@ You can view [Event Log](/reference/events#event-log) to monitor the changes to
|
||||
- How the gradual rollout strategy was configured
|
||||
- When and how the variants were created and configured
|
||||
|
||||

|
||||

|
||||
|
||||
You can also retrieve events by using an API command, like below:
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in .NET
|
||||
description: "How to use Unleash feature flags with .NET."
|
||||
slug: /feature-flag-tutorials/dotnet
|
||||
slug: /guides/implement-feature-flags-in-dotnet
|
||||
---
|
||||
|
||||
Hello! In this tutorial we’ll show you how to add feature flags to your .NET app, using [Unleash](https://www.getunleash.io/) and the official [Unleash .NET SDK](/reference/sdks/dotnet). With Unleash, an open-source feature management service, you can use our tooling to add feature flags to your application and release new features faster.
|
||||
@ -22,7 +22,7 @@ For this tutorial, you’ll need the following:
|
||||
- Git
|
||||
- Docker and Docker Compose
|
||||
|
||||

|
||||

|
||||
|
||||
The Unleash Server is a **Feature Flag Control Service**, which manages your feature flags and lets you retrieve flag data. Unleash has a UI for creating and managing projects and feature flags. There are also [API commands available](/get-started/api-overview) to perform the same actions straight from your CLI or app.
|
||||
|
||||
@ -49,11 +49,11 @@ Password: unleash4all
|
||||
|
||||
Click the ‘New feature flag’ button to create a new feature flag.
|
||||
|
||||

|
||||

|
||||
|
||||
Call it `graphql-api` and enable it in the `development` environment.
|
||||
|
||||

|
||||

|
||||
|
||||
Next, generate an API token to authenticate calls made to Unleash servers from your project.
|
||||
|
||||
@ -281,7 +281,7 @@ Now that we’ve connected our project to Unleash and grabbed our feature flag,
|
||||
|
||||
> **Note:** An update to a feature flag may take 30 seconds to propagate.
|
||||
|
||||

|
||||

|
||||
|
||||
## Conclusion
|
||||
|
||||
@ -292,6 +292,6 @@ All done! Now you know how to add feature flags with Unleash in .NET. You’ve l
|
||||
- Initialise the Unleash client as part of your web api's services
|
||||
- Grab the value of a feature flag with the .NET SDK
|
||||
|
||||
Feel free to checkout our [.NET Examples docs](/feature-flag-tutorials/dotnet/examples) for more use-cases.
|
||||
Feel free to checkout our [.NET Examples docs](/guides/feature-flag-examples-dotnet) for more use-cases.
|
||||
|
||||
Thank you
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: A/B Testing in Flutter using Unleash and Mixpanel
|
||||
slug: "/feature-flag-tutorials/flutter/a-b-testing"
|
||||
slug: /guides/implement-ab-test-in-flutter
|
||||
---
|
||||
|
||||
:::note
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Go feature flag examples
|
||||
slug: /feature-flag-tutorials/golang/examples
|
||||
slug: /guides/feature-flag-examples-golang
|
||||
---
|
||||
|
||||
In our [Go feature flag tutorial](/feature-flag-tutorials/go), we implemented a simple feature flag that could be turned on and off. This document will walk you through other examples of what can be achieved using feature flags in Go.
|
||||
In our [Go feature flag tutorial](/guides/implement-feature-flags-in-golang), we implemented a simple feature flag that could be turned on and off. This document will walk you through other examples of what can be achieved using feature flags in Go.
|
||||
|
||||
We built many features into Unleash, our open-source feature flag platform, to address the complexities of releasing code.
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Go
|
||||
description: "How to use Unleash feature flags with Go."
|
||||
slug: /feature-flag-tutorials/go
|
||||
slug: /guides/implement-feature-flags-in-golang
|
||||
---
|
||||
|
||||
import VideoContent from '@site/src/components/VideoContent.jsx';
|
||||
@ -19,7 +19,7 @@ For this tutorial, you'll need the following:
|
||||
- Docker and Docker Compose
|
||||
- Go Modules, to manage your dependencies
|
||||
|
||||

|
||||

|
||||
|
||||
The Unleash Server is a **Feature Flag Control Service**, which manages your feature flags and lets you retrieve flag data. Unleash has a UI for creating and managing projects and feature flags. You can perform the same actions straight from your CLI or server-side app using the [Unleash API](/get-started/api-overview).
|
||||
|
||||
@ -276,6 +276,6 @@ All done! Now you know how to add feature flags with Unleash in Go. You've learn
|
||||
- Install Unleash and create/enable a feature flag
|
||||
- Grab the value of a feature flag with the Go SDK
|
||||
|
||||
Feel free to have a look at our [Go Examples page](/feature-flag-tutorials/golang/examples) for more.
|
||||
Feel free to have a look at our [Go Examples page](/guides/feature-flag-examples-golang) for more.
|
||||
|
||||
Thank you
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: iOS Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/ios/examples
|
||||
slug: /guides/feature-flag-examples-ios
|
||||
---
|
||||
|
||||
In our [iOS feature flag tutorial](/feature-flag-tutorials/ios), we implemented a simple feature flag that could be turned on and off. In the real world, many feature flag use cases have more nuance than this. This document will walk through some common examples of using feature flags in iOS Swift with some of those more advanced use cases in mind.
|
||||
In our [iOS feature flag tutorial](/guides/implement-feature-flags-in-ios), we implemented a simple feature flag that could be turned on and off. In the real world, many feature flag use cases have more nuance than this. This document will walk through some common examples of using feature flags in iOS Swift with some of those more advanced use cases in mind.
|
||||
|
||||
We built multiple features into Unleash, an open-source feature flag platform, to address the complexities of releasing code and managing feature flags along the way. This tutorial will explore the following:
|
||||
|
||||
@ -19,7 +19,7 @@ We built multiple features into Unleash, an open-source feature flag platform, t
|
||||
|
||||
It’s common to use feature flags to roll out changes to a percentage of users. Flags allow you to monitor your application and infrastructure for undesired behavior (such as errors, memory bottlenecks, etc.) and to see if the changes improve the outcomes for your application (to increase sales, reduce support requests, etc.)
|
||||
|
||||
Doing a gradual rollout for a iOS-based application with Unleash is very straightforward. To see this in action, follow our [How to Implement Feature Flags in iOS](/feature-flag-tutorials/ios) tutorial.
|
||||
Doing a gradual rollout for a iOS-based application with Unleash is very straightforward. To see this in action, follow our [How to Implement Feature Flags in iOS](/guides/implement-feature-flags-in-ios) tutorial.
|
||||
|
||||
Once you have completed the tutorial, you can modify the basic setup to adjust the percentage of users who experience this feature with a gradual rollout. The experience that the user is exposed to is cached for consistency.
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in iOS
|
||||
slug: /feature-flag-tutorials/ios
|
||||
slug: /guides/implement-feature-flags-in-ios
|
||||
---
|
||||
|
||||
iOS is a mobile operating system developed by Apple for their mostly used mobile device: the iPhone. [Swift](https://www.swift.org/) is a programming language designed for Apple iOS devices. Unleash offers an [iOS SDK](/reference/sdks/ios) for connecting SwiftUI with your iOS application to use feature flags. We will be using the open-source iOS Swift project called [Open Meteo](https://github.com/ighiba/open-meteo)!
|
||||
@ -204,4 +204,4 @@ Next, return to your app and rebuild the project. With the flag disabled, the fl
|
||||
|
||||
In this tutorial, we ran Unleash locally, created a new feature flag, installed the iOS SDK into an iOS app, and logged a feature flag status.
|
||||
|
||||
Explore some [more advanced uses cases in our iOS Examples](/feature-flag-tutorials/ios/examples)
|
||||
Explore some [more advanced uses cases in our iOS Examples](/guides/feature-flag-examples-ios)
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Java
|
||||
slug: /feature-flag-tutorials/java
|
||||
slug: /guides/implement-feature-flags-in-java
|
||||
---
|
||||
|
||||
import VideoContent from '@site/src/components/VideoContent.jsx';
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Java Spring Boot Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/spring-boot/examples
|
||||
slug: /guides/feature-flag-examples-spring-boot
|
||||
---
|
||||
|
||||
In our [Java Spring Boot feature flag tutorial](/feature-flag-tutorials/spring-boot), we implemented a simple feature flag that could be turned on and off. In the real world, many feature flag use cases have more nuance than this. This document will walk you through some common examples of using feature flags in Java Spring Boot with some of those more advanced use cases in mind.
|
||||
In our [Java Spring Boot feature flag tutorial](/guides/implement-feature-flags-in-spring-boot), we implemented a simple feature flag that could be turned on and off. In the real world, many feature flag use cases have more nuance than this. This document will walk you through some common examples of using feature flags in Java Spring Boot with some of those more advanced use cases in mind.
|
||||
|
||||
We built multiple features into Unleash, an open-source feature flag platform, to address the complexities of releasing code and managing feature flags along the way. This tutorial will explore the following:
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Java Spring Boot
|
||||
slug: /feature-flag-tutorials/spring-boot
|
||||
slug: /guides/implement-feature-flags-in-spring-boot
|
||||
---
|
||||
|
||||
import VideoContent from '@site/src/components/VideoContent.jsx';
|
||||
@ -376,4 +376,4 @@ The message rendering in the browser confirms that the app is now targeting the
|
||||
|
||||
In this tutorial, we created a new feature flag in Unleash and built a new page in the Spring Pet Clinic app. From there, we created two service implementations within the app for the new page and toggled between them with the feature flag. The Unleash Spring Boot SDK gave us the proper annotations to automatically toggle between the two implementations with minimal configuration.
|
||||
|
||||
Continue on to our [Spring Boot examples documentation](/feature-flag-tutorials/spring-boot/examples) for more advanced use cases of feature flags in Java Spring Boot using the Spring PetClinic app!
|
||||
Continue on to our [Spring Boot examples documentation](/guides/feature-flag-examples-spring-boot) for more advanced use cases of feature flags in Java Spring Boot using the Spring PetClinic app!
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in JavaScript
|
||||
description: "How to use Unleash feature flags with plain JavaScript."
|
||||
slug: /feature-flag-tutorials/javascript
|
||||
slug: /guides/implement-feature-flags-in-javascript
|
||||
---
|
||||
|
||||
import VideoContent from '@site/src/components/VideoContent.jsx';
|
||||
@ -17,7 +17,7 @@ For this tutorial, you'll need the following:
|
||||
- Docker and Docker Compose
|
||||
- A browser or IDE; you can also use [CodeSandbox](https://codesandbox.io/docs/learn)
|
||||
|
||||

|
||||

|
||||
|
||||
The Unleash Server is a **Feature Flag Control Service**, which manages your feature flags and lets you retrieve flag data. Unleash has a UI for creating and managing projects and feature flags. In this example, we'll set up a script to make requests to Unleash using the Unleash SDK and show/hide a DOM element based on the flag data we receive.
|
||||
|
||||
@ -104,7 +104,7 @@ In the `index.html` file, add the following:
|
||||
|
||||
Open the file in your browser, you'll see something like this:
|
||||
|
||||

|
||||

|
||||
|
||||
## Fetch images from the API
|
||||
|
||||
@ -154,7 +154,7 @@ start();
|
||||
|
||||
Refresh your browser again. Our website is now functional.
|
||||
|
||||

|
||||

|
||||
|
||||
## 5. Add Unleash to your website
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Next.js using Unleash
|
||||
slug: /feature-flag-tutorials/nextjs
|
||||
slug: /guides/implement-feature-flags-in-nextjs
|
||||
---
|
||||
|
||||
:::note
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Python Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/python/examples
|
||||
slug: /guides/feature-flag-examples-python
|
||||
---
|
||||
|
||||
In our [Python feature flag tutorial](/feature-flag-tutorials/python), we implemented a simple feature flag that could be turned on and off. In the real world, many feature flag use cases have more nuance than this. This document will walk you through some common examples of using feature flags in Python with some of those more advanced use cases in mind.
|
||||
In our [Python feature flag tutorial](/guides/implement-feature-flags-in-python), we implemented a simple feature flag that could be turned on and off. In the real world, many feature flag use cases have more nuance than this. This document will walk you through some common examples of using feature flags in Python with some of those more advanced use cases in mind.
|
||||
|
||||
We built multiple features into Unleash, an open-source feature flag platform, to address the complexities of releasing code and managing feature flags along the way. This tutorial will explore the following:
|
||||
|
||||
@ -185,7 +185,7 @@ A/B testing is a common way for teams to test out how users interact with two or
|
||||
|
||||
When a feature flag is enabled, we can expose a particular version of a feature to select user bases. From there, we can use the variants to view the performance metrics in Unleash and see which is more efficient.
|
||||
|
||||
In the context of our [Python tutorial](/feature-flag-tutorials/python), let’s say we want to test a new variation of the flag for deleting surveys. In this new variation, we want the UI to remain the same–a delete button that removes a survey–but server-side, we’d like to store the deleted surveys in a new database model so they can be restored if a user decides to.
|
||||
In the context of our [Python tutorial](/guides/implement-feature-flags-in-python), let’s say we want to test a new variation of the flag for deleting surveys. In this new variation, we want the UI to remain the same–a delete button that removes a survey–but server-side, we’d like to store the deleted surveys in a new database model so they can be restored if a user decides to.
|
||||
|
||||
While we won’t implement all the functionality required to save and restore deleted surveys in this example, we can walk through how to set up variants and where the server-side changes would take place in the Python app.
|
||||
|
||||
@ -325,7 +325,7 @@ You can find more information in our [impression data docs](/reference/impressio
|
||||
|
||||
## Application Metrics & Monitoring for Python
|
||||
|
||||
Under your feature flag’s Metrics tab in Unleash, you can see the general activity of the [Flask Surveys Container App](/feature-flag-tutorials/python) tutorial in the development environment over different periods of time. If the app had a production environment enabled, we would also be able to view exposure (amount of users that are exposed to the flag by count and overall percentage) and requests the app is receiving over time.
|
||||
Under your feature flag’s Metrics tab in Unleash, you can see the general activity of the [Flask Surveys Container App](/guides/implement-feature-flags-in-python) tutorial in the development environment over different periods of time. If the app had a production environment enabled, we would also be able to view exposure (amount of users that are exposed to the flag by count and overall percentage) and requests the app is receiving over time.
|
||||
|
||||

|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Python
|
||||
slug: /feature-flag-tutorials/python
|
||||
slug: /guides/implement-feature-flags-in-python
|
||||
---
|
||||
|
||||
import VideoContent from '@site/src/components/VideoContent.jsx';
|
||||
@ -281,4 +281,4 @@ Next, return to your Survey app and refresh the browser. With the flag disabled,
|
||||
|
||||
In this tutorial, we ran Unleash locally, created a new feature flag, installed the Python SDK into a Python Flask app, and toggled new functionality that altered a database with a containerized project!
|
||||
|
||||
Continue to our [Python Examples docs](/feature-flag-tutorials/python/examples) for more advanced applications of feature flags in Python using our Flask Surveys Containers App!
|
||||
Continue to our [Python Examples docs](/guides/feature-flag-examples-python) for more advanced applications of feature flags in Python using our Flask Surveys Containers App!
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Rails
|
||||
description: "How to use Unleash feature flags with Rails."
|
||||
slug: /feature-flag-tutorials/rails
|
||||
slug: /guides/implement-feature-flags-in-rails
|
||||
---
|
||||
|
||||
Hello! In this tutorial, we’ll show you how to add feature flags to your Ruby on Rails app, using [Unleash](https://www.getunleash.io/) and the official [Unleash Ruby SDK](/reference/sdks/ruby). With Unleash, an open-source feature flag service, you can use our tooling to add feature flags to your application and release new features faster.
|
||||
@ -28,7 +28,7 @@ For this tutorial, you’ll need the following:
|
||||
- Git
|
||||
- Docker and Docker Compose
|
||||
|
||||

|
||||

|
||||
|
||||
The Unleash Server is a **Feature Flag Control Service**, which manages your feature flags and lets you retrieve flag data. Unleash has a UI for creating and managing projects and feature flags. There are also [API commands available](/get-started/api-overview) to perform the same actions straight from your CLI or server-side app.
|
||||
|
||||
@ -67,11 +67,11 @@ Password: unleash4all
|
||||
|
||||
Click the ‘New feature flag’ button to create a new feature flag.
|
||||
|
||||

|
||||

|
||||
|
||||
Call it `top-3` and enable it in the `development` environment.
|
||||
|
||||

|
||||

|
||||
|
||||
Everything’s now set up on the Unleash side. Let’s set up the Rails application.
|
||||
|
||||
@ -114,7 +114,7 @@ rails server
|
||||
|
||||
Go to [http://localhost:3000](http://localhost:3000) and check that you see the following:
|
||||
|
||||

|
||||

|
||||
|
||||
## 4. Restrict the number of posts
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Rails Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/rails/examples
|
||||
slug: /guides/feature-flag-examples-rails
|
||||
---
|
||||
|
||||
In our [Rails feature flag tutorial](/feature-flag-tutorials/rails), we implemented a simple feature flag that could be turned on and off. This document will walk you through some common examples of using feature flags in Rails.
|
||||
In our [Rails feature flag tutorial](/guides/implement-feature-flags-in-rails), we implemented a simple feature flag that could be turned on and off. This document will walk you through some common examples of using feature flags in Rails.
|
||||
|
||||
We built many features into Unleash, our open-source feature flag platform, to address the complexities of releasing code. This tutorial will explore the following:
|
||||
|
||||
@ -181,7 +181,7 @@ When a feature flag is enabled, we can expose a particular version of a feature
|
||||
|
||||
In Unleash, navigate go to a feature flag, then click on an environment to open your strategy.
|
||||
|
||||

|
||||

|
||||
|
||||
Click ‘Edit Strategy'
|
||||
|
||||
@ -189,7 +189,7 @@ Click ‘Edit Strategy'
|
||||
|
||||
Only enable your flag for 50% of users.
|
||||
|
||||

|
||||

|
||||
|
||||
Alternatively, you can do that with a `PUT` request in Ruby using our API:
|
||||
|
||||
@ -243,13 +243,13 @@ Let’s walk through how to enable impression data for a feature flag.
|
||||
|
||||
At the flag level in Unleash, navigate to the Settings view.
|
||||
|
||||

|
||||

|
||||
|
||||
In the Settings view, there's an edit button with pencil icon. This will take us to the ‘Edit Feature flag’ form.
|
||||
|
||||
Turn on the impression data and then save it. Events will now be emitted every time the feature flag is triggered.
|
||||
|
||||

|
||||

|
||||
|
||||
You can also use our API command to enable the impression data:
|
||||
|
||||
@ -315,7 +315,7 @@ You can view events in [Event Log](/reference/events#event-log) to monitor the c
|
||||
- How the gradual rollout strategy was configured
|
||||
- When and how the variants were created and configured
|
||||
|
||||

|
||||

|
||||
|
||||
You can also retrieve events by using an API command, like below:
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: React Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/react/examples
|
||||
slug: /guides/feature-flag-examples-react
|
||||
---
|
||||
|
||||
In our [React tutorial](/feature-flag-tutorials/react), we implemented a simple on/off feature flag. In the real world, many feature flag use cases have more nuance than this. This document will walk you through some common examples of using feature flags in React with some of those more advanced use cases in mind.
|
||||
In our [React tutorial](/guides/implement-feature-flags-in-react), we implemented a simple on/off feature flag. In the real world, many feature flag use cases have more nuance than this. This document will walk you through some common examples of using feature flags in React with some of those more advanced use cases in mind.
|
||||
|
||||
Applications evolve, and teams must manage all aspects of this evolution, including the flags used to control the application. We built multiple features into Unleash to address the complexities of releasing code and managing feature flags along the way:
|
||||
|
||||
@ -34,7 +34,7 @@ Applications evolve, and teams must manage all aspects of this evolution, includ
|
||||
|
||||
It’s common to use feature flags to roll out changes to a percentage of users. Flags allow you to monitor your application and infrastructure for undesired behavior (such as errors, memory bottlenecks, etc.) and to see if the changes improve the outcomes for your application (to increase sales, reduce support requests, etc.)
|
||||
|
||||
Doing a gradual rollout for a React-based application with Unleash is very straightforward. To see this in action, follow our [How to Implement Feature Flags in React](/feature-flag-tutorials/react) tutorial, which implements a notification feature using feature flags.
|
||||
Doing a gradual rollout for a React-based application with Unleash is very straightforward. To see this in action, follow our [How to Implement Feature Flags in React](/guides/implement-feature-flags-in-react) tutorial, which implements a notification feature using feature flags.
|
||||
|
||||
Once you have completed the tutorial, you can modify the basic setup to adjust the percentage of users who experience this feature with a gradual rollout. The experience that the user is exposed to is cached for consistency.
|
||||
|
||||
@ -172,7 +172,7 @@ We can expose a particular version of the feature to select user bases when a fl
|
||||
|
||||
We can create several variations of this feature to release to users and gather performance metrics to determine which one yields better results. While teams may have different goals for measuring performance, Unleash enables you to configure strategy for the feature variants within your application/service and the platform.
|
||||
|
||||
In the context of our [React tutorial](/feature-flag-tutorials/react), we have a notifications badge feature that displays in the top navigation menu. To implement feature flag variants for an A/B Test in React, we will set up a variant in the feature flag and use an announcement icon from Material UI to render a different version.
|
||||
In the context of our [React tutorial](/guides/implement-feature-flags-in-react), we have a notifications badge feature that displays in the top navigation menu. To implement feature flag variants for an A/B Test in React, we will set up a variant in the feature flag and use an announcement icon from Material UI to render a different version.
|
||||
|
||||
In Unleash, navigate to the feature flag’s Variants tab and add a variant.
|
||||
|
||||
@ -376,7 +376,7 @@ Now that the application is capturing impression events, you can configure the c
|
||||
|
||||
### Application Metrics & Monitoring
|
||||
|
||||
Under the Metrics tab, you can see the general activity of the [Cypress Real World App from our React tutorial](/feature-flag-tutorials/react) in the development environment over different periods of time. If the app had a production environment enabled, we would also be able to view the amount of exposure and requests the app is receiving over time.
|
||||
Under the Metrics tab, you can see the general activity of the [Cypress Real World App from our React tutorial](/guides/implement-feature-flags-in-react) in the development environment over different periods of time. If the app had a production environment enabled, we would also be able to view the amount of exposure and requests the app is receiving over time.
|
||||
|
||||

|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in React
|
||||
slug: /feature-flag-tutorials/react
|
||||
pagination_next: feature-flag-tutorials/react/examples
|
||||
slug: /guides/implement-feature-flags-in-react
|
||||
pagination_next: guides/language-specific-tutorials/react/examples
|
||||
---
|
||||
|
||||
import VideoContent from '@site/src/components/VideoContent.jsx';
|
||||
@ -253,4 +253,4 @@ You've successfully implemented a feature flag using best practices to control t
|
||||
|
||||
In this tutorial, we installed Unleash locally, created a new feature flag, installed Unleash into a React app, and toggled the visibility of a notifications feature within a [real world open source project](https://github.com/cypress-io/cypress-realworld-app)!
|
||||
|
||||
Explore some [more advanced uses cases in our React Examples](/feature-flag-tutorials/react/examples)
|
||||
Explore some [more advanced uses cases in our React Examples](/guides/feature-flag-examples-react)
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Ruby
|
||||
description: "How to use Unleash feature flags with Ruby."
|
||||
slug: /feature-flag-tutorials/ruby
|
||||
slug: /guides/implement-feature-flags-in-ruby
|
||||
---
|
||||
|
||||
import VideoContent from '@site/src/components/VideoContent.jsx';
|
||||
@ -33,7 +33,7 @@ For this tutorial, you’ll need the following:
|
||||
- Docker and Docker Compose
|
||||
- (Optional) Bundler, to manage your gemfile
|
||||
|
||||

|
||||

|
||||
|
||||
The Unleash Server is a **Feature Flag Control Service**, which manages your feature flags and lets you retrieve flag data. Unleash has a UI for creating and managing projects and feature flags. There are also [API commands available](/get-started/api-overview) to perform the same actions straight from your CLI or server-side app.
|
||||
|
||||
@ -72,11 +72,11 @@ Password: unleash4all
|
||||
|
||||
Click the ‘New feature flag’ button to create a new feature flag.
|
||||
|
||||

|
||||

|
||||
|
||||
Call it `graphql-api` and enable it in the `development` environment.
|
||||
|
||||

|
||||

|
||||
|
||||
Everything’s now setup on the Unleash side. Let’s go to the code now.
|
||||
|
||||
@ -225,7 +225,7 @@ Now that we’ve connected our project to Unleash and grabbed our feature flag,
|
||||
|
||||
> **Note:** An update to a feature flag may take 30 seconds to propagate.
|
||||
|
||||

|
||||

|
||||
|
||||
## Conclusion
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Ruby Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/ruby/examples
|
||||
slug: /guides/feature-flag-examples-ruby
|
||||
---
|
||||
|
||||
In our [Ruby feature flag tutorial](/feature-flag-tutorials/ruby), we implemented a simple feature flag that could be turned on and off. This document will walk you through some common examples of using feature flags in Ruby.
|
||||
In our [Ruby feature flag tutorial](/guides/implement-feature-flags-in-ruby), we implemented a simple feature flag that could be turned on and off. This document will walk you through some common examples of using feature flags in Ruby.
|
||||
|
||||
We built many features into Unleash, our open-source feature flag platform, to address the complexities of releasing code. This tutorial will explore the following:
|
||||
|
||||
@ -180,7 +180,7 @@ When a feature flag is enabled, we can expose a particular version of a feature
|
||||
|
||||
In Unleash, navigate go to a feature flag, then click on an environment to open your strategy.
|
||||
|
||||

|
||||

|
||||
|
||||
Click ‘Edit Strategy'
|
||||
|
||||
@ -188,7 +188,7 @@ Click ‘Edit Strategy'
|
||||
|
||||
Only enable your flag for 50% of users.
|
||||
|
||||

|
||||

|
||||
|
||||
Alternatively, you can do that with a `PUT` request in Ruby using our API:
|
||||
|
||||
@ -242,13 +242,13 @@ Let’s walk through how to enable impression data for a feature flag.
|
||||
|
||||
At the flag level in Unleash, navigate to the Settings view.
|
||||
|
||||

|
||||

|
||||
|
||||
In the Settings view, there's an edit button with pencil icon. This will take us to the ‘Edit Feature flag’ form.
|
||||
|
||||
Turn on the impression data and then save it. Events will now be emitted every time the feature flag is triggered.
|
||||
|
||||

|
||||

|
||||
|
||||
You can also use our API command to enable the impression data:
|
||||
|
||||
@ -314,7 +314,7 @@ You can view [Event Log](/reference/events#event-log) to monitor the changes to
|
||||
- How the gradual rollout strategy was configured
|
||||
- When and how the variants were created and configured
|
||||
|
||||

|
||||

|
||||
|
||||
You can also retrieve events by using an API command, like below:
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in Rust
|
||||
description: "How to use Unleash feature flags with Rust."
|
||||
slug: /feature-flag-tutorials/rust
|
||||
slug: /guides/implement-feature-flags-in-rust
|
||||
---
|
||||
|
||||
Hello! In this tutorial we’ll show you how to add feature flags to your Rust app, using [Unleash](https://www.getunleash.io/) and the official [Unleash Rust SDK](/reference/sdks/rust). With Unleash, an open-source feature management service, you can add feature flags to your applications and release new features faster.
|
||||
@ -24,7 +24,7 @@ For this tutorial, you’ll need the following:
|
||||
- Git
|
||||
- Docker and Docker Compose
|
||||
|
||||

|
||||

|
||||
|
||||
The Unleash Server is a **Feature Flag Control Service**, which manages your feature flags and lets you retrieve flag data. Unleash has a UI for creating and managing projects and feature flags. There are also [API commands available](/get-started/api-overview) to perform the same actions straight from your CLI or app.
|
||||
|
||||
@ -51,11 +51,11 @@ Password: unleash4all
|
||||
|
||||
Click the ‘New feature flag’ button to create a new feature flag.
|
||||
|
||||

|
||||

|
||||
|
||||
Call it `webp` and enable it in the `development` environment.
|
||||
|
||||

|
||||

|
||||
|
||||
Next, generate an API token to authenticate calls made to Unleash servers from your project.
|
||||
|
||||
@ -99,9 +99,9 @@ cargo add image webp
|
||||
|
||||
We use the `image` and `webp` crates to convert images to JPEG and WebP, respectively. The `unleash_api_client` crate is used to communicate with the Unleash server. The `tokio` crate will be used to make this connection asynchronous.
|
||||
|
||||
Final step before we start coding: Download this image or add an image of your own to your folder. Call it "input.png." Make sure it's in the same folder as the rest of your cargo project.
|
||||
Final step before we start coding: Download this image or add an image of your own to your folder. Call it "/img/rust-guide-input.png." Make sure it's in the same folder as the rest of your cargo project.
|
||||
|
||||

|
||||

|
||||
|
||||
Let's write some Rust code to convert the image to jpeg. We're relying on the `image` crate to read and convert the image file. We'll then use the feature flag that we just created to toggle the conversion to WebP rather than JPEG.
|
||||
|
||||
@ -118,7 +118,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||
}
|
||||
|
||||
fn process_image() -> Result<(), Box<dyn Error>> {
|
||||
let img = ImageReader::open("input.png")?.decode()?;
|
||||
let img = ImageReader::open("/img/rust-guide-input.png")?.decode()?;
|
||||
img.save_with_format("output.jpeg", image::ImageFormat::Jpeg)?;
|
||||
|
||||
Ok(())
|
||||
@ -153,7 +153,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||
}
|
||||
|
||||
fn process_image(is_webp: bool) -> Result<(), Box<dyn Error>> {
|
||||
let img = ImageReader::open("input.png")?.decode()?;
|
||||
let img = ImageReader::open("/img/rust-guide-input.png")?.decode()?;
|
||||
|
||||
if is_webp {
|
||||
let webp_data = Encoder::from_image(&img)?.encode(0.75);
|
||||
@ -175,7 +175,7 @@ cargo run
|
||||
|
||||
You should see another image named `output.webp` in your folder, alongside the `.jpeg` image. Make sure that all images are the same before continuing.
|
||||
|
||||

|
||||

|
||||
|
||||
## 4. Add Unleash to your Rust app
|
||||
|
||||
@ -244,7 +244,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
}
|
||||
|
||||
fn process_image(is_webp: bool) -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let img = ImageReader::open("input.png")?.decode()?;
|
||||
let img = ImageReader::open("/img/rust-guide-input.png")?.decode()?;
|
||||
|
||||
if is_webp {
|
||||
let webp_data = Encoder::from_image(&img)?.encode(0.75);
|
||||
@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Rust Feature Flag Examples
|
||||
slug: /feature-flag-tutorials/rust/examples
|
||||
slug: /guides/feature-flag-examples-rust
|
||||
---
|
||||
|
||||
In our [Rust feature flag tutorial](/feature-flag-tutorials/rust), we implemented a simple feature flag that could be turned on and off. This document will walk you through some common examples of using feature flags in Rust with our SDK.
|
||||
In our [Rust feature flag tutorial](/guides/implement-feature-flags-in-rust), we implemented a simple feature flag that could be turned on and off. This document will walk you through some common examples of using feature flags in Rust with our SDK.
|
||||
|
||||
We built many features into Unleash, our open-source feature flag platform, to address the complexities of releasing code. This tutorial will explore the following:
|
||||
|
||||
@ -219,7 +219,7 @@ When a feature flag is enabled, we can expose a particular version of a feature
|
||||
|
||||
In Unleash, navigate go to a feature flag, then click on an environment to open your strategy.
|
||||
|
||||

|
||||

|
||||
|
||||
Click ‘Edit Strategy'
|
||||
|
||||
@ -227,7 +227,7 @@ Click ‘Edit Strategy'
|
||||
|
||||
Only enable your flag for 50% of users.
|
||||
|
||||

|
||||

|
||||
|
||||
Alternatively, you can do that with a `PUT` request in Rust:
|
||||
|
||||
@ -296,13 +296,13 @@ Let’s walk through how to enable impression data for a feature flag.
|
||||
|
||||
At the flag level in Unleash, navigate to the Settings view.
|
||||
|
||||

|
||||

|
||||
|
||||
In the Settings view, there's an edit button with pencil icon. This will take us to the ‘Edit Feature flag’ form.
|
||||
|
||||
Turn on the impression data and then save it. Events will now be emitted every time the feature flag is triggered.
|
||||
|
||||

|
||||

|
||||
|
||||
You can also use our API command to enable the impression data:
|
||||
|
||||
@ -378,7 +378,7 @@ You can view events in [Event Log](/reference/events#event-log) to monitor the c
|
||||
- How the gradual rollout strategy was configured
|
||||
- When and how the variants were created and configured
|
||||
|
||||

|
||||

|
||||
|
||||
You can also retrieve events by using an API command, like below:
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: 'Serverless feature flags: How to'
|
||||
description: 'Use the Unleash Node.js SDK with AWS Lambda to implement feature flags in a serverless environment.'
|
||||
slug: /feature-flag-tutorials/serverless/lambda
|
||||
slug: /guides/implement-feature-flags-in-aws-lambda
|
||||
---
|
||||
|
||||
Developers can add feature flagging capabilities to serverless functions and validate new parts of them. Leveraging feature flags gives you complete control over feature exposure and simplifies serverless function versioning management.
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
title: How to Implement Feature Flags in SvelteKit
|
||||
description: "How to use Unleash feature flags with SvelteKit."
|
||||
slug: /feature-flag-tutorials/sveltekit
|
||||
slug: /guides/implement-feature-flags-in-sveltekit
|
||||
---
|
||||
|
||||
Hello and welcome to another tutorial. This is about adding feature flags to an app made with [SvelteKit](https://kit.svelte.dev/), [Unleash](https://www.getunleash.io/) and the official [Unleash Svelte SDK](/reference/sdks/svelte).
|
||||
@ -330,11 +330,11 @@ class="header-github-link"
|
||||
},
|
||||
{
|
||||
label: 'Progressive or gradual rollouts',
|
||||
to: '/feature-flag-tutorials/use-cases/gradual-rollout',
|
||||
to: '/guides/gradual-rollout',
|
||||
},
|
||||
{
|
||||
label: 'Trunk-based development',
|
||||
to: '/feature-flag-tutorials/use-cases/trunk-based-development',
|
||||
to: '/guides/trunk-based-development',
|
||||
},
|
||||
{
|
||||
label: 'Software kill switches',
|
||||
@ -342,7 +342,7 @@ class="header-github-link"
|
||||
},
|
||||
{
|
||||
label: 'A/B testing',
|
||||
to: '/feature-flag-tutorials/use-cases/a-b-testing',
|
||||
to: '/guides/a-b-testing',
|
||||
},
|
||||
{
|
||||
label: 'Feature management',
|
||||
|
||||
@ -338,7 +338,7 @@ const sidebars: SidebarsConfig = {
|
||||
collapsed: true,
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/react/implementing-feature-flags',
|
||||
id: 'guides/language-specific-tutorials/react/implementing-feature-flags',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
@ -346,13 +346,13 @@ const sidebars: SidebarsConfig = {
|
||||
label: 'React',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/react/implementing-feature-flags',
|
||||
id: 'guides/language-specific-tutorials/react/implementing-feature-flags',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Examples',
|
||||
id: 'feature-flag-tutorials/react/examples',
|
||||
id: 'guides/language-specific-tutorials/react/examples',
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -361,18 +361,18 @@ const sidebars: SidebarsConfig = {
|
||||
label: 'Java',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/java/implementing-feature-flags',
|
||||
id: 'guides/language-specific-tutorials/java/implementing-feature-flags',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Spring Boot',
|
||||
id: 'feature-flag-tutorials/java/spring-boot-implementing-feature-flags',
|
||||
id: 'guides/language-specific-tutorials/java/spring-boot-implementing-feature-flags',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Spring Boot Examples',
|
||||
id: 'feature-flag-tutorials/java/spring-boot-examples',
|
||||
id: 'guides/language-specific-tutorials/java/spring-boot-examples',
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -381,63 +381,63 @@ const sidebars: SidebarsConfig = {
|
||||
label: 'Python',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/python/implementing-feature-flags',
|
||||
id: 'guides/language-specific-tutorials/python/implementing-feature-flags',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Python Examples',
|
||||
id: 'feature-flag-tutorials/python/examples',
|
||||
id: 'guides/language-specific-tutorials/python/examples',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Django Tutorial',
|
||||
id: 'feature-flag-tutorials/django/implementing-feature-flags-django',
|
||||
id: 'guides/language-specific-tutorials/django/implementing-feature-flags-django',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Django Examples',
|
||||
id: 'feature-flag-tutorials/django/django-examples',
|
||||
id: 'guides/language-specific-tutorials/django/django-examples',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Next.js',
|
||||
id: 'feature-flag-tutorials/nextjs/implementing-feature-flags-nextjs',
|
||||
id: 'guides/language-specific-tutorials/nextjs/implementing-feature-flags-nextjs',
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Go',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/golang/implementing-feature-flags-golang',
|
||||
id: 'guides/language-specific-tutorials/golang/implementing-feature-flags-golang',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Go Examples',
|
||||
id: 'feature-flag-tutorials/golang/golang-examples',
|
||||
id: 'guides/language-specific-tutorials/golang/golang-examples',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'JavaScript',
|
||||
id: 'feature-flag-tutorials/javascript/implementing-feature-flags-js',
|
||||
id: 'guides/language-specific-tutorials/javascript/implementing-feature-flags-js',
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: '.NET',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/dotnet/implementing-feature-flags-dotnet',
|
||||
id: 'guides/language-specific-tutorials/dotnet/implementing-feature-flags-dotnet',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Examples',
|
||||
id: 'feature-flag-tutorials/dotnet/dotnet-examples',
|
||||
id: 'guides/language-specific-tutorials/dotnet/dotnet-examples',
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -446,68 +446,68 @@ const sidebars: SidebarsConfig = {
|
||||
label: 'iOS',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/ios/implementing-feature-flags-ios',
|
||||
id: 'guides/language-specific-tutorials/ios/implementing-feature-flags-ios',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Examples',
|
||||
id: 'feature-flag-tutorials/ios/examples',
|
||||
id: 'guides/language-specific-tutorials/ios/examples',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Serverless',
|
||||
id: 'feature-flag-tutorials/serverless/implementing-feature-flags-in-aws-lambda',
|
||||
id: 'guides/language-specific-tutorials/serverless/implementing-feature-flags-in-aws-lambda',
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Rust',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/rust/implementing-feature-flags-rust',
|
||||
id: 'guides/language-specific-tutorials/rust/implementing-feature-flags-rust',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Examples',
|
||||
id: 'feature-flag-tutorials/rust/rust-examples',
|
||||
id: 'guides/language-specific-tutorials/rust/rust-examples',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Flutter',
|
||||
id: 'feature-flag-tutorials/flutter/a-b-testing',
|
||||
id: 'guides/language-specific-tutorials/flutter/a-b-testing',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'SvelteKit',
|
||||
id: 'feature-flag-tutorials/sveltekit/implementing-feature-flags-sveltekit',
|
||||
id: 'guides/language-specific-tutorials/sveltekit/implementing-feature-flags-sveltekit',
|
||||
},
|
||||
{
|
||||
type: 'category',
|
||||
label: 'Ruby',
|
||||
link: {
|
||||
type: 'doc',
|
||||
id: 'feature-flag-tutorials/ruby/implementing-feature-flags-ruby',
|
||||
id: 'guides/language-specific-tutorials/ruby/implementing-feature-flags-ruby',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Ruby Examples',
|
||||
id: 'feature-flag-tutorials/ruby/ruby-examples',
|
||||
id: 'guides/language-specific-tutorials/ruby/ruby-examples',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Rails Tutorial',
|
||||
id: 'feature-flag-tutorials/rails/implementing-feature-flags-rails',
|
||||
id: 'guides/language-specific-tutorials/rails/implementing-feature-flags-rails',
|
||||
},
|
||||
{
|
||||
type: 'doc',
|
||||
label: 'Rails Examples',
|
||||
id: 'feature-flag-tutorials/rails/rails-examples',
|
||||
id: 'guides/language-specific-tutorials/rails/rails-examples',
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 462 KiB After Width: | Height: | Size: 462 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 196 KiB After Width: | Height: | Size: 196 KiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 210 KiB After Width: | Height: | Size: 210 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 690 KiB After Width: | Height: | Size: 690 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
@ -1330,6 +1330,251 @@
|
||||
"source": "/understanding-unleash/the-anatomy-of-unleash",
|
||||
"destination": "/reference/core-concepts",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/django",
|
||||
"destination": "/guides/implement-feature-flags-in-django",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/django/implementing-feature-flags-django",
|
||||
"destination": "/guides/implement-feature-flags-in-django",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/django/examples",
|
||||
"destination": "/guides/feature-flag-examples-django",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/django/django-examples",
|
||||
"destination": "/guides/feature-flag-examples-django",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/dotnet",
|
||||
"destination": "/guides/implement-feature-flags-in-dotnet",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/dotnet/implementing-feature-flags-dotnet",
|
||||
"destination": "/guides/implement-feature-flags-in-dotnet",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/dotnet/examples",
|
||||
"destination": "/guides/feature-flag-examples-dotnet",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/dotnet/dotnet-examples",
|
||||
"destination": "/guides/feature-flag-examples-dotnet",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/go",
|
||||
"destination": "/guides/implement-feature-flags-in-golang",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/golang",
|
||||
"destination": "/guides/implement-feature-flags-in-golang",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/golang/implementing-feature-flags-golang",
|
||||
"destination": "/guides/implement-feature-flags-in-golang",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/golang/examples",
|
||||
"destination": "/guides/feature-flag-examples-golang",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/golang/golang-examples",
|
||||
"destination": "/guides/feature-flag-examples-golang",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/ios",
|
||||
"destination": "/guides/implement-feature-flags-in-ios",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/ios/implementing-feature-flags-ios",
|
||||
"destination": "/guides/implement-feature-flags-in-ios",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/ios/examples",
|
||||
"destination": "/guides/feature-flag-examples-ios",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/java",
|
||||
"destination": "/guides/implement-feature-flags-in-java",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/java/implementing-feature-flags",
|
||||
"destination": "/guides/implement-feature-flags-in-java",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/java/spring-boot-implementing-feature-flags",
|
||||
"destination": "/guides/implement-feature-flags-in-spring-boot",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/java/spring-boot-examples",
|
||||
"destination": "/guides/feature-flag-examples-spring-boot",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/javascript",
|
||||
"destination": "/guides/implement-feature-flags-in-javascript",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/javascript/implementing-feature-flags-js",
|
||||
"destination": "/guides/implement-feature-flags-in-javascript",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/nextjs",
|
||||
"destination": "/guides/implement-feature-flags-in-nextjs",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/nextjs/implementing-feature-flags-nextjs",
|
||||
"destination": "/guides/implement-feature-flags-in-nextjs",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/python",
|
||||
"destination": "/guides/implement-feature-flags-in-python",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/python/implementing-feature-flags",
|
||||
"destination": "/guides/implement-feature-flags-in-python",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/python/examples",
|
||||
"destination": "/guides/feature-flag-examples-python",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/rails",
|
||||
"destination": "/guides/implement-feature-flags-in-rails",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/rails/implementing-feature-flags-rails",
|
||||
"destination": "/guides/implement-feature-flags-in-rails",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/rails/examples",
|
||||
"destination": "/guides/feature-flag-examples-rails",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/rails/rails-examples",
|
||||
"destination": "/guides/feature-flag-examples-rails",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/react",
|
||||
"destination": "/guides/implement-feature-flags-in-react",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/react/implementing-feature-flags",
|
||||
"destination": "/guides/implement-feature-flags-in-react",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/react/examples",
|
||||
"destination": "/guides/feature-flag-examples-react",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/ruby",
|
||||
"destination": "/guides/implement-feature-flags-in-ruby",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/ruby/implementing-feature-flags-ruby",
|
||||
"destination": "/guides/implement-feature-flags-in-ruby",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/ruby/examples",
|
||||
"destination": "/guides/feature-flag-examples-ruby",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/ruby/ruby-examples",
|
||||
"destination": "/guides/feature-flag-examples-ruby",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/rust",
|
||||
"destination": "/guides/implement-feature-flags-in-rust",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/rust/implementing-feature-flags-rust",
|
||||
"destination": "/guides/implement-feature-flags-in-rust",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/rust/examples",
|
||||
"destination": "/guides/feature-flag-examples-rust",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/rust/rust-examples",
|
||||
"destination": "/guides/feature-flag-examples-rust",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/serverless/lambda",
|
||||
"destination": "/guides/implement-feature-flags-in-aws-lambda",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/serverless/implementing-feature-flags-in-aws-lambda",
|
||||
"destination": "/guides/implement-feature-flags-in-aws-lambda",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/spring-boot",
|
||||
"destination": "/guides/implement-feature-flags-in-spring-boot",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/spring-boot/examples",
|
||||
"destination": "/guides/feature-flag-examples-spring-boot",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/sveltekit",
|
||||
"destination": "/guides/implement-feature-flags-in-sveltekit",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/sveltekit/implementing-feature-flags-sveltekit",
|
||||
"destination": "/guides/implement-feature-flags-in-sveltekit",
|
||||
"permanent": true
|
||||
},
|
||||
{
|
||||
"source": "/feature-flag-tutorials/flutter/a-b-testing",
|
||||
"destination": "/guides/implement-ab-test-in-flutter",
|
||||
"permanent": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||