Splitting the Widget Code

Mark
Posted: Dec 8th, 2025
By: Mark

I started working on my first widget this week, and ran into an weird problem. After creating a new Widget Extension target I tried to split up the AppWidget.swift file into multiple files, one each for the TimelineProvider, Widget, and View. When I did, I ran into this error:

SchemeBuildError: Failed to build the scheme “AppWidgetExtension”
    reference to invalid associated type 'Entry' of type 'Provider'

I came across a post in the developer forum about a similar issue, but it had no solution. Unfortunately, I was unable to really find any other reference to it. I decided to ask around in the various Discord and Slack servers I am in and was able to get an answer from Geoff Pado (AKA Cocoatype). He suggested that I change Entry in

func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> Void) {
    .....
}

to SimpleEntry like the placeholder and getTimeline functions have and that seemed to work.

func getTimeline(in context: Context, completion: @escaping (Timeline<SimpleEntry>) -> Void) {
    .....
}

This allowed me to split my files up so it was easier to edit them.

Tags:
widgetkit