IntroductionTech Stack & Compatibility Statement

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:

IE / Edge EdgeFirefoxFirefoxChromeChromeSafariSafariElectronElectronNode.js
last 2 yearslast 2 yearslast 2 yearslast 2 yearslast 2 yearsv18.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

ToolDescription
TypeScriptOur 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.
rediA 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.
CanvasWe use Canvas to render document content, and have greatly improved the performance of large documents through a series of optimizations.
ReactReact 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, RadixWe are migrating to TailwindCSS and Radix to make our styling system easily customizable.We stay current with the latest versions of these dependencies.
RxJSRxJS is our default solution for implementing reactive programming patterns in our codebase.We currently support RxJS versions 7.0.0 and above.
Decimal.js, numfmtUsed in our formula engine to deal with digital precisions and number formats.
Vitest, PlaywrightWe 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 TransformationThe algorithm to handle concurrent edits. We built the algorithm and transformation methods in-house.
json1Used to handle operation transformation for Univer Docs.

Univer Server stack

ToolDescription
Go, Python, NestJS, Node.jsGolang 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 ComposeWe 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, RabbitMQOur main storage layer.
Autogen, LangchainWe 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, LokiOur main observability stack.
SentryWe collect errors using Sentry.
gRPC, ProtobufWe 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

ToolDescription
GitHubOur 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.
CoderWe 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.
ArtilleryMain tool of load testing.