Skip to content
This repository was archived by the owner on May 30, 2025. It is now read-only.

v3.0.0

Compare
Choose a tag to compare
@dferber90 dferber90 released this 12 Sep 07:56
· 27 commits to master since this release
ef5020f

Major Changes

  • 1822587: BREAKING CHANGE: Configuration overhaul

    What

    This release changes HappyKit's configuration approach.

    Previously you had to create a flags.config.js file and import it into your pages/_app.js and into every middleware that wanted to use feature flags. If you were using your own AppFlags type, you also had to pass this type every time you invoked getFlags(), useFlags() or getEdgeFlags(). And the configuration options for client-, server- and edge were mixed together into a single flags.config.js file.

    Why

    This release replaces the existing configuration approach with a new one. This new approach configuration prepares happykit for upcoming features.

    How

    1. Add flags folder

    Follow the updated Setup instructions to create the flags folder in your own application, and fill it with.

    After this step, you should have

    • ./flags/config.ts which exports a configuration
    • ./flags/client.ts which exports a useFlags function
    • ./flags/server.ts which exports a getFlags function
    • ./flags/edge.ts which exports a getEdgeFlags function

    2. Set up absolute imports

    Enable Absolute Imports as described here.

    3. Adapt your imports

    Then change the application code in your pages/ folder to use these functions from your flags/ folder instead of from @happykit/flags:

    - import { useFlags } from "@happykit/flags/client"
    + import { useFlags } from "flags/client"
    - import { getFlags } from "@happykit/flags/server"
    + import { getFlags } from "flags/server"
    - import { getEdgeFlags } from "@happykit/flags/edge"
    + import { getEdgeFlags } from "flags/edge"

    _Note that because of the absolute imports we configured in step 2, all imports from "flags/" will use the local flags folder you created in step 1.*

    4. Delete your old setup

    We can now delete the old setup since we no longer need it

    • delete flags.config.js
    • remove the flags.config import from your pages/_app file
      • you might be able to delete the pages/_app file if it's not doing anything else anymore
    • remove the import of flags.config from your middleware