Luis Meyer
4a190b1bd4
Merge branch 'main' into flags-version-header
2026-09-17 09:38:07 +02:00
Luis Meyer
2e03f56280
op
2026-09-16 13:19:47 +02:00
Luis Meyer
b167598b77
fix(flags-core): use plural flags config version headers
2026-09-16 12:04:24 +02:00
Damien Simonin Feugas
4848877ca6
[@vercel/flags-core] Add custom waitUntil option ( #497 )
2026-09-16 09:58:56 +00:00
Luis Meyer
3c12c2c04d
revert(flags-core): remove source debug logging
2026-09-16 11:44:50 +02:00
Luis Meyer
25154ede50
fix(flags-core): use singular flags config version headers
2026-09-16 11:18:23 +02:00
Luis Meyer
48afe11165
feat(flags-core): add bundled source debug diagnostics
2026-09-15 12:21:50 +02:00
Luis Meyer
0fd2f412e9
debug
2026-09-15 11:38:43 +02:00
Luis Meyer
004baf818f
fix
2026-09-15 10:25:46 +02:00
Luis Meyer
da0b044c2f
fix(flags-core): handle cancelled header refreshes and add changeset
2026-09-15 10:13:50 +02:00
Luis Meyer
923ea09467
stuff
2026-09-15 10:03:39 +02:00
Luis Meyer
7332270a2a
[vercel-flags-core] add vercel client mode
2026-09-14 18:30:25 +02:00
Luis Meyer
a3fc275ed3
docs(flags-core): clarify request-time initialization with OIDC ( #496 )
2026-09-10 16:36:37 +02:00
github-actions[bot]
6444210ee9
Version Packages ( #493 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-09 09:26:12 +00:00
Luis Meyer
e0eebe6fbc
fix(flags-core): request identity on the stream so Bun receives the first datafile ( #494 )
...
* fix(flags-core): request gzip on the stream so Bun receives the first datafile
* test(flags-core): expect Accept-Encoding on stream requests in black-box tests
* fix(flags-core): send Accept-Encoding: identity on the stream only when running on Bun
2026-09-09 11:16:11 +02:00
Dominik Ferber
c9d28116eb
Experiments ( #486 )
...
* step 1
* single experiment
* reuse variants
* single experiment
* exposures
* undo exposureLogging boolean
* Attach experiment metadata to all evaluated flag outcomes
* version
* hybrid and override exposure reporting
* Initialize adapters before reporting flag overrides
* Update package versions for experiment replacement
* versions
* fix test
* Rename exposure reporting APIs as experimental
* Add APIs for reporting flag exposures and overrides
* Update changeset for exposure reporting APIs
* Remove default exposure reporting
* Defer exposure reporting with waitUntil
* Fix override reporting without a reporter
* Handle optional override reporting in Vercel adapter
* Update override reporting to accept parameter objects
* patch
2026-09-04 12:21:17 +00:00
github-actions[bot]
f13fd27816
Version Packages ( #484 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-26 12:57:29 +02:00
Luis Meyer
cc8c26648c
feat(flags-core): add metrics environment option ( #453 )
...
* feat(flags-core): support explicit environment
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Luis Meyer <luis.meyer@vercel.com >
* fix(flags-core): scope environment to metrics ingest
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Luis Meyer <luis.meyer@vercel.com >
* fix(flags-core): clarify metrics environment
Co-Authored-By: Claude <noreply@anthropic.com >
* fix(flags-core): restrict metric environment values
* docs(flags-core): clarify metrics environment fallback
---------
Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com >
2026-08-26 12:28:13 +02:00
Luis Meyer
58e1f5bcdf
Rename Edge Config packages to Global Config ( #452 )
...
* Rename edge config packages
* Rename Global Config APIs
* Fix Global Config environment setup
* Rename Global Config endpoints
* Update Global Config documentation links
* Undo lockfile changes
* Update lockfile
* Undo lockfile changes
* Update lockfile
* Fall back to EDGE_CONFIG
---------
Co-authored-by: Andy Bitz <artzbitz@gmail.com >
2026-08-04 12:36:41 +02:00
github-actions[bot]
5ff8eafec9
Version Packages ( #451 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-27 10:32:21 -04:00
Dominik Ferber
ceb15198f7
[@vercel/flags-core] strip g and y regex flags ( #450 )
2026-07-27 13:50:24 +00:00
Dominik Ferber
1f000784e5
upgrade vite & vitest ( #445 )
2026-07-26 08:25:37 -04:00
Dominik Ferber
0cf1f2b201
upgrade next and postcss ( #444 )
...
* upgrade postcss
* [snippets] upgrade postcss
* upgrade next
* upgrade postcss
* upgrade pnpm-lock
2026-07-26 07:35:48 -04:00
github-actions[bot]
0a90e18513
Version Packages ( #428 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-10 12:48:49 +03:00
Dominik Ferber
50b1aa4f96
Align rollouts assignments with split assignments ( #427 )
...
* [@vercel/flags-core] align rollotus and splits
* avoid extra array
* 100k
* full range
* fix comments
* rename
* shorten comments
* add changeset
* add stderr test
2026-07-09 22:48:48 +03:00
github-actions[bot]
2497853529
Version Packages ( #424 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-08 14:26:19 +02:00
Luis Meyer
9dff590bd5
Add FLAGS_EVALUATION metric ( #401 )
...
* Add FLAGS_EVALUATION metric
* Track variant IDs in evaluation results
* report null instead of fallback
* bucket to the previous minute
* replace variant null with undefined
* invert
* use option instead of env var
* Add track option to black-box flag tests
* Add evaluation metrics controls and flush reasons
* increase max_count
* defaul track:true
* increase batch
* Bound ingest POSTs to 2000 events per request
Flushes can overshoot the scheduler's MAX_COUNT because the map read
happens in a microtask, so a single POST could exceed the server-side
maxItems cap and be rejected with a 400. Chunk sendIngestEvents so each
POST carries at most MAX_EVENTS_PER_REQUEST events.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* Remove count-based flushing from the scheduler
Flushing is now purely time-based (idle window, max window, shutdown).
Batches are only cut down to size when the ingest events are sent, via
the 2000-event chunking in sendIngestEvents, which keeps every POST
below the server-side maxItems cap.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* cleanup
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-08 14:09:45 +02:00
github-actions[bot]
66c4809b29
Version Packages ( #417 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-27 06:52:37 +00:00
Dominik Ferber
f60c99d707
[vercel-flags-core] fix datafile serialization ( #416 )
2026-06-26 17:40:11 +03:00
Luis Meyer
c35f38dfb9
Support createClient options-first overload ( #406 )
2026-06-23 14:32:06 +02:00
github-actions[bot]
158634cc5d
Version Packages ( #400 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-16 17:52:22 +03:00
Luc Leray
b0150af9c8
[@vercel/flags-core] quiet noisy stream reconnect logs ( #395 )
...
* [@vercel/flags-core] quiet noisy stream reconnect logs
* [@vercel/flags-core] test exhaustion log + guard undefined reason
2026-06-16 14:43:25 +00:00
github-actions[bot]
5cf0950342
Version Packages ( #388 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-05 10:27:31 +02:00
Dominik Ferber
201f9d5988
Add bulk evaluation ( #385 )
...
* [flags] avoid re-imports
Avoid re-importing next/headers since it adds unnecessary microtask queue overhead
* [flags] avoid iife microtask queue overhead
* [flags] skip awaits where possible
* [flags] allow bulk eval
* wip
* add bulk mode to playground
* first try of bulk eval
* add bulk evaluation to adapters
* reuse
* simplify
* versions
* rm outdated changeset
* rm outdated changeset
* revert playground
* revert playground flags
* rm logs
* reuse cache of resolved flags for bulk
* simplify
* changesets
* support bulk([]) and bulk({})
* flagKey → key
* allow any type in expectPermutations
* avoid unnecessary mapping
* fix changeset
* validate package.json fields
* update package.json fields
* keep covariant
* adjust adapter types
* Merge bulk into evaluate (#392 )
* merge bulk into evaluate
* add pages router compatibility
* better types
* add array test
* add test
* changesets
* use type import
* fix import
* extract readOverrides
* fix import of reportValue
* tracing
* skip bulkDecide for overwritten flags
* update changesets
* [changesets] onlyUpdatePeerDependentsWhenOutOfRange
* add type guard
* adjust changeset
2026-06-05 08:14:29 +00:00
Luis Meyer
7b5ea9a808
Reapply OIDC ( #390 )
...
* Reapply "Add oidc support (#374 )" (#389 )
This reverts commit 357ca676c6 .
* bump oidc package
* review
* comments
2026-06-04 16:37:03 +02:00
Luis Meyer
357ca676c6
Revert "Add oidc support ( #374 )" ( #389 )
...
This reverts commit 72d36511d0 .
2026-05-28 10:16:43 +03:00
Luis Meyer
72d36511d0
Add oidc support ( #374 )
...
* Add oidc support
* changeset
* update tests
* update def script
* fix provider data
* update changeset
* fix createVercelAdapter
* comments
* error
2026-05-28 08:59:00 +02:00
Dominik Ferber
bd31a462a6
Add package.json metadata & validation script ( #387 )
...
* validate package.json fields
* update package.json fields
2026-05-25 15:49:46 +03:00
Dominik Ferber
4d90e912a4
[flags-core] perf improvements ( #382 )
...
* [flags-core] perf improvements
* add changeset
2026-05-18 13:20:13 +03:00
Vincent Derks
bd4d01a9b2
vercel-flags-core: jitter ingest retries and batch-wait window ( #371 )
...
Replace the deterministic 100/200ms retry schedule with full-jitter exponential
backoff, jitter MAX_BATCH_WAIT_MS by ±20% to desynchronize concurrent flushes,
and log when a flush exhausts all retries.
Helpers extracted to utils/backoff.ts so they can be reused.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-06 15:57:15 +02:00
github-actions[bot]
2e932e6c62
Version Packages ( #361 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-14 17:29:53 +03:00
Dominik Ferber
80dcdada34
[vercel flags] add progressive rollouts to sdk ( #360 )
...
* [vercel flags] add progressive rollouts
* fix slots
* add changeset
2026-04-14 16:55:57 +03:00
Dominik Ferber
9142790975
only build publishable packages during release process ( #348 )
...
* clean up
* fix release process
2026-03-21 21:17:04 +02:00
github-actions[bot]
14ef3fa940
Version Packages ( #346 )
...
* Version Packages
* blank commit
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Swarnava Sengupta <swarnava.sengupta@vercel.com >
2026-03-21 23:38:24 +05:30
Swarnava Sengupta
b755ffecdf
fix: SDK key detection to avoid false positives with third-party identifiers ( #345 )
...
The SDK key validation now uses a regex (/^vf_(?:server|client)_/) to require
the format vf_server_* or vf_client_* instead of accepting any string starting
with vf_. This prevents false positives with third-party service identifiers
that happen to start with vf_ (e.g., Stripe identity flow IDs like
vf_1PyHgVLpWuMxVFx...).
Adds isValidSdkKey() helper function and updates parseSdkKeyFromFlagsConnectionString()
to use the stricter validation. Updates all tests to use valid SDK key formats.
2026-03-21 17:39:00 +00:00
github-actions[bot]
471e0048b6
Version Packages ( #342 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-20 21:19:04 +02:00
Dominik Ferber
44460570d4
[vercel/flags-core] allow json flags ( #335 )
...
* rm unused import
* [vercel-flags] allow json flags
* add flags-playground
* wip
* clean up type
* reword changeset
* rm examples/flags-playground
2026-03-20 14:03:53 +02:00
github-actions[bot]
a3b536b504
Version Packages ( #340 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-19 16:21:12 +02:00
Dominik Ferber
b81963dc14
fix ( #339 )
2026-03-19 16:18:59 +02:00
github-actions[bot]
b199f2083c
Version Packages ( #333 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-18 15:50:13 +02:00