Preface
GenUI SDK is a solution developed by the OpenTiny team based on Generative UI concepts. It is designed to enhance the display and interactive capabilities of large language models (LLMs). The SDK delivers full front-end and back-end integrated capabilities and complies with OpenAI specifications.
It comes with built-in renderers for both Vue and Angular frameworks, and supports custom components, interactive behaviors and theme styles. You can either build an AI chat application from scratch rapidly, or embed Generative UI capabilities into existing business systems.
We are thrilled to announce the official release of GenUI SDK v1.2.0. This update focuses on four major optimization directions: SDK lightweighting & on-demand importing, improved streaming rendering stability, comprehensive Playground upgrades, and enhanced GenUI Template experience. The SDK now runs lighter, performs more stably and is easier to configure in production environments.
- Open Source Repository: github.com/opentiny/genui-sdk (Star ⭐ appreciated!)
- Official Website: opentiny.design/genui-sdk
Version Feature Overview
SDK Build Optimization
- On-demand importing:
@opentiny/genui-sdk-vueis split into multiple entry points for separate component exports, enabling on-demand importing.
More Stable Streaming Rendering
- A new
isJsonCompleteflag is added to the renderer component to optimize buffering for object-type content. - Enhanced SSE compatibility to support more streaming response formats.
Fully Upgraded Playground
- Skill Packages: Support importing SKILL folders with progressive disclosure capability.
- Added A2A (Agent-to-Agent) collaborative capabilities for agents.
- Split thinking modes: Models like DeepSeek v4 now support thinking and non-thinking modes.
- Import & export for chat and template history records.
- Streaming update support for template JSON Patch.
- Mobile UI optimization and dark mode adaptation for templates.
Other Updates
- Enforced strict JSON output specifications to reduce parsing failures at the prompt level.
- Fixed scope issues for loop child nodes and optimized rendering error capture & recovery.
Detailed New Features
1. On-demand Import & SDK Package Size Reduction
Previously, @opentiny/genui-sdk-vue was released as a single full package. Even if your project only used the renderer module, modules such as Chat and ConfigProvider would be bundled into the final product under poor tree-shaking configurations, resulting in redundant package bloat.
v1.2.0 supports subpath package exports, allowing you to import entries based on actual scenarios:
| Subpath | Applicable Scenario |
|---|---|
@opentiny/genui-sdk-vue |
Default entry for combined use of Chat, Renderer and ConfigProvider |
@opentiny/genui-sdk-vue/chat |
For chat components only |
@opentiny/genui-sdk-vue/renderer |
For renderer only (custom-built chat UI) |
@opentiny/genui-sdk-vue/config-provider |
For theme and internationalization configuration |
@opentiny/genui-sdk-vue/transform-jsx |
For JSX transformation capabilities |
If you only use GenuiRenderer to build a custom chat UI, simply import the dedicated renderer subpackage:
import { GenuiRenderer } from '@opentiny/genui-sdk-vue/renderer'
Besides SDK subpackaging, built-in OpenTiny components are now imported at the subpackage level.
Only components used by GenUI will be packaged, instead of importing the full @opentiny/vue library.
Components like @opentiny/vue-button, @opentiny/vue-grid and @opentiny/vue-chart-* are imported on demand to eliminate unnecessary dependencies.
Package Size Comparison
Test environment: Only GenuiRenderer (@opentiny/genui-sdk-vue/renderer) imported, built via Vite + Rollup in production mode.
| Metric | Before Optimization | After Optimization |
|---|---|---|
| Total Bundle Size | 14.67 MB | 8.02 MB |
@opentiny/genui-sdk-vue Occupied Size |
~3.04 MB (20.72%) | ~506 KB (6.64%) |
| SDK Package Reduction (Renderer Scenario) | — | ~83% |
Before optimization:
After optimization:
2. Import & Export of Chat History
Both chat history and template history in Playground support import and export in JSON format, facilitating context backup, debugging and cross-environment issue reproduction. Multiple records can be selected for batch export or deletion.
- Export file naming rule:
genui-history-YYYY-MM-DD-HH-mm-ss.json(The same naming rule applies to template history with distinguishable prefixes) - File structure: An array of conversation objects, each containing fields such as
idandmessages.
Import Validation & Conflict Resolution
- Clear error prompts for invalid JSON files or files missing the
messagesarray. - Automatic new ID assignment via
reconcileImportedConversationIdsfor conflicting conversation IDs to avoid overwriting local records.
GenuiTemplateList reuses the same history toolbar, delivering a consistent import & export experience for chats and templates.
Conversation Exporting
Session Importing
3. Playground Skill Package Support
Skill Package is a major upgrade for Agent capabilities in Playground:
- Single-file Skill: For quick testing, write Skill content directly in a single file.
-
Folder Import: Import complete SKILL directories containing
SKILL.mdand affiliated modules. You can view and edit all files via the tree panel after import. -
Progressive Disclosure: Only skill names and descriptions are injected into system prompts. When the model needs a specific skill, it calls the
get_skill_contenttool to fetch full content or sub-documents on demand, preventing excessive consumption of context window space.
Demo reference: Vue Best Practices Skill → https://github.com/antfu/skills/tree/main/skills/vue-best-practices
4. Playground A2A Agent Collaboration
v1.2.0 implements A2A (Agent-to-Agent) capabilities on the Playground server. External AI agents can be registered as tools, working alongside MCP Tools and Skill Tools within a single conversation.
Playground has evolved from a single-model mode to a multi-agent architecture: the main Agent orchestrates tasks, while domain-specific Agents execute them. You can integrate existing vertical agents (customer service, data analysis, code review, etc.) without rebuilding the chat UI layer.
The current implementation is based on A2A Protocol v0.3.0, supporting the full workflow: Main Agent Orchestration → Domain Agent Execution → Result Writeback via Schema.
The official stable A2A Protocol v1.0.0 has been released. We are working on adaptation (Agent Card parsing, calling conventions, error handling, etc.) and plan to complete the upgrade in the next version for better interoperability with the A2A ecosystem.
5. Thinking & Non-Thinking Modes for Models
The system automatically detects models supporting the enable_thinking parameter (e.g. DeepSeek-V4-Flash/Pro) and splits them into two options:
-
{modelName}: No-Thinking Mode (thinking: { type: 'disabled' }) for faster responses. -
{modelName}-thinking: Thinking Mode (thinking: { type: 'enabled' }) for in-depth reasoning.
You can select modes based on scenarios: use No-Thinking for simple UI generation to pursue speed, and Thinking Mode for complex interactive logic to guarantee quality.
6. Template Experience Optimization
Mobile & Dark Mode Adaptation
Comprehensive style optimization for GenUI Template on mobile devices, plus full adaptation for dark mode.
Optimized Prompt & JSON Patch
Built a complete JSON Patch Zod Schema based on RFC 6902, making diff results returned by LLMs more accurate and stable.
Other Notable Fixes & Improvements
New isJsonComplete Field for Renderer
Previously, incomplete object data (e.g. unfinished function bodies or style properties) would trigger rendering truncation errors. The newly added isJsonComplete flag allows developers to explicitly mark whether the JSON schema is complete. Combined with requiredCompleteFieldSelectors (buffer fields), you can specify mandatory fields that must be fully loaded before rendering.
Strict JSON Output Rules
Prompts now enforce standard JSON format requirements: double quotes only, no trailing commas, no comments and no single quotes. This effectively reduces parsing failures caused by non-standard JSON outputs from LLMs.
Loop Child Node Scope Fix
Resolved the issue where loop child nodes could not access scope variables such as item and index. Variables now work normally in loop rendering scenarios.
Enhanced SSE Compatibility
Added support for non-standard SSE streams where no space follows the data: prefix (e.g. data:{"content":"..."}). More third-party streaming interfaces can now be connected smoothly.
Summary
GenUI SDK v1.2.0 delivers a lighter package size, more reliable streaming rendering, more powerful Playground functions and a polished template experience.
Feel free to upgrade and experience the new version. If you encounter edge cases or have optimization suggestions, submit feedback via GitHub Issues. Star and contributions are always welcome!
Full changelog: github.com/opentiny/genui-sdk/releases
About OpenTiny NEXT
OpenTiny NEXT is an enterprise-grade intelligent front-end development solution built around Generative UI and WebMCP. It intelligently upgrades traditional products including TinyVue component library and TinyEngine low-code engine, and launches new products for Agent applications such as NEXT-SDKs for front-end, AI Extension, TinyRobot AI assistant and GenUI.
Our goal is to enable AI to understand user intentions and complete tasks autonomously, accelerating the intelligent transformation of enterprise applications.
Join the OpenTiny Community
- WeChat Assistant: opentiny-official
- Official Website: opentiny.design
- Open Source Repository: github.com/opentiny/genui-sdk
If you want to contribute to open source, look for issues tagged with good first issue in the repository to get started!












Top comments (0)