WidgetKit Code Review
Quick Reference
Issue Type Reference
TimelineProvider, entries, reload policies references/timeline.md
Widget families, containerBackground, deep linking references/views.md
AppIntentConfiguration, EntityQuery, @Parameter references/intents.md
Refresh budget, memory limits, caching references/performance.md
Review Checklist
-
placeholder(in:) returns immediately without async work
-
Timeline entries spaced at least 5 minutes apart
-
getSnapshot checks context.isPreview for gallery previews
-
containerBackground(for:) used for iOS 17+ compatibility
-
widgetURL used for systemSmall (not Link)
-
No Button views (use Link or widgetURL)
-
No AsyncImage or UIViewRepresentable in widget views
-
Images downsampled to widget display size (~30MB limit)
-
App Groups configured for data sharing between app and widget
-
EntityQuery implements defaultResult() for non-optional parameters
-
New intent parameters handle nil for existing widgets after updates
-
reloadTimelines called strategically (not on every data change)
When to Load References
-
TimelineProvider implementation or refresh issues -> timeline.md
-
Widget sizes, Lock Screen, containerBackground -> views.md
-
Configurable widgets, AppIntent migration -> intents.md
-
Memory issues, caching, budget management -> performance.md
Review Questions
-
Does the widget provide fallback entries for when system delays refresh?
-
Are Lock Screen families (accessoryCircular/Rectangular/Inline) handled appropriately?
-
Would migrating from IntentConfiguration break existing user widgets?
-
Is timeline populated with future entries or does it rely on frequent refreshes?
-
Is data cached via App Groups for widget access?