SK-2449 ga ready render zip file in js sdk - #734
Merged
skyflow-bharti merged 10 commits intoSep 22, 2026
Merged
Conversation
yaswanth-pula-skyflow
approved these changes
Sep 22, 2026
* SK-2449 zip render support * SK-2449 add preserve file name fix * SK-2449 update lock file for jszip
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Zip rendering currently detects archives via a brittle URL query-param mime parse (and uses a hardcoded loading string), which can cause valid zip files to be rendered as plain files and creates inconsistent user-visible messaging.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 2
Open (2)
What changed in this PR
Adds GA support for rendering .zip files in the Skyflow JS SDK’s composable reveal file elements by unzipping archives client-side and presenting a list-detail viewer with per-file preview and optional download.
Changes:
- Implement zip rendering in the reveal iframe (lazy extraction, list-detail UI, dangerous-type blocking, downloadCurrentFile support).
- Add/propagate
renderFile(options)(IRenderOptions) plus new enumsZipLabelModeandZipRenderLayoutthrough public exports. - Extend error/log messaging, docs, samples, and test coverage for zip render + file-name validation behavior.
| File | Description |
|---|---|
| packages/skyflow-js/tests/utils/validators.test.js | Adds tests for validateRenderOptions and isDangerousFileType. |
| packages/skyflow-js/tests/skyflow.test.js | Verifies SDK surface exports zip enums. |
| packages/skyflow-js/tests/libs/element-options.test.js | Tests defaulting/behavior for preserveFileName on multi-file input options. |
| packages/skyflow-js/tests/core/internal/reveal/reveal-frame-zip.test.js | New comprehensive tests for zip rendering, preview, styling, download, and race conditions. |
| packages/skyflow-js/tests/core/internal/iframe-form/iframe-form.test.js | Adds tests for invalid file-name handling across file element types. |
| packages/skyflow-js/tests/core/internal/frame-element-init.test.js | Updates expectations for “no files selected” error shape. |
| packages/skyflow-js/tests/core/internal/frame-element-init.additional.test.js | Adds coverage for filename validation skipping when preserveFileName=false and related upload behavior. |
| packages/skyflow-js/tests/core/external/reveal/reveal-composable-internal.test.js | Tests forwarding render options to iframe and new download event forwarding. |
| packages/skyflow-js/tests/core/external/reveal/reveal-composable-element.test.js | Tests renderFile(options) payload and downloadCurrentFile() emission. |
| packages/skyflow-js/tests/api-utils/reveal.test.js | Ensures unZippedFilesMetadata is included in render success formatting. |
| packages/skyflow-js/src/utils/validators/index.ts | Adds render options validator and dangerous file-type detection helper. |
| packages/skyflow-js/src/skyflow.ts | Exposes zip enums on the Skyflow class. |
| packages/skyflow-js/src/internal/reveal/reveal-frame.ts | Implements zip download/unzip/preview UI, option sanitization, and download handler. |
| packages/skyflow-js/src/internal/frame-element-init.ts | Adjusts file upload errors and filename validation based on preserveFileName. |
| packages/skyflow-js/src/index-node.ts | Re-exports zip enums and render options type from node entry. |
| packages/skyflow-js/src/external/reveal/reveal-container.ts | Extends reveal element input types with zip layout style hooks. |
| packages/skyflow-js/src/external/reveal/composable-reveal-internal.ts | Validates/forwards render options and adds iframe download forwarding. |
| packages/skyflow-js/src/external/reveal/composable-reveal-element.ts | Adds renderFile(options) and downloadCurrentFile() public API. |
| packages/skyflow-js/src/api-utils/reveal.ts | Includes unZippedFilesMetadata in formatted render responses. |
| packages/skyflow-js/samples/using-script-tag/zip-file-render.html | New sample demonstrating zip render + downloadCurrentFile. |
| packages/skyflow-js/samples/README.md | Documents how to run the zip render sample. |
| packages/skyflow-js/README.md | Adds public documentation for zip render options, styles, and response shape. |
| packages/skyflow-js/package.json | Adds jszip dependency. |
| package-lock.json | Updates lockfile for jszip and transitive dependencies. |
| core/utils/logs.ts | Adds log/error messages for zip rendering and render option validation. |
| core/utils/constants.ts | Adds new SKYFLOW error codes for zip render and invalid render options. |
| core/types/index.ts | Adds IRenderOptions, zip enums, and unZippedFilesMetadata types. |
| core/libs/element-options.ts | Fixes switch-case logic and defaults preserveFileName for file elements. |
| core/internal/iframe-form/index.ts | Fixes multi-file filename validation so earlier failures aren’t overwritten. |
| core/constants.ts | Adds zip viewer constants, styles, and new iframe event constant. |
| CHANGELOG.md | Documents zip render feature additions under Unreleased. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
saileshwar-skyflow
approved these changes
Sep 22, 2026
skyflow-bharti
added a commit
that referenced
this pull request
Sep 22, 2026
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.

Added zip render file support