Custom renderers are a powerful way to extend Xamarin.Forms. As we mentioned in Chapter 1, Introduction to Xamarin, Xamarin.Forms is built with renderers, so for each Xamarin.Forms control, there is a renderer that creates a native control. By overriding an existing renderer or creating a new one, we can extend and customize how Xamarin.Forms controls are rendered to native controls. We can also use renderers to create new Xamarin.Forms controls from scratch.
Renderers are platform-specific, so when we create custom renderers, we have to create one for each platform that we want to change or use to extend the behavior of a control. To make our renderers visible for Xamarin.Forms, we will use the ExportRenderer assembly attribute. This contains information about which control the renderer is for and which renderer will be used.