First and most importantly - watch the tutorial videos: UI Beginner Tutorials

Download the example project and play with it: Asset Store UI Example Project

How to disable a UI object from blocking raycasts without disabling the object? Add CanvasGroup behavior, disable the BlockRaycast option.

UI/Sprite textures aren't packed into a texture atlas by default. A tag is needed to group them. Read the documentation / tutorial on the sprite packer.

Overlapping text/graphic boundaries with another text/graphic will create additional draw calls, even if the actual visual graphics do not overlap.

Grids (other layouts too I presume) need minimum 1 pixel spacing between items, else items are considered overlapping and will create additional draw calls.

Images with alpha 0 are still rendered. They are rendered with alpha 0 even though they are not seen.

Unity currently does not support non-rectangle shapes as Sprites, so using the TightSpitePacker policy will cause image artifacts.

When UI objects are offscreen, they are still batched (rendered as well?). Possible solutions: Change parent to non-UI parent, as UI Camera will no longer detect it Change layer of panel so UI Camera will no longer detect it Disable gameobject when off-screen

ScrollRect performance tuning ScrollRect will rebuild / reload everything every frame if pixel perfect is enabled Disabling the layout behaviors when it's not being used / updated (canvas size fitter, layout groups, layout elements) For larger lists, disable off-screen objects

Canvas PixelPerfect has large performance impact. Disable it if possible.

Looping animations should be stopped when off-screen.

Fonts are not part of the texture atlas, unlike ngui/df-gui/etc. This will produce additional draw calls. Here's a post on adding your own bitmap font to use, which I believe you can add to the texture atlas? Unity 4.6 Bitmap font? Haven't tested this, but looks promising.

I spent a lot of time reading these forums, forum/net searches, etc. just to find out what information I could on the new UI and how to do it because I don't see an actual 'best practices' thread anywhere. The tutorial project was fantastic to learn the basics, but then you're left with questions when you delve in.So once you're done with that, you go build some UI and wonder why ngui/df-gui/etc. performance was so much better. For me I had horrible performance with just a UI (no game) that had few animated texts, 2 scrollRects, and just a bunch of images text. That's when I decided more reading was necessary.I'm surprised there isn't already a topic like this. If I'm wrong on some of these points, please let me know. Add to it. It's been compiled from reading many, many, many forum posts. After all the optimizations, my draw-call count is very close to my previous UI (with ngui) and performance is very good.I am sure more can be added. Maybe someone ought to move most of this over to the FAQ. The FAQ page could use some scrubbing, as "asking a question instead of making an actual forum post" doesn't really make it a frequently asked question.