What are the pros and cons of building native apps vs. hybrid apps?

Native apps often provide better performance, but hybrid apps allow you to reach more platforms with one codebase. Which approach do you prefer? What has your experience been when building either native or hybrid mobile apps, and how do you decide which to use for a project?