Component-based SPAs