Frequently Asked Questions (FAQs)

This page answers common questions about IntelliToggle, the Dart SDKs, and feature flag practices.

1. General

1.1. What is IntelliToggle?

IntelliToggle is a feature flag management platform built for the Dart ecosystem. It allows developers to enable, disable, or roll out features dynamically without redeploying applications.

1.2. How is IntelliToggle different from other feature flag tools?

IntelliToggle provides first-class support for Dart and Flutter, integrates with the OpenFeature standard, and supports both SDK-based and direct API integrations.

1.3. Do I need to use the OpenFeature SDK?

Yes. IntelliToggle’s recommended integration is via the OpenFeature Dart SDK with the IntelliToggle provider. This keeps your integration aligned with the OpenFeature specification and makes provider swaps easier.

2. Setup and Usage

2.1. How do I get started?

  1. Create an IntelliToggle account and create OAuth2 client credentials for your project.

  2. Add the SDKs to your Dart or Flutter project.

  3. Initialize OpenFeature with the IntelliToggle provider.

  4. Evaluate flags using the SDK.

2.2. How do I evaluate a feature flag?

final enabled = await client.getBooleanValue('new-dashboard', false);
if (enabled) {
  print('Showing new dashboard');
} else {
  print('Fallback to old dashboard');
}

2.3. Can I target specific users?

Yes. Pass a targeting key and evaluation context:

final enabled = await client.getBooleanValue(
  'pro-feature',
  false,
  targetingKey: 'user-123',
  evaluationContext: {'plan': 'enterprise'},
);

3. Development and Testing

3.1. Can I run IntelliToggle locally?

Yes. Use the InMemoryProvider for fast local testing or run the local evaluation server described in Advanced Topics.

3.2. Do flags work offline?

Yes. The SDK can fall back to cached or default values when the remote service is unavailable.

3.3. Is there Flutter support?

Yes. Flutter apps can integrate through a service layer that exchanges OAuth2 credentials for access tokens and then evaluates flags through a backend or controlled API client.

4. Security and Privacy

4.1. How does IntelliToggle handle sensitive data?

Attributes used for targeting are processed for evaluation, and developers can mark fields as privateAttributes to exclude them from logs. See Security & Privacy.

4.2. Are API calls encrypted?

Yes. All communication with IntelliToggle APIs uses TLS over HTTPS.

4.3. Can I use IntelliToggle in a multi-tenant environment?

Yes. The SDK and APIs enforce tenant isolation using the X-Tenant-ID header.

5. Operations

5.1. How often are flags refreshed?

By default, every 5 minutes with polling. You can configure polling intervals or enable streaming for near real-time updates.

5.2. What happens if a flag doesn’t exist?

The SDK returns the provided default value. Always supply defaults when evaluating flags.

5.3. How do I manage stale flags?

Review and remove flags after experiments or rollouts. See Best Practices.

6. Troubleshooting

6.1. dart pub get fails or resolves older packages

Confirm the service is running Dart 3.11.0 or newer. The recommended server-side dependency set is:

dependencies:
  openfeature_dart_server_sdk: ^0.0.21
  openfeature_provider_intellitoggle: ^0.0.9

Run dart pub outdated if your lockfile pins older packages.

6.2. Token exchange returns 401

Check that INTELLITOGGLE_CLIENT_ID, INTELLITOGGLE_CLIENT_SECRET, and INTELLITOGGLE_TOKEN_URL are copied from the same IntelliToggle environment. Development credentials should be sent to the development API. Production credentials should be sent to https://api.intellitoggle.com.

6.3. Token exchange returns 403

The OAuth2 client may be inactive, expired, missing flags:read or flags:evaluate, or blocked by subscription state. Open Settings > Applications and confirm the client is active and scoped for the project/environment you are testing.

6.4. Evaluation returns the default value

Defaults are expected when the flag cannot be resolved. Check the flag key, project, environment, tenant ID, and targeting context. Also confirm the flag is enabled for the environment you are evaluating.

6.5. The dashboard shows the flag but the service still sees old values

Check the SDK polling interval and restart the service if you need an immediate validation pass. For production services, keep a short but reasonable polling interval and always provide safe defaults.