Conversation
|
@tiagoapolo is attempting to deploy a commit to the Vercel Team on Vercel. A member of the Team first needs to authorize it. |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
dferber90
left a comment
There was a problem hiding this comment.
Thank you for your contributions so far! I left a bit of early guidance
| @@ -0,0 +1,64 @@ | |||
| # Flags SDK - Flagsmith Provider | |||
|
|
|||
| A provider adapter for the Flags SDK that integrates with [Flagsmith](https://flagsmith.com/), allowing you to use Flagsmith's feature flags and remote configuration in your application. | |||
There was a problem hiding this comment.
Do you work for Flagsmith? If we merge this PR we'd also put up some actual docs on flags-sdk.dev. Would you be wiling to link to our Flags SDK and those docs from https://docs.flagsmith.com?
There was a problem hiding this comment.
Hey @dferber90, just jumping in here since Tiago is on vacation - yes, Tiago works for Flagsmith.
In answer to your question, for sure, we'd be happy to link to your docs from https://docs.flagsmith.com - would you be happy with adding reciprocal backlink(s) too?
There was a problem hiding this comment.
Great! We'd add you to https://flags-sdk.dev/providers and create a docs page for FlagSmith
47974ab to
62c9498
Compare
|
@dferber90 could you take one more look at my PR ? |
|
@tiagoapolo I‘m out of office this week, but @AAorris will take over leading adapter work and help you get this finalized, listed and released 👍 |
AAorris
left a comment
There was a problem hiding this comment.
Thanks for your PR! Please consider the following input:
Strongly recommended:
- Support identity through
entities - Optimize performance for multiple features in one request
Recommended:
- Add origin to link flags to your customers' dashboards
AAorris
left a comment
There was a problem hiding this comment.
The progress here is looking good!
It looked ready enough while reviewing that I started to explore an example app using the adapter. However, I found several issues while testing in an app.
To continue the review with me, please develop an example that uses the adapter based on an existing one
- Standard templates: https://github.com/vercel/examples/tree/main/flags-sdk
- The slim template I branched for testing with Flagsmith
You can build, test, and deploy the demo using your local adapter code by following these instructions
Please share a link to the example app with your next review request. I look forward to it!
|
@AAorris in this branch you have my example running https://github.com/tiagoapolo/examples/tree/flagsmith-adapter. Also it's deployed in vercel at: https://flags-sdk-template-ff5v5lyuk-tiagos-projects-e9d5728f.vercel.app/ flags_compressed.mov |
|
Hi @tiagoapolo, thanks for your work and sorry for the delay. I'm back and will be reviewing this week if possible. I don't see your code pushed up to the branch, could you make sure it's available for me to reproduce? It would be great if the example shows how to replicate the flags in the same way as other examples:
|
Hi @AAorris I'll add an example replicating that and let you know once it's available. |
@AAorris is the split done on your end? |
|
The split is usually done in the flag provider, ex. a feature flag with "a percentage rollout based on distinct user IDs" configured in your dashboard, or "an A/B test with 50% allocation to the test variant" |
Thanks @AAorris, new example created. I was able to run it locally but I had issues when deploying it to vercel, can you check if there's anything not properly set? |
|
👋 I'm out of office right now so I'll look for assistance from the team in continuing to review |
chriswdmr
left a comment
There was a problem hiding this comment.
Thanks for your patience, I just had a look!
You can find my review for the example here: vercel/examples#1144 (review)
Have you planned adding some docs for the Flags SDK adapter on your end? I was unable to find them on your site.
I noticed that you used environmentID and projectID (with a capital "D"). It's just a nitpick, but our other providers use standard camel casing.
We handle the CHANGELOG.md automatically for you, you can remove it and just run the changeset command and commit the outputs
Hi @chriswdmr, thank you for reviewing it. My plan is to add documentation on our side about Flags SDK at https://docs.flagsmith.com/ and we agreed with @dferber90 to have a back link to vercel flags docs on our docs and to have a link to flagsmith docs on your docs. I also updated the variables to camel case |
adds tests fix README fix documentation remove asdf file implements getFeature pattern update README Update packages/adapter-flagsmith/README.md Co-authored-by: Aaron Morris <aaron@vercel.com> address changes implements provider adds different methods for different types of flags fix tests changeset
b4d45a4 to
6ab9423
Compare
|
@chriswdmr can you do a final review on this one? |
| @@ -0,0 +1,6 @@ | |||
| --- | |||
| '@flags-sdk/flagsmith': major | |||
| 'flags': minor | |||
There was a problem hiding this comment.
We don't need to make a new release of the flags package
| 'flags': minor | |
| -'flags': minor |
|
|
||
| function createFlagsmithAdapter(params: IInitConfig): AdapterResponse { | ||
| async function initialize() { | ||
| await flagsmith.init({ fetch: globalThis.fetch, ...params }); |
There was a problem hiding this comment.
Since flagsmith is a singleton, does this mean there can only ever be one instance of the adapter at the same time?
If it gets called twice to connect to different projects the first adapter would get reconfigured, right?
That could be quite surprising, but I'm fine with this if we document it
const adapterA = createFlagsmithAdapter(projectA)
const adapterB = createFlagsmithAdapter(projectB)
Due to the singleton adapterA would now also connect to projectB 🐛
|
Merging so we can test directly within this repo |
|
I merged this today with the intention of testing and releasing but I ran out of time. Will pick this back up again next week. It is merged but unreleased for now. |
|
I reverted briefly as we needed to merge something else and I did not get around to review yet. |
This reverts commit bf85f97.
|
Continuing this in #167 |
This reverts commit bf85f97.
* Revert "Revert "Adds Flagsmith adapter (#103)"" This reverts commit bf85f97. * prepare flagsmith adapter for release * adjust changeset * update lockfile * shrink readme * feat: get-mv-options-to-build-possible-values * feat: reworked-decide-signature-and-readme * feat: rebase * adjust changeset * update lockfile * feat: reworked-decide-signature-and-readme * feat: updated-tests * feat: fix-pnpm-lok --------- Co-authored-by: Dominik Ferber <dominik.ferber@gmail.com>
* Revert "Revert "Adds Flagsmith adapter (#103)"" This reverts commit bf85f97. * prepare flagsmith adapter for release * adjust changeset * update lockfile * shrink readme * feat: get-mv-options-to-build-possible-values * feat: reworked-decide-signature-and-readme * feat: rebase * adjust changeset * update lockfile * feat: reworked-decide-signature-and-readme * feat: updated-tests * feat: fix-pnpm-lok * feat: added-documentation-for-identify * feat: added-full-example --------- Co-authored-by: Dominik Ferber <dominik.ferber@gmail.com>
* Revert "Revert "Adds Flagsmith adapter (#103)"" This reverts commit bf85f97. * prepare flagsmith adapter for release * adjust changeset * update lockfile * shrink readme * feat: get-mv-options-to-build-possible-values * feat: reworked-decide-signature-and-readme * feat: rebase * adjust changeset * update lockfile * feat: reworked-decide-signature-and-readme * feat: updated-tests * feat: fix-pnpm-lok * feat: added-documentation-for-identify * feat: added-full-example * feat: added-type-free-coercion-method * feat: removed-per-type-functions-in-favor-of-get-value --------- Co-authored-by: Dominik Ferber <dominik.ferber@gmail.com>
* Revert "Revert "Adds Flagsmith adapter (#103)"" This reverts commit bf85f97. * prepare flagsmith adapter for release * adjust changeset * update lockfile * shrink readme * provider @flags-sdk/flagsmith with correct options for Flag Explorer (#182) * Revert "Revert "Adds Flagsmith adapter (#103)"" This reverts commit bf85f97. * prepare flagsmith adapter for release * adjust changeset * update lockfile * shrink readme * feat: get-mv-options-to-build-possible-values --------- Co-authored-by: Dominik Ferber <dominik.ferber@gmail.com> * update lockfile * Flagsmith (#186) * Revert "Revert "Adds Flagsmith adapter (#103)"" This reverts commit bf85f97. * prepare flagsmith adapter for release * adjust changeset * update lockfile * shrink readme * feat: get-mv-options-to-build-possible-values * feat: reworked-decide-signature-and-readme * feat: rebase * adjust changeset * update lockfile * feat: reworked-decide-signature-and-readme * feat: updated-tests * feat: fix-pnpm-lok --------- Co-authored-by: Dominik Ferber <dominik.ferber@gmail.com> * Flagsmith (#190) * Revert "Revert "Adds Flagsmith adapter (#103)"" This reverts commit bf85f97. * prepare flagsmith adapter for release * adjust changeset * update lockfile * shrink readme * feat: get-mv-options-to-build-possible-values * feat: reworked-decide-signature-and-readme * feat: rebase * adjust changeset * update lockfile * feat: reworked-decide-signature-and-readme * feat: updated-tests * feat: fix-pnpm-lok * feat: added-documentation-for-identify * feat: added-full-example --------- Co-authored-by: Dominik Ferber <dominik.ferber@gmail.com> * rewrite changeset * Feat/flagsmith coercion method (#194) * Revert "Revert "Adds Flagsmith adapter (#103)"" This reverts commit bf85f97. * prepare flagsmith adapter for release * adjust changeset * update lockfile * shrink readme * feat: get-mv-options-to-build-possible-values * feat: reworked-decide-signature-and-readme * feat: rebase * adjust changeset * update lockfile * feat: reworked-decide-signature-and-readme * feat: updated-tests * feat: fix-pnpm-lok * feat: added-documentation-for-identify * feat: added-full-example * feat: added-type-free-coercion-method * feat: removed-per-type-functions-in-favor-of-get-value --------- Co-authored-by: Dominik Ferber <dominik.ferber@gmail.com> * rm next-13 * esm --------- Co-authored-by: Zaimwa9 <wadii.zaim@gmail.com>
This pull request introduces a new provider adapter for the Flags SDK that integrates with Flagsmith. The changes include adding configuration files, updating dependencies, and creating the necessary code for the adapter.
Flagsmith documentation: https://docs.flagsmith.com/clients/next-ssr
Usage