npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@rxbenefits/mfe-config

v1.0.2

Published

Configuration utilities for RxBenefits Micro Frontend applications - cookie isolation, environment helpers, and Auth0 setup

Readme

@rxbenefits/mfe-config

Configuration utilities for RxBenefits Micro Frontend applications. Solves common MFE challenges including cookie isolation, environment configuration, and Auth0 setup.

Installation

npm install @rxbenefits/mfe-config

Features

  • Cookie Isolation: Prevent 431 Request Header Too Large errors in local development
  • Environment Helpers: Clean and parse environment variables reliably
  • Auth0 Utilities: Simplified Auth0 configuration and session management
  • TypeScript: Full type definitions included

Quick Start

Cookie Isolation Setup

When running multiple Next.js apps on localhost (e.g., shell on port 3000, MFE on port 3001), browsers share cookies across ports, causing header size limits to be exceeded. This library provides utilities to use 127.0.0.1 for API calls, which browsers treat as a separate domain from localhost.

import { getMfeApiOrigin, buildMfeApiUrl } from '@rxbenefits/mfe-config';

// Get the API origin for your MFE
const apiOrigin = getMfeApiOrigin(3001); // Returns 'http://127.0.0.1:3001' in integrated mode

// Build full API URLs
const url = buildMfeApiUrl('/api/ben-admin/organizations', 3001);
// Returns: 'http://127.0.0.1:3001/api/ben-admin/organizations'

Environment Variable Helpers

import {
  cleanEnvValue,
  parseBooleanEnv,
  getEnvWithFallback,
} from '@rxbenefits/mfe-config';

// Remove quotes from env vars (Next.js includes them)
const apiUrl = cleanEnvValue(process.env.API_URL);

// Parse boolean values
const isEnabled = parseBooleanEnv(process.env.FEATURE_ENABLED, false);

// Try multiple env var names
const namespace = getEnvWithFallback(
  ['AUTH0_NAMESPACE', 'AUTH0_NAMESPACE_KEY'],
  'https://default.example.com'
);

Auth0 Configuration

import {
  loadAuth0Config,
  getAuth0SessionName,
  extractCustomClaims,
} from '@rxbenefits/mfe-config';

// Load Auth0 config from environment
const auth0Config = loadAuth0Config();

// Get recommended session cookie name
const sessionName = getAuth0SessionName('ben-admin');
// Returns: 'ben_admin_mfe_session'

// Extract custom claims from access token
const claims = extractCustomClaims(accessToken);

Generate Recommended Environment Variables

import { getRecommendedEnvVars } from '@rxbenefits/mfe-config';

const envVars = getRecommendedEnvVars({
  mfeName: 'ben-admin',
  mfePort: 3001,
  shellUrl: 'http://localhost:3000',
  auth0: {
    issuerBaseUrl: 'https://your-tenant.auth0.com',
    clientId: 'your-client-id',
    clientSecret: 'your-client-secret',
    baseUrl: 'http://localhost:3001',
  },
});

// Returns object with all recommended env vars:
// {
//   NEXT_PUBLIC_SHELL_URL: 'http://localhost:3000',
//   NEXT_PUBLIC_MFE_API_ORIGIN: 'http://127.0.0.1:3001',
//   NODE_OPTIONS: '--max-old-space-size=4096 --max-http-header-size=32768',
//   AUTH0_SESSION_NAME: 'ben_admin_mfe_session',
//   AUTH0_SESSION_STORE_ID_TOKEN: 'false',
//   // ... etc
// }

API Reference

Cookie Isolation

detectMfeEnvironment(): MfeEnvironment

Detects the current MFE environment (browser, development, integrated).

getMfeApiOrigin(mfePort?, envVarName?): string

Gets the API origin URL. Returns 127.0.0.1 in integrated dev mode to avoid cookie collisions.

buildMfeApiUrl(endpoint, mfePort?): string

Builds a full URL for an API endpoint with proper origin.

getAuth0SessionName(mfeName): string

Generates a unique session cookie name to avoid collisions.

getNodeOptions(maxOldSpaceSize?, maxHeaderSize?): string

Generates NODE_OPTIONS string with increased header size limit.

getRecommendedEnvVars(config): Record<string, string>

Generates all recommended environment variables for MFE setup.

Environment Helpers

cleanEnvValue(value): string

Removes quotes and trims environment variable values.

normalizeOrigin(value): string

Removes trailing slashes from URLs.

parseBooleanEnv(value, defaultValue?): boolean

Parses boolean environment variables.

parseNumberEnv(value, defaultValue): number

Parses numeric environment variables.

getEnvWithFallback(keys, defaultValue?): string

Tries multiple env var names until one is found.

validateRequiredEnv(requiredVars): void

Validates that required environment variables are set.

Auth0 Helpers

getAuth0Namespace(): string

Gets Auth0 claims namespace from environment.

getAuth0ManagementAudience(): string | null

Gets Auth0 Management API audience URL.

getAuth0Audience(options?): string | null

Resolves the preferred API audience using AUTH0_API_AUDIENCE / AUTH0_AUDIENCE, falling back to the configured namespace (or the default namespace) and finally the Management API when permitted.

getAuth0Scope(): string

Gets Auth0 scope from environment.

loadAuth0Config(): MfeAuth0Config

Loads complete Auth0 configuration from environment.

extractCustomClaims(accessToken, namespace?): Record<string, any> | null

Extracts custom claims from JWT access token.

getMinimalSessionUser(accessToken, namespace?): { userId?: string }

Extracts minimal user data for session storage (reduces cookie size).

Common Issues Solved

431 Request Header Fields Too Large

Problem: Multiple MFEs on localhost share cookies, causing combined header size to exceed limits.

Solution: Use 127.0.0.1 for API calls in integrated mode.

// In .env.local
NEXT_PUBLIC_MFE_API_ORIGIN=http://127.0.0.1:3001

// In your API client
import { getMfeApiOrigin } from '@rxbenefits/mfe-config';
const apiUrl = getMfeApiOrigin(3001);

Large Auth0 Session Cookies

Problem: Auth0 sessions store access tokens, ID tokens, and custom claims, causing large cookies.

Solution: Minimize session data and don't store ID token.

// In .env.local
AUTH0_SESSION_STORE_ID_TOKEN=false

// In your Auth0 callback
import { getMinimalSessionUser } from '@rxbenefits/mfe-config';
const minimalUser = getMinimalSessionUser(accessToken);
// Only stores userId, not full user profile

Environment Variable Quoting

Problem: Next.js includes quotes from .env files in variable values.

Solution: Use cleanEnvValue to remove quotes.

import { cleanEnvValue } from '@rxbenefits/mfe-config';
const url = cleanEnvValue(process.env.API_URL);

TypeScript

This package is written in TypeScript and includes complete type definitions.

import type {
  MfeConfig,
  MfeAuth0Config,
  MfeEnvironment,
} from '@rxbenefits/mfe-config';

License

MIT © RxBenefits