title: WidgetKit Timeline doesn't update entries
body: <p>I'm working on a timer-based app, and trying to build a widget that displays several timers at once.</p>
  <p><em>It should look something like this</em></p>
  <p><a href="https://i.stack.imgur.com/K3sZu.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/K3sZu.png" alt="" /></a></p>
  <p>So, in order to accommodate multiple time items, my TimelineEntry contains an array of [SingleTimeItem]</p>
  <pre><code>struct MultipleTimeItemsEntry: TimelineEntry {
      
      let date: Date
      let timeItems: [SingleTimeItem]
      
      let configuration: MultipleConfigurationIntent
  }
  </code></pre>
  <p>Next is my method for constructing the timeline. It's a bit incomprehensible, for which I'm sorry and tried to negate that with comments.</p>
  <pre><code>    var timeItems = configure(results: results, configuration: configuration)
      
      var entries = [MultipleTimeItemsEntry]()
          
      
      // Append initial entry
      entries.append(MultipleTimeItemsEntry(date: date, timeItems: tempTimeItems, configuration: configuration))
      
      
      // Sort by the time they should finish to construct a proper timeline of entries
      timeItems.sort {
          $0.timeFinished &lt; $1.timeFinished
      }
      
      
      // Start mapping entries to their respective dates
      for i in 0...timeItems.count-1 {
          
          var tempTimeItems = timeItems
          
          // Mark all timers that should have finished before or simultaniously with timeItem[i] as finished
          for j in 0...i {
              if tempTimeItems[j].isRunning {
                  tempTimeItems[j].isFinished = true
              }
          }
          
          // Return the array to its initial sorting
          
          tempTimeItems.sort {
              $0.timeStarted &gt; $1.timeStarted
          }
          
          
          // Append entry for each timer finish (each entry containing finishes for all preceding timers)
          entries.append(MultipleTimeItemsEntry(date: timeItems[i].timeFinished, timeItems: tempTimeItems, configuration: configuration))
      }
  
      
      
      return entries
  </code></pre>
  <p>In addition to that, here's the entirety of my getTimeline method:</p>
  <pre><code>func getTimeline(for configuration: MultipleConfigurationIntent, in context: Context, completion: @escaping (Timeline&lt;Entry&gt;) -&gt; ()) {
      
      var entries: [MultipleTimeItemsEntry] = []
      
      let currentDate = Date()
      
      entries.append(contentsOf: fetchTimeItemWithConfig(date: currentDate, configuration: configuration))
      
      print(&quot;Debug output&quot;)
      print(Date())
      print(entries[0].date)
      print(entries[0].timeItems[0].isFinished)
      print(entries[1].date)
      print(entries[1].timeItems[0].isFinished)
      
      let timeline = Timeline(entries: entries, policy: .atEnd)
      completion(timeline)
  }
  </code></pre>
  <p>For simplicity, I've added only one timer to present this.</p>
  <p>When a timer is started, the Debug output is this:</p>
  <p><a href="https://i.stack.imgur.com/o1eCg.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/o1eCg.png" alt="enter image description here" /></a></p>
  <p>It consists of 2 entries: one when the timer is started, and the other when it should finish and the UI should update, and they are 30 seconds apart.</p>
  <p>Now to the punchline: for some reason, and I don't understand this AT ALL, the update doesn't happen.</p>
  <p>Any ideas fellas?</p>