Tech Stack & Compatibility Statement
Univer’s stack can be found on StackShare.
Univer SDK Compatibility
Univer SDK refers to the code written in TypeScript in Univer and published in the form of an npm package. Univer SDK’s compilation target is Chrome 70, but this does not mean that Univer can fully support all main stream environments. We will do our best to ensure that Univer runs smoothly in the following browsers and Node.js versions:
Edge | Firefox | Chrome | Safari | Electron | Node.js |
---|---|---|---|---|---|
last 2 years | last 2 years | last 2 years | last 2 years | last 2 years | v18.17.0 and later |
If you encounter compatibility issues, please try to solve them with the corresponding polyfill. If you still cannot solve the problem, please submit an issue.
SDK stack
Tool | Description |
---|---|
TypeScript | Our SDK code is fully written in TypeScript, enhancing maintainability and improving users’ development expericence. We generate a detailed API reference manual using typedoc.We consistently update to the latest version of TypeScript. |
redi | A lightweight yet powerful dependency injection library developed by our team member. We use it to organize thousands of modules in Univer, making our codebase more manageable. |
Canvas | We use Canvas to render document content, and have greatly improved the performance of large documents through a series of optimizations. |
React | React is used to construct the user interface except for documents’ content, e.g. toolbars, panels and context menus.We support React versions 16.8.0 and above (the versions with React Hooks). |
TailwindCSS, Radix | We are migrating to TailwindCSS and Radix to make our styling system easily customizable.We stay current with the latest versions of these dependencies. |
RxJS | RxJS is our default solution for implementing reactive programming patterns in our codebase.We currently support RxJS versions 7.0.0 and above. |
Decimal.js, numfmt | Used in our formula engine to deal with digital precisions and number formats. |
Vitest, Playwright | We focus on ensuring code quality through automation. We use vitest for unit tests and integration tests, and playwright for e2e tests and vasual comparition tests. |
Operational Transformation | The algorithm to handle concurrent edits. We built the algorithm and transformation methods in-house. |
json1 | Used to handle operation transformation for Univer Docs. |
Univer Server stack
Tool | Description |
---|---|
Go, Python, NestJS, Node.js | Golang excels in handling intense concurrency and rapid network I/O, allowing the Univer collaboration engine to easily handle excessive client connection requests.Python is currently the most popular language for building AI applications. Thanks to Python, we can adopt cutting-edge frameworks and quickly develop our AI applications. Node.js allows us to use the Univer SDK on the server side, allowing users to write business logic on both sides with a set of APIs, while also supporting server-side computing, server-side rendering, and solving collaborative editing conflicts. |
Kubernetes, Docker Compose | We aim to balance flexibility and ease of use in deployment, enabling our customers to quickly start and confidently invest in a production environment. To meet the diverse needs of our customers, we support both Kubernetes and Docker Compose. |
PostgreSQL, Redis, RabbitMQ | Our main storage layer. |
Autogen, Langchain | We build flexible and complex AI agent workflows through Autogen; thanks to the active ecosystem of Langchain, we quickly develop various useful and interesting AI features. |
Prometheus, Grafana, Jaeger, Loki | Our main observability stack. |
Sentry | We collect errors using Sentry. |
gRPC, Protobuf | We use gRPC as the communication protocol among our backend services, and generate type definitions with the protobuf files for the API layer of our frontend to keep everything aligned. |
Engineering
Tool | Description |
---|---|
GitHub | Our R&D process revolves around GitHub, including project management, issue management, code review, and version releases. We have also built numerous CI pipelines on GitHub Actions, including unit tests (with code coverage), e2e tests, memory leak tests, performance tests, deployments, and more. This allows us to move fast with confidence. |
Coder | We have deployed cloud-based development environments using Coder, coupled with our self-built traffic coloring and routing distribution mechanisms powered by Istio. This allows our engineers to conveniently perform integration and testing, greatly accelerating the speed of feature development. |
Artillery | Main tool of load testing. |