Documentation Overview
This website is organized into sections by tabs at the top of each page.
- Please read the Getting Started page to install prerequisites for developers and for suggestions for background reading.
- The BIS section explains the Base Infrastructure Schemas. Understanding BIS is essential to making sense of the iTwin.js APIs. Depending on your familiarity with database design, this is often the best starting point for understanding iModels and iTwin.js.
- The Learning tab (this page) introduces the building blocks of iTwin.js and provides step-by-step instructions for creating applications.
- The API Reference tab explains the API in more detail with package/class/function level documentation.
Using iTwin.js
The iTwin.js library has a comprehensive set of APIs that can be used anywhere an iModel may be relevant. It is designed to be modular and extensible, with the expectation that iTwin.js will be used in environments with many other JavaScript frameworks. iTwin.js strives to be as consistent as possible with established JavaScript conventions, though sometimes judgement calls are required where no established convention is clear.
With the iTwin.js Software architecture, from the same JavaScript codebase, it is possible to create:
- Agents and Services that process iModels and respond to events from iModelHub
- Web Apps that run in web browsers and communicate with backends
- Desktop Apps that run on personal computers
- Mobile Apps that run on tablets and phones
iTwin.js vs. iModelHub
It is important to understand that iTwin.js applications do not run on iModelHub. Instead, they can run anywhere else. iTwin.js applications always work on a copy of an iModel, either a briefcase or checkpoint obtained from iModelHub, or a snapshot iModel created by an iTwin.js application, and process it locally. This makes them infinitely scalable.
iTwin.js applications can be:
- hosted on any cloud service
- deployed using any cloud deployment model
- packaged with any container tool (e.g. Docker)
- managed with any orchestration system (e.g. Kubernetes)
- installed on desktops and mobile devices
JavaScript vs. TypeScript
iTwin.js is written in TypeScript. Even though it can be consumed in a JavaScript application, it is highly recommended that iTwin.js application developers use TypeScript too when possible. Throughout the iTwin.js library, the arguments and return values of functions are decorated with their expected types in TypeScript. The TypeScript compiler will verify the types of callers. Runtime checks to enforce correct types are not encouraged inside iTwin.js, given they add overhead and are not necessary for TypeScript callers. Therefore, pure JavaScript consumers of iTwin.js must be careful to not pass incorrect types.
JavaScript Version Requirements
The iTwin.js library requires a JavaScript engine with es2017 support.
Helpful articles
- App frontend development
- App backend development
- Classes packaged by both frontends and backends
- API support policies
- ECSQL
- Display system
- iModelHub
- Snapshot iModels
- GeoLocation in iModels
- Change summaries
- Remote procedure call ("RPC") Interfaces
Step by step instructions to:
Tutorials:
See also:
Last Updated: 10 January, 2023