Commit Graph

101 Commits

Author SHA1 Message Date
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