@future run asynchronously in a separate transaction — fresh governor limits, no return value to the caller.Sync transaction
User saves a record — triggers, validation, DML — one synchronous limit bucket.
@future transaction
Starts later — new limits; cannot be called from another @future in the same chain in the classic pattern.
public class Job {
@future
public static void runLater(Set<Id> ids) {
// separate transaction — query & DML here
}
}Parameters must be primitive collections (e.g. Set<Id>) — verify current docs for allowed signatures.