4.1.1 :preface is evaluated first

The :preface section is evaluated before anything else, except :disabled and :ensure. It can be used to establish function and variable definitions that will:

  1. Make the byte-compiler happy: it will not complain about functions whose definitions are unknown.
  2. Define functions and variables that will be used in an :if test.

Note that whatever is specified within :preface is evaluated both at load time and at byte-compilation time, in order to ensure that definitions are seen by both the Lisp evaluator and the byte-compiler. Therefore, you should avoid having any side-effects in your :preface forms, and restrict them to symbol declarations and definitions.