1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-08 01:15:49 +02:00
Unleash is the open source feature toggle service.
Go to file
renovate[bot] 5a01a7e981
chore(deps): update dependency sass to v1.80.3 (#8562)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [sass](https://redirect.github.com/sass/dart-sass) | [`1.77.8` ->
`1.80.3`](https://renovatebot.com/diffs/npm/sass/1.77.8/1.80.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/sass/1.80.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/sass/1.80.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/sass/1.77.8/1.80.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sass/1.77.8/1.80.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>sass/dart-sass (sass)</summary>

###
[`v1.80.3`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1803)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.80.2...1.80.3)

-   Fix a bug where `@import url("...")` would crash in plain CSS files.

- Improve consistency of how warnings are emitted by different parts of
the
compiler. This should result in minimal user-visible changes, but
different
types of warnings should now respond more reliably to flags like
`--quiet`,
    `--verbose`, and `--silence-deprecation`.

###
[`v1.80.2`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1802)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.80.1...1.80.2)

- Fix a bug where deprecation warnings were incorrectly emitted for the
    plain-CSS `invert()` function.

###
[`v1.80.1`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1801)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.80.0...1.80.1)

- Fix a bug where repeated deprecation warnings were not automatically
limited.

###
[`v1.80.0`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1800)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.79.6...1.80.0)

- `@import` is now officially deprecated, as are global built-in
functions that
are available within built-in modules. See [the Sass blog post] for more
    details on the deprecation process.

[the Sass blog post]: https://sass-lang.com/blog/import-is-deprecated/

##### Embedded Host

- Fix an error that would sometimes occur when deprecation warnings were
    emitted when using a custom importer with the legacy API.

###
[`v1.79.6`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1796)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.79.5...1.79.6)

- Fix a bug where Sass would add an extra `*/` after loud comments with
    whitespace after an explicit `*/` in the indented syntax.

- **Potentially breaking bug fix:** Adding text after an explicit `*/`
in the
indented syntax is now an error, rather than silently generating invalid
CSS.

##### Embedded Host

-   Properly export the `SassBoolean` type.

###
[`v1.79.5`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1795)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.79.4...1.79.5)

-   Changes to how `selector.unify()` and `@extend` combine selectors:

- The relative order of pseudo-classes (like `:hover`) and
pseudo-elements
(like `::before`) within each original selector is now preserved when
        they're combined.

- Pseudo selectors are now consistently placed at the end of the
combined
selector, regardless of which selector they came from. Previously, this
reordering only applied to pseudo-selectors in the second selector.

- Tweak the color transformation matrices for OKLab and OKLCH to match
the
    newer, more accurate values in the CSS spec.

-   Fix a slight inaccuracy case when converting to `srgb-linear` and
    `display-p3`.

- **Potentially breaking bug fix:** `math.unit()` now wraps multiple
denominator
units in parentheses. For example, `px/(em*em)` instead of `px/em*em`.

##### Command-Line Interface

- Use `@parcel/watcher` to watch the filesystem when running from
JavaScript and
not using `--poll`. This should mitigate more frequent failures users
have
been seeing since version 4.0.0 of Chokidar, our previous watching tool,
was
    released.

##### JS API

- Fix `SassColor.interpolate()` to allow an undefined `options`
parameter, as
    the types indicate.

##### Embedded Sass

- Properly pass missing color channel values to and from custom
functions.

###
[`v1.79.4`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1794)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.79.3...1.79.4)

##### JS API

- Fix a bug where passing `green` or `blue` to `color.change()` for
legacy
    colors would fail.

###
[`v1.79.3`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1793)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.79.2...1.79.3)

-   Update the `$channel` parameter in the suggested replacement for
    `color.red()`, `color.green()`, `color.blue()`, `color.hue()`,
    `color.saturation()`, `color.lightness()`, `color.whiteness()`, and
    `color.blackness()` to use a quoted string.

###
[`v1.79.2`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1792)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.79.1...1.79.2)

- Add a `$space` parameter to the suggested replacement for
`color.red()`,
`color.green()`, `color.blue()`, `color.hue()`, `color.saturation()`,
    `color.lightness()`, `color.whiteness()`, and `color.blackness()`.

- Update deprecation warnings for the legacy JS API to include a link to
    [relevant documentation].

[relevant documentation]: https://sass-lang.com/d/legacy-js-api

###
[`v1.79.1`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1791)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.79.0...1.79.1)

-   No user-visible changes.

###
[`v1.79.0`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1790)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.78.0...1.79.0)

- **Breaking change**: Passing a number with unit `%` to the `$alpha`
parameter
of `color.change()`, `color.adjust()`, `change-color()`, and
`adjust-color()`
is now interpreted as a percentage, instead of ignoring the unit. For
example,
    `color.change(red, $alpha: 50%)` now returns `rgb(255 0 0 / 0.5)`.

- **Potentially breaking compatibility fix**: Sass no longer rounds RGB
channels
to the nearest integer. This means that, for example, `rgb(0 0 1) !=
rgb(0 0
0.6)`. This matches the latest version of the CSS spec and browser
behavior.

- **Potentially breaking compatibility fix**: Passing large positive or
negative
values to `color.adjust()` can now cause a color's channels to go
outside that
color's gamut. In most cases this will currently be clipped by the
browser and
end up showing the same color as before, but once browsers implement
gamut
    mapping it may produce a different result.

- Add support for CSS Color Level 4 [color spaces]. Each color value now
tracks
its color space along with the values of each channel in that color
space.
There are two general principles to keep in mind when dealing with new
color
    spaces:

1. With the exception of legacy color spaces (`rgb`, `hsl`, and `hwb`),
colors
will always be emitted in the color space they were defined in unless
        they're explicitly converted.

2. The `color.to-space()` function is the only way to convert a color to
another color space. Some built-in functions may do operations in a
different color space, but they'll always convert back to the original
space
        afterwards.

- `rgb` colors can now have non-integer channels and channels outside
the normal
gamut of 0-255. These colors are always emitted using the `rgb()` syntax
so
that modern browsers that are being displayed on wide-gamut devices can
    display the most accurate color possible.

- Add support for all the new color syntax defined in Color Level 4,
including:

    -   `oklab()`, `oklch()`, `lab()`, and `lch()` functions;
- a top-level `hwb()` function that matches the space-separated CSS
syntax;
- and a `color()` function that supports the `srgb`, `srgb-linear`,
`display-p3`, `a98-rgb`, `prophoto-rgb`, `rec2020`, `xyz`, `xyz-d50`,
and
        `xyz-d65` color spaces.

-   Add new functions for working with color spaces:

- `color.to-space($color, $space)` converts `$color` to the given
`$space`. In
most cases this conversion is lossless—the color may end up out-of-gamut
for
the destination color space, but browsers will generally display it as
best
they can regardless. However, the `hsl` and `hwb` spaces can't represent
        out-of-gamut colors and so will be clamped.

- `color.channel($color, $channel, $space: null)` returns the value of
the
given `$channel` in `$color`, after converting it to `$space` if
necessary.
It should be used instead of the old channel-specific functions such as
        `color.red()` and `color.hue()`.

- `color.same($color1, $color2)` returns whether two colors represent
the same
color even across color spaces. It differs from `$color1 == $color2`
because
`==` never consider colors in different (non-legacy) spaces as equal.

- `color.is-in-gamut($color, $space: null)` returns whether `$color` is
        in-gamut for its color space (or `$space` if it's passed).

- `color.to-gamut($color, $space: null)` returns `$color` constrained to
its
space's gamut (or to `$space`'s gamut, if passed). This is generally not
recommended since even older browsers will display out-of-gamut colors
as
        best they can, but it may be necessary in some cases.

- `color.space($color)`: Returns the name of `$color`'s color space.

- `color.is-legacy($color)`: Returns whether `$color` is in a legacy
color
        space (`rgb`, `hsl`, or `hwb`).

- `color.is-powerless($color, $channel, $space: null)`: Returns whether
the
given `$channel` of `$color` is powerless in `$space` (or its own color
space). A channel is "powerless" if its value doesn't affect the way the
        color is displayed, such as hue for a color with 0 chroma.

- `color.is-missing($color, $channel)`: Returns whether `$channel`'s
value is
missing in `$color`. Missing channels can be explicitly specified using
the
special value `none` and can appear automatically when
`color.to-space()`
returns a color with a powerless channel. Missing channels are usually
treated as 0, except when interpolating between two colors and in
`color.mix()` where they're treated as the same value as the other
color.

-   Update existing functions to support color spaces:

- `hsl()` and `color.hwb()` no longer forbid out-of-bounds values.
Instead,
they follow the CSS spec by clamping them to within the allowed range.

- `color.change()`, `color.adjust()`, and `color.scale()` now support
all
channels of all color spaces. However, if you want to modify a channel
that's not in `$color`'s own color space, you have to explicitly specify
the
space with the `$space` parameter. (For backwards-compatibility, this
doesn't apply to legacy channels of legacy colors—for example, you can
still
adjust an `rgb` color's saturation without passing `$space: hsl`).

- `color.mix()` and `color.invert()` now support the standard CSS
algorithm
for interpolating between two colors (the same one that's used for
gradients
and animations). To use this, pass the color space to use for
interpolation
to the `$method` parameter. For polar color spaces like `hsl` and
`oklch`,
this parameter also allows you to specify how hue interpolation is
handled.

- `color.complement()` now supports a `$space` parameter that indicates
which
        color space should be used to take the complement.

- `color.grayscale()` now operates in the `oklch` space for non-legacy
colors.

- `color.ie-hex-str()` now automatically converts its color to the `rgb`
space
and gamut-maps it so that it can continue to take colors from any color
        space.

[color spaces]:
https://developer.mozilla.org/en-US/docs/Web/CSS/color_value

- The following functions are now deprecated, and uses should be
replaced with
    the new color-space-aware functions defined above:

- The `color.red()`, `color.green()`, `color.blue()`, `color.hue()`,
`color.saturation()`, `color.lightness()`, `color.whiteness()`, and
`color.blackness()` functions, as well as their global counterparts,
should
        be replaced with calls to `color.channel()`.

- The global `adjust-hue()`, `saturate()`, `desaturate()`, `lighten()`,
`darken()`, `transaprentize()`, `fade-out()`, `opacify()`, and
`fade-in()`
functions should be replaced by `color.adjust()` or `color.scale()`.

- Add a `global-builtin` future deprecation, which can be opted-into
with the
`--future-deprecation` flag or the `futureDeprecations` option in the JS
or
Dart API. This emits warnings when any global built-in functions that
are
now available in `sass:` modules are called. It will become active by
default
    in an upcoming release alongside the `@import` deprecation.

##### Dart API

- Added a `ColorSpace` class which represents the various color spaces
defined
    in the CSS spec.

-   Added `SassColor.space` which returns a color's color space.

- Added `SassColor.channels` and `.channelsOrNull` which returns a list
of channel values, with missing channels converted to 0 or exposed as
null,
    respectively.

- Added `SassColor.isLegacy`, `.isInGamut`, `.channel()`,
`.isChannelMissing()`,
`.isChannelPowerless()`, `.toSpace()`, `.toGamut()`,
`.changeChannels()`, and
`.interpolate()` which do the same thing as the Sass functions of the
    corresponding names.

- `SassColor.rgb()` now allows out-of-bounds and non-integer arguments.

-   `SassColor.hsl()` and `.hwb()` now allow out-of-bounds arguments.

-   Added `SassColor.hwb()`, `.srgb()`, `.srgbLinear()`, `.displayP3()`,
`.a98Rgb()`, `.prophotoRgb()`, `.rec2020()`, `.xyzD50()`, `.xyzD65()`,
`.lab()`, `.lch()`, `.oklab()`, `.oklch()`, and `.forSpace()`
constructors.

- Deprecated `SassColor.red`, `.green`, `.blue`, `.hue`, `.saturation`,
    `.lightness`, `.whiteness`, and `.blackness` in favor of
    `SassColor.channel()`.

- Deprecated `SassColor.changeRgb()`, `.changeHsl()`, and `.changeHwb()`
in
    favor of `SassColor.changeChannels()`.

-   Added `SassNumber.convertValueToUnit()` as a shorthand for
    `SassNumber.convertValue()` with a single numerator.

- Added `InterpolationMethod` and `HueInterpolationMethod` which
collectively
    represent the method to use to interpolate two colors.

##### JS API

- While the legacy API has been deprecated since we released the modern
API, we
now emit warnings when the legacy API is used to make sure users are
aware
that it will be removed in Dart Sass 2.0.0. In the meantime, you can
silence
these warnings by passing `legacy-js-api` in `silenceDeprecations` when
using
    the legacy API.

- Modify `SassColor` to accept a new `space` option, with support for
all the
    new color spaces defined in Color Level 4.

-   Add `SassColor.space` which returns a color's color space.

- Add `SassColor.channels` and `.channelsOrNull` which returns a list of
channel
values, with missing channels converted to 0 or exposed as null,
respectively.

- Add `SassColor.isLegacy`, `.isInGamut()`, `.channel()`,
`.isChannelMissing()`,
`.isChannelPowerless()`, `.toSpace()`, `.toGamut()`, `.change()`, and
`.interpolate()` which do the same thing as the Sass functions of the
    corresponding names.

-   Deprecate `SassColor.red`, `.green`, `.blue`, `.hue`, `.saturation`,
    `.lightness`, `.whiteness`, and `.blackness` in favor of
    `SassColor.channel()`.

##### Embedded Sass

- Add `Color` SassScript value, with support for all the new color
spaces
    defined in Color Level 4.

-   Remove `RgbColor`, `HslColor` and `HwbColor` SassScript values.

###
[`v1.78.0`](https://redirect.github.com/sass/dart-sass/blob/HEAD/CHANGELOG.md#1780)

[Compare
Source](https://redirect.github.com/sass/dart-sass/compare/1.77.8...1.78.0)

- The `meta.feature-exists` function is now deprecated. This deprecation
is
    named `feature-exists`.

- Fix a crash when using `@at-root` without any queries or children in
the
    indented syntax.

##### JS API

- Backport the deprecation options (`fatalDeprecations`,
`futureDeprecations`,
and `silenceDeprecations`) to the legacy JS API. The legacy JS API is
itself
deprecated, and you should move off of it if possible, but this will
allow
users of bundlers and other tools that are still using the legacy API to
    still control deprecation warnings.

- Fix a bug where accessing `SourceSpan.url` would crash when a relative
URL was
    passed to the Sass API.

##### Embedded Sass

- Explicitly expose a `sass` executable from the `sass-embedded` npm
package.
    This was intended to be included in 1.63.0, but due to the way
platform-specific dependency executables are installed it did not work
as
intended. Now users can run `npx sass` for local installs or just `sass`
when
    `sass-embedded` is installed globally.

- Add linux-riscv64, linux-musl-riscv64, and android-riscv64 support for
the
    `sass-embedded` npm package.

- Fix an edge case where the Dart VM could hang when shutting down when
requests
    were in flight.

- Fix a race condition where the embedded host could fail to shut down
if it was
    closed around the same time a new compilation was started.

- Fix a bug where parse-time deprecation warnings could not be
controlled by
    the deprecation options in some circumstances.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 7pm every weekday,before 5am
every weekday" in timezone Europe/Madrid, Automerge - At any time (no
schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Unleash/unleash).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xMzMuMSIsInVwZGF0ZWRJblZlciI6IjM4LjEzMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-10-28 22:05:36 +00:00
.do
.floe
.github chore: add 0BSD license (#8506) 2024-10-23 09:28:55 +02:00
.husky chore: integration events API (#7639) 2024-07-23 10:09:19 +01:00
.vscode
.yarn/releases chore: upgraded yarn to 4.4.1 (#8033) 2024-09-02 10:11:48 +02:00
coverage feat: Instance stats for export/import (#3121) 2023-02-15 14:39:16 +02:00
docker chore: Update docker yarnlock (#8174) 2024-09-18 16:30:19 +02:00
docs/api/oas
examples feat: update docs to match v4. 2021-05-18 11:19:33 +02:00
frontend chore(deps): update dependency sass to v1.80.3 (#8562) 2024-10-28 22:05:36 +00:00
scripts feat: add database url to environment variable (#7792) 2024-08-28 15:56:34 +03:00
src [Gitar] Cleaning up stale flag: onboardingMetrics with value true (#8550) 2024-10-28 11:47:58 +01:00
test-migrations task: Yarn v4 (#7457) 2024-06-27 12:52:43 +02:00
website chore(deps): update dependency react-router to v6.27.0 (#8560) 2024-10-28 18:38:18 +00:00
.dockerignore task: Yarn v4 (#7457) 2024-06-27 12:52:43 +02:00
.editorconfig
.gitignore Fix/project role permission grant (#8084) 2024-09-10 20:35:45 +02:00
.lycheeignore docs: added oidc example to lycheeignore 2024-07-23 09:36:20 +02:00
.mergify.yml chore: mergify (#3631) 2023-04-26 16:07:34 +02:00
.node-version chore(deps): update dependency node to v20.18.0 (#8542) 2024-10-25 17:35:45 +00:00
.npmignore task: Yarn v4 (#7457) 2024-06-27 12:52:43 +02:00
.nvmrc
.yarnrc.yml chore: upgraded yarn to 4.4.1 (#8033) 2024-09-02 10:11:48 +02:00
app.json
biome.json chore: bump biome to 1.8.3 (#7540) 2024-07-09 16:01:22 +02:00
CHANGELOG.md chore: bump version to 6.3.0 2024-10-01 13:33:48 +00:00
cliff.toml
CODE_OF_CONDUCT.md
CODEOWNERS Made Melinda a code owner for the docs (#7783) 2024-08-06 14:21:13 +00:00
CONTRIBUTING.md docs: recommend PG v13 or later (#8276) 2024-09-26 14:38:00 +02:00
docker-compose.yml chore: update DATABASE_URL to use the database created via POSTGRES_D… (#4836) 2023-09-28 13:07:03 +02:00
Dockerfile chore(deps): update dependency node to v20.18.0 (#8542) 2024-10-25 17:35:45 +00:00
LICENSE
package.json chore: bump unleash client to 6.1.2 (#8558) 2024-10-28 16:37:29 +00:00
README.md Update quickstart guide (#8523) 2024-10-25 11:12:05 +02:00
renovate.json
tsconfig.json
USERS.md chore: customer requested to CS to be removed from this list. 2024-07-02 10:10:56 +02:00
yarn.lock chore: bump unleash client to 6.1.2 (#8558) 2024-10-28 16:37:29 +00:00

What is Unleash?

Unleash is a powerful open source solution for feature management. It streamlines your development workflow, accelerates software delivery, and empowers teams to control how and when they roll out new features to end users. With Unleash, you can deploy code to production in smaller, more manageable releases at your own pace.

Feature flags in Unleash let you test your code with real production data, reducing the risk of negatively impacting your users' experience. It also enables your team to work on multiple features simultaneously without the need for separate feature branches.

Unleash is the most popular open source solution for feature flagging on GitHub. It supports 15 official client and server SDKs and over 15 community SDKs. You can even create your own SDK if you wish. Unleash is compatible with any language and framework.


Getting Started with Unleash

1. Setting Up Unleash

To get started with Unleash, you need git and docker installed on your machine.

Execute the following commands:

git clone git@github.com:Unleash/unleash.git
cd unleash
docker compose up -d

Then point your browser to localhost:4242 and log in using:

  • username: admin
  • password: unleash4all

If you'd rather run the source code in this repo directly via Node.js, see the step-by-step instructions to get up and running in the contributing guide.

2. Connect your SDK

Find your preferred SDK in our list of official SDKs and import it into your project. Follow the setup guides for your specific SDK.

If you use the docker compose file from the previous step, here's the configuration details you'll need to get going:

  • For front-end SDKs, use:
    • URL: http://localhost:4242/api/frontend/
    • clientKey: default:development.unleash-insecure-frontend-api-token
  • For server-side SDKs, use:
    • Unleash API URL: http://localhost:4242/api/
    • API token: default:development.unleash-insecure-api-token

If you use a different setup, your configuration details will most likely also be different.

Check a feature flag

Checking the state of a feature flag in your code is easy! The syntax will vary depending on your language, but all you need is a simple function call to check whether a flag is available. Here's how it might look in Java:

if (unleash.isEnabled("AwesomeFeature")) {
  // do new, flashy thing
} else {
  // do old, boring stuff
}

Run Unleash on a service?

If you don't want to run Unleash locally, we also provide easy deployment setups for Heroku and Digital Ocean:

Deploy to Heroku Deploy to DigitalOcean

Configure and run Unleash anywhere

The above sections show you how to get up and running quickly and easily. When you're ready to start configuring and customizing Unleash for your own environment, check out the documentation for getting started with self-managed deployments, Unleash configuration options, or running Unleash locally via docker.


Online demo

Try out the Unleash online demo.

The Unleash online demo


Community and help — sharing is caring

We know that learning a new tool can be hard and time-consuming. We have a growing community that loves to help out. Please don't hesitate to reach out for help.

Join Unleash on Slack

💬 Join Unleash on Slack if you want ask open questions about Unleash, feature toggling or discuss these topics in general.

💻 Create a GitHub issue if you have found a bug or have ideas on how to improve Unleash.

📚 Visit the documentation for more in-depth descriptions, how-to guides, and more.

📖 Learn more about the principles of building and scaling feature flag solutions.


Contribute to Unleash

Unleash is the largest open source feature flag solution on GitHub. Building Unleash is a collaborative effort, and we owe a lot of gratitude to many smart and talented individuals. Building it together with the community ensures that we build a product that solves real problems for real people. We'd love to have your help too: Please feel free to open issues or provide pull requests.

Check out the CONTRIBUTING.md file for contribution guidelines and the Unleash developer guide for tips on environment setup, running the tests, and running Unleash from source.

Contributors

The Unleash contributors


Features our users love

Flexibility and adaptability

Security and performance

  • Privacy by design (GDPR and Schrems II). End-user data never leaves your application.
  • Audit logs
  • Enforce OWASP's secure headers via the strict HTTPS-only mode
  • Flexible hosting options: host it on premise or in the cloud (any cloud)
  • Scale the Unleash Proxy independently of the Unleash server to support any number of front-end clients without overloading your Unleash instance

Looking for more features?

If you're looking for one of the following features, please take a look at our Pro and Enterprise plans:


Architecture

Read more in the system overview section of the Unleash documentation.


Unleash SDKs

To connect your application to Unleash you'll need to use a client SDK for your programming language.

Official server-side SDKs:

Official front-end SDKs:

The front-end SDKs connects via the Unleash Proxy in order to ensure privacy, scalability and security.

Community SDKs:

If none of the official SDKs fit your need, there's also a number of community-developed SDKs where you might find an implementation for your preferred language (such as Elixir, Dart, Clojure, and more).


Users of Unleash

Unleash is trusted by thousands of companies all over the world.

Proud Open-Source users: (send us a message if you want to add your logo here)

The Unleash logo encircled by logos for Finn.no, nav (the Norwegian Labour and Welfare Administration), Budgets, Otovo, and Amedia. The encircling logos are all connected to the Unleash logo.


Migration guides

Unleash has evolved significantly over the past few years, and we know how hard it can be to keep software up to date. If you're using the current major version, upgrading shouldn't be an issue. If you're on a previous major version, check out the Unleash migration guide!


Want to know more about Unleash?

Videos and podcasts

Articles and more