[FSSDK-12092] add platform verification for imports #1112
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR implements a comprehensive platform isolation system for a multi-platform JavaScript SDK that supports Browser, Node.js, and React Native. The system enforces that platform-specific code cannot be imported by incompatible platforms, preventing runtime errors when bundling for different targets.
Key changes:
- Adds validation scripts that check
__platformsexports and import compatibility - Integrates ESLint rule to enforce platform declarations at development time
- Adds extensive documentation and troubleshooting guides
- Updates all source files to include
__platformsexports
Reviewed changes
Copilot reviewed 141 out of 142 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
scripts/validate-platform-isolation.js |
Main validation script that enforces platform isolation rules |
scripts/platform-utils.js |
Shared utilities for platform extraction and validation |
scripts/test-validator.js |
Test suite for platform compatibility rules |
scripts/add-platform-exports.js |
Auto-fix script to add missing __platforms exports |
.platform-isolation.config.js |
Configuration for include/exclude patterns |
eslint-local-rules/require-platform-declaration.js |
ESLint rule enforcing __platforms exports |
lib/platform_support.ts |
Type definition for valid platforms |
vitest.config.mts |
Adds coverage configuration |
docs/PLATFORM_ISOLATION.md |
Comprehensive platform isolation documentation |
package.json |
Adds validation scripts and new dependencies |
lib/**/*.ts |
Adds __platforms exports to all source files |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
junaed-optimizely
requested changes
Dec 2, 2025
junaed-optimizely
approved these changes
Dec 2, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements a comprehensive platform isolation system for a multi-platform JavaScript SDK that supports Browser, Node.js, and React Native. The system enforces that platform-specific code cannot be imported by incompatible platforms, preventing runtime errors when bundling for different targets.
Key changes:
__platformsexports and import compatibility__platformsexports based on file name__platformsexportsTest plan
Issues