If you’d like to start customizing the behavior of napari, it pays to familiarize yourself with the concept of an Event Loop. For an introduction to event loops and connecting your own functions to events in napari, see the An Introduction to the Event Loop in napari.
If you use napari to view and interact with the results of long-running computations, and would like to avoid having the viewer become unresponsive while you wait for a computation to finish, you may benefit from reading about Multithreading in napari.
Performance is a core feature of napari. To learn how to monitor performance and diagnose and fix performance problems, see Performance Monitoring.
Finally, see Asynchronous Rendering for two experimental features than can optionally be enabled to add non-blocking rendering to napari.