Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
02b4de3
prepare postinstall script
dferber90 Nov 28, 2025
2d88e68
wip
dferber90 Nov 28, 2025
489fbb6
working
dferber90 Nov 28, 2025
b0e4ac2
use stores.json in postinstall and readBuildEmbeddedEdgeConfig
dferber90 Nov 28, 2025
e24da87
fall back to embedded version in create-create-client
dferber90 Nov 28, 2025
f8d89f0
use build embed for prod builds
dferber90 Nov 28, 2025
4ebf39c
allow skipping embedding with EDGE_CONFIG_SKIP_BUILD_EMBEDDING
dferber90 Nov 28, 2025
c06bc19
respect EDGE_CONFIG_SKIP_BUILD_EMBEDDING from within postinstall.mts
dferber90 Nov 28, 2025
7365805
compare to 1
dferber90 Nov 28, 2025
0b2f68b
use -S
dferber90 Nov 28, 2025
52e5dec
ensure folder exists
dferber90 Nov 28, 2025
2d76f1c
log npm_lifecycle_event
dferber90 Nov 28, 2025
8ce7568
ignore MODULE_NOT_FOUND
dferber90 Nov 28, 2025
899ac46
update node iron → krypton
dferber90 Nov 28, 2025
47f31cc
include scripts folder
dferber90 Nov 28, 2025
4a35105
manually call node
dferber90 Nov 28, 2025
cb20773
temporary: publish src files
dferber90 Nov 28, 2025
25cad98
compile postinstall script
dferber90 Nov 28, 2025
a08d53e
commit dist-postinstall
dferber90 Nov 28, 2025
9f9572b
dist-postinstall
dferber90 Nov 28, 2025
b752a7f
add debug log
dferber90 Nov 28, 2025
a0ada7c
swap postinstall to cli
dferber90 Nov 28, 2025
83fe996
comment
dferber90 Nov 28, 2025
db283f1
ecfg-1 → ecfg_1
dferber90 Nov 29, 2025
af035c2
quotes
dferber90 Nov 29, 2025
3dc5995
tests
dferber90 Nov 29, 2025
e3d4ec1
with type json
dferber90 Nov 29, 2025
6a2720e
adjust
dferber90 Nov 29, 2025
fa22248
rename
dferber90 Nov 29, 2025
97f33a1
complete renaming
dferber90 Nov 29, 2025
1e09f64
support timeoutMs to prevent long-running fetches
dferber90 Nov 29, 2025
18f2c6d
renaming
dferber90 Nov 29, 2025
f234fb7
rename test
dferber90 Nov 29, 2025
6748850
tests for timeoutMs
dferber90 Nov 29, 2025
5a0e899
rm cli option
dferber90 Nov 29, 2025
2e15100
add shebang
dferber90 Nov 29, 2025
b3c83f3
clean up
dferber90 Nov 29, 2025
c2ca394
format with biome
dferber90 Nov 29, 2025
ddd1b8b
try readme
dferber90 Nov 29, 2025
94e0691
update README
dferber90 Nov 29, 2025
92ae88e
update message
dferber90 Dec 2, 2025
def9d7c
also log error
dferber90 Dec 2, 2025
dc2e855
enahnce error message
dferber90 Dec 2, 2025
377129d
simplify
dferber90 Dec 3, 2025
c4bf645
update engines
dferber90 Dec 3, 2025
2cd0a76
avoid spamming console
dferber90 Dec 3, 2025
ba7f854
default stores.json to null
dferber90 Dec 3, 2025
81b6f07
better changelog
dferber90 Dec 3, 2025
f2f8958
ensure cli script fails on errors
dferber90 Dec 3, 2025
60c8f24
mention build improvements
dferber90 Dec 3, 2025
efef7ad
remove unused imports
dferber90 Dec 3, 2025
63de9f3
respect timeoutMs for whole operation
dferber90 Dec 3, 2025
6e53905
redo
dferber90 Dec 3, 2025
2a0533e
fix test setup
dferber90 Dec 3, 2025
ba74b92
rm unused option
dferber90 Dec 3, 2025
25cfb20
simplify include
dferber90 Dec 3, 2025
d4a21a3
fix: do not race if timeoutMs is not provided
dferber90 Dec 3, 2025
dca4cb6
add test
dferber90 Dec 3, 2025
00148d3
respect vf
dferber90 Dec 3, 2025
5431858
fix delay calls
dferber90 Dec 3, 2025
120de92
add user-agent
dferber90 Dec 3, 2025
33750e7
ensure we always cancel timers
dferber90 Dec 3, 2025
e5ecc20
expect TimeoutError
dferber90 Dec 3, 2025
c677713
allow skipping prepare script with EDGE_CONFIG_SKIP_PREPARE_SCRIPT
dferber90 Dec 8, 2025
b17b01e
fix EDGE_CONFIG_SKIP_PREPARE_SCRIPT
dferber90 Dec 8, 2025
57ee90d
snapshot
dferber90 Dec 16, 2025
04047b6
eagerly create default client
dferber90 Dec 16, 2025
bc96c2e
accept snapshot and timeoutMs through createClient and connection str…
dferber90 Dec 16, 2025
c6b2916
fix cli
dferber90 Dec 16, 2025
07b0380
tests
dferber90 Dec 16, 2025
7616115
reorg tests
dferber90 Dec 16, 2025
4068f6f
step
dferber90 Dec 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions .changeset/famous-games-sleep.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
"@vercel/edge-config": minor
---

**NEW** Edge Config Snapshots

You can now bundle a snapshot of your Edge Config along with your deployment.
- snapshot is used as a fallback in case the Edge Config service is unavailable
- snapshot is consistently used during builds, ensuring your app uses a consistent version and reducing build time
- snapshot will be used in the future to immediately bootstrap the Edge Config SDK (soon)

**How it works:**
- Your app continues using the latest Edge Config version under normal conditions
- If the Edge Config service is degraded, the SDK automatically falls back to the in-memory version
- If that's unavailable, it uses the snapshot embedded at build time as a last resort
- This ensures your app maintains functionality even if Edge Config is temporarily unavailable

Note that this means your application may serve outdated values in case the Edge Config service is unavailable at runtime. In most cases this is preferred to not serving any values at all.

**Setup:**

Add the `edge-config snapshot` command to your `prebuild` script:

```json
{
"scripts": {
"prebuild": "edge-config snapshot"
}
}
```

The snapshot command reads your environment variables and bundles all connected Edge Configs. Use `--verbose` for detailed logs. Note that the bundled Edge Config stores count towards your build [function bundle size limit](https://vercel.com/docs/functions/limitations#bundle-size-limits).

You can further configure your client to throw errors in case it can not find the Edge Config snapshot by editing the connection string stored in the `EDGE_CONFIG` environment variable and appending `&snapshot=required`. You can also specify `snapshot: "required"` when creating clients using `createClient`.

**Build improvements:**

Using `edge-config snapshot` also improves build performance and consistency:

- **Faster builds:** The SDK fetches each Edge Config store once per build instead of once per key
- **Eliminates inconsistencies:** Prevents Edge Config changes between individual key reads during the build
- **Automatic optimization:** No code changes required—just add the prebuild script

**Timeout configuration:**

You can now configure request timeouts to prevent slow Edge Config reads from blocking your application:

```ts
// Set timeout when creating the client
const client = createClient(process.env.EDGE_CONFIG, {
timeoutMs: 1000 // timeout after 1 second
});

// Or per-request
await client.get('key', { timeoutMs: 500 });
```

When a timeout occurs, the SDK will fall back to the bundled Edge Config if available, or throw an error otherwise. This is particularly useful when combined with bundled Edge Configs to ensure fast, resilient reads.
2 changes: 1 addition & 1 deletion .node-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
lts/iron
lts/krypton
Loading
Loading