When I run my Today Extension on the simulator everything works fine and it displays the following as expected:
Since you didn't share any piece of code, I cannot help you with a specific answer. Please try to debug your widget by using following steps Debug->Attach to Process->(select your widget from the menu) and debug your viewdidload viewwillappear and - (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler methods. Hope it helps.
Few points to remember while using app extensions
Bundle Identifier for the target extension should be com.companyName.AppName.ExtensionName
You need to have separate AppID for the target extension, with identifier specified as com.companyName.AppName.ExtensionName and create provisioning profile with this AppID.
Also, the appGroupID created should be embedded in both the AppIDs(for application as well as extension).
In my case I set preferred content size and it is starting working on device
self.preferredContentSize = CGSizeMake(UIScreen.mainScreen().nativeBounds.width, 100.0)
I found out that I was accessing my app group with the wrong suitename. Just make sure you access the app group with "group.something.something" not just "something.something"
I found the solution for my case. I just had to specify arm64 as valid architecture for the widget target.
On the Widget Target
Build Settings > Valid Architectures
I was having just armv7 and armv7s. I added arm64 and it worked like charm in my 5s device
Please make sure your extension target version is correct. Xcode'd give you the highest version by default such as 8.3, and if your iOS version is lower than it, Xcode'd give your a crash.