Skip to content

Commit

Permalink
[edge-config] Changeset for major release (#577)
Browse files Browse the repository at this point in the history
* [edge-config] Changeset for major release

* Update changeset

* Add newlines

* Update wording

* Apply suggestions from code review

Co-authored-by: Dominik Ferber <[email protected]>

* Fix indentation

* Update example

* Wording

* Order

* Wording

* Fix wording

* Update .changeset/lemon-phones-sort.md

Co-authored-by: Dominik Ferber <[email protected]>

* Update .changeset/lemon-phones-sort.md

Co-authored-by: Dominik Ferber <[email protected]>

---------

Co-authored-by: Dominik Ferber <[email protected]>
  • Loading branch information
AndyBitz and dferber90 authored Feb 12, 2024
1 parent 52c2fe2 commit fcdc55e
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions .changeset/lemon-phones-sort.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
"@vercel/edge-config": major
---

- **BREAKING CHANGE** Return values are now read-only to improve in-memory caching

It used to be possible to change the returned value as shown in this example:

```typescript
import { get } from '@vercel/edge-config';
const countries = await get('allowedCountryCodes');
countries.DE = true; // Will now cause TypeScript to error
```

Moving forward, modifications like the above will cause a type error.

If there is a need to modify the value, then the `clone` function can be used to clone the data and make it modifiable.

```typescript
import { get, clone } from '@vercel/edge-config';
const myArray = await get('listOfAllowedIPs');
const myArrayClone = clone(myArray); // Clones the data to make it modifiable
myArrayClone.push('127.0.0.1'); // The `push` operation will work now
```

- **BREAKING CHANGE** SDK now throws underlying errors

Previous versions of the `@vercel/edge-config` package would catch most errors thrown by native functions and throw a generic network error instead - even if the underlying issue wasn't a network error. The new version will throw the original errors.

**Note** applications which rely on the `@vercel/edge-config: Unexpected error` and `@vercel/edge-config: Network error` errors must adapt to the new implementation by ensuring other types of errors are handled as well.

- The SDK now uses stale-while-revalidate semantics during development

When `@vercel/edge-config` is used during development, with `NODE_ENV` being set to `development`, any read operation will fetch the entire Edge Config once and keep it in-memory to quickly resolve all other read operations for other keys, without waiting for the network. Subsequent reads will update the in-memory data in the background.

This behaviour can be disabled by setting the environment variable `EDGE_CONFIG_DISABLE_DEVELOPMENT_SWR` to `1`, or by using the `disableDevelopmentCache` option on the `createClient` function.

0 comments on commit fcdc55e

Please sign in to comment.