Skip to content

Add Electron to clerk init framework detection and --framework #482

Description

@manovotny

Summary

clerk init cannot set up @clerk/electron. --framework has no electron choice, and detection (packages/cli-core/src/lib/framework.ts FRAMEWORK_MAP) matches an Electron Forge project as React once react is installed (React precedes Vite in the map) or as Vite/JavaScript before that, so init installs @clerk/react or @clerk/clerk-js. clerk env pull writes the right variable name (VITE_CLERK_PUBLISHABLE_KEY) but also writes CLERK_SECRET_KEY, because packages/cli-core/src/commands/env/pull.ts includes the secret key for every npm framework. A secret key has no use in an Electron app, so the docs cannot recommend env pull either.

The Electron docs (clerk/clerk#3382) therefore use the manual Publishable Key step and carry no CLI instructions.

Proposal

Add an entry to FRAMEWORK_MAP before the react and vite entries, since Electron Forge projects contain both:

{
  dep: "electron",
  name: "Electron",
  sdk: "@clerk/electron",
  envVar: "VITE_CLERK_PUBLISHABLE_KEY",
  envFile: ".env",
},

Notes for the implementer:

  • @clerk/electron needs electron-store installed alongside it (optional peer used by @clerk/electron/storage); sdkInstall may need to cover both.
  • Electron has no secret key; init and env pull should skip CLERK_SECRET_KEY for this framework the way the iOS and Android entries do (extend isNpmFramework/includeSecretKey or add a per-framework flag).
  • The Electron renderer's Content Security Policy needs the instance's Frontend API host; the docs put it in .env as VITE_CLERK_FRONTEND_API_HOST, which env pull could write too.
  • --starter could scaffold with Electron Forge: npm init electron-app@latest <name> -- --template=vite-typescript plus React, matching the docs quickstart at https://clerk.com/docs/electron/getting-started/quickstart.
  • Keyless is not supported by the Electron SDK today (the SDK requires publishableKey).

Follow-up in docs

Once shipped, the quickstart gains a "For AI agents" block with npx clerk@latest init --framework electron and a <PromptOnly> card (tracked in Linear DOCS, linked from the docs PR).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions