The Web Builder lets you compose web pages by placing widgets on them. Widgets are graphical components specialized in making dedicated types of content, e.g. headlines, images, forms, etc., easy to handle and displaying them. In contrast to pages, binaries, etc., widgets cannot be referenced individually in the system (they don’t have a system-wide unique ID) but are part of a particular page. Widgets can be used across different page types, duplicated, moved around and more.
The Widget class has similar functionality as the Obj class in that it lets you customize how individual types of content should be handled, presented, and edited. For this, widget classes can be created with unique attributes and components for rendering them. Analogous to the creation of classes for objects, custom widget classes can be created using Scrivito.provideWidgetClass(). The Web Builder derives them from Widget.
You can also customize the widget classes part of the Portal App, simply by redefining them. Widgets of the ImageWidget class, for example, handle and display image objects. The Web Builder SDK takes care of their basic functioning like fetching or scaling them, but you can add as much functionality to them as you want, provide them with a caption or a tooltip, rotate them via CSS, etc.