It's kinda weird for this to default to non-`nil` if it might be replaced anyways. Maybe we can add another initializer that accepts a custom view?