Included from 2.3.5, FastRenderers are several new renderers for Android, that speed up the rendering of certain elements. There are currently 4 FastRenderers in 2.3.5. These include ButtonRenderer, FrameRenderer, LabelRenderer and ImageRenderer.
They are enabled by default, however the old renderers still exist, to ensure backwards compatibility. This has now changed for 2.4.0, and you need to enable FastRenderers with this flag, that you do just before your Xamarin.Forms.Init line, in the OnCreate of your MainActivity.cs.
You could group these changes into two sections. I will go through the major change first.
Removal of ViewRenderer
The most noticeable change, is the removal of each renderer, inheriting from ViewRenderer<TView, TNativeView>. Before you would see the ButtonRenderer do this.
ButtonRenderer -> ViewRenderer<Button, AppCompatButton> -> Control
Now it will inherit directly from the native Xamarin Android control, in Android.Support.V7.Widget.
ButtonRenderer -> AppCompatButton
It still implements IVisualElementRenderer, hence overrides such as OnElementChanged and OnElementPropertyChanged are available.
Where do the Speed Improvements come in?
The speed improvements are obtained, via a reduced layout cycle. In the existing ViewRenderer, a layout change would involve this.
OnLayout(ButtonRenderer.cs) -> OnLayout(ViewRenderer.cs) -> OnLayout (VisualElementRenderer.cs) -> MeasureAndLayout -> ForChildren -> Renderer.UpdateLayout()
In the fast renderers, the layout cycle is reduced.
OnLayout(ButtonRenderer.cs) -> OnLayout(AView)
Moving to the VisualElementTracker, which all renderers use, old and new, a change was made to batch updates. Previously all layout parameters were set one by one e.g. X/Y Anchor, rotation, opacity, scale and translation. Now, all of these properties are sent at once, for more efficient processing by Android, with FormsViewGroup.SendViewBatchUpdate.
The performance improvements, will vary for each application, depending upon the complexity of your layout. Based off other developer’s experience, some have seen a x2 improvement, others have only seen a few percentage point speed improvement. The use case that will most likely see the greatest improvements, is a large ListView and very fast scrolling. Flat or simple layouts, will unlikely see any noticeable improvements to your end users.
There will no doubt be more FastRenderers coming in the future, which will hopefully improve the speed of your application further, with no additional work.