The only thing I would add is to make a conscious choice about always displaying the search bar v. hiding the search bar. If you are making an application where the primary action is to search, you should never hide your search behind only an icon. Instead the whole search field should be present.
The other thing I am always grappling with is how to support advance search. the way I’ve done this is to actually put a carrot inside the search box anchored right and to have the search button outside of the search form area. It makes the field look like a potential dropdown and has a clear call-to-action.