Searching two different elements in a same list
There's no problem with the performance. Java 8 filtering actually doesn't scan the whole stream, so the processing will be done only until the first element meeting the predicate is hit. So you're fine this way. However, I would do a bit of refractoring here:

private List&lt;UserChannel.AppUser&gt; findLatestAppClients(
            List&lt;Conversion&gt; conversions) {
    Optional&lt;Conversion&gt; iosClient = findFirstWithName(IOS.clientName());

    Optional&lt;Conversion&gt; androidClient = findFirstWithName(ANDROID.clientName());

    List&lt;UserChannel.AppUser&gt; appUsers = new ArrayList&lt;&gt;();

    addIfPresent(appUsers, iosClient);

    addIfPresent(appUsers, androidClient);

    return appUsers;
}

private Optional&lt;Conversion&gt; findFirstWithName(String name){
    return conversions.stream().filter(c -&gt; name.equals(c.getClient())).findFirst();
}

private void addIfPresent(List&lt;UserChannel.AppUser&gt; appUsers, Optional&lt;Conversion&gt; conversion){
    if (conversion.isPresent()) {
        appUsers.add(new UserChannel.AppUser(conversion.get().getClient(), 
            conversion.get().getClientId()));
    }
}