Android action widget "a custom component is preventing action data from loading"

This is a very easy question to answer for anyone who has any knowledge of Home Assistant widget functionality. Please help!

When I got HA Green, I added an action button widget on my android home screen to turn on my study LIFX light, and it worked well. When I added visual studio and worked on some customisations, I went back to modify the action button widget, but now I receive an error message on my android widget “A custom component is preventing action data from loading”. I uninstalled visual studio and I still get this error message.

I just want to have an action widget that turns on my study light, so I typed in “button.light.study” and variations of that, and it doesn’t work any more.

Here are the details in a button card configuration that work in HA Green.
show_name: true
show_icon: true
type: button
entity: light.study
icon: mdi:toggle-switch-variant

All I want to do is replicate this action in an action widget button on Android. Since action data no longer loads, I have no cues as to what I should type as an action, and I have not found any information online that helps.

Does anyone have any knowledge to help solve this simple question?

1 Like

Not a simple question in fact. I think it’s down to a HACS installed custom component. Did you always have this issue? Or did it start after adding something in HACs. It’s a nuisance disabling then re-activating custom components - but might be the way forward.

You can enter the ‘Action’ field manually. For example:

Action: script.what_you_like

Not as convenient but works.

Got the same problem today after updating to Core 2025.11.1. The only solution was rolling back to Core 2025.10.4. Not sure yet why it happened or how it relates to HACS components.

1 Like

Same issue for me since the core update to 2025.11.1

I am confused why you’re saying it’s very easy to answer.

Same problem here, although i can’t pinpoint it to the Core 2025.11 update

Tried some troubleshooting, without any luck. Disabled all custom components including HACS itself, but the issue remains. custom_components folder is completely empty but i still get the error message.
Interestingly enough this only happens for the Trigger widget. The “Entity state” widget enumerates just fine.


HA Core 2025.11.1 on HA OS 16.3
Companion 2025.8.7-full on Android 16 (Samsung OneUI 8)

EDIT: Companion Log

11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: Unable to load actions from Home Assistant
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: kotlinx.serialization.MissingFieldException: Field 'description' is required for type with serial name 'io.homeassistant.companion.android.common.data.integration.ActionData', but it was missing
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.PluginExceptionsKt.throwMissingFieldException(PluginExceptions.kt:20)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at io.homeassistant.companion.android.common.data.integration.ActionData.<init>(ActionData.kt:6)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at io.homeassistant.companion.android.common.data.integration.ActionData$$serializer.deserialize(ActionData.kt:6)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at io.homeassistant.companion.android.common.data.integration.ActionData$$serializer.deserialize(ActionData.kt:6)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:351)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableValue(Tagged.kt:207)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement$lambda$1(Tagged.kt:279)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.$r8$lambda$DBYIndnlKB76_oyt-Ap4f_T35nM(Unknown Source:0)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.tagBlock(Tagged.kt:294)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement(Tagged.kt:279)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.encoding.CompositeDecoder$-CC.decodeSerializableElement$default(Decoding.kt:539)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:111)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:84)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:351)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableValue(Tagged.kt:207)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement$lambda$1(Tagged.kt:279)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.$r8$lambda$DBYIndnlKB76_oyt-Ap4f_T35nM(Unknown Source:0)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.tagBlock(Tagged.kt:294)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.TaggedDecoder.decodeSerializableElement(Tagged.kt:279)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.encoding.CompositeDecoder$-CC.decodeSerializableElement$default(Decoding.kt:539)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:111)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.MapLikeSerializer.readElement(CollectionSerializers.kt:84)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:351)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.internal.NullableSerializer.deserialize(NullableSerializer.kt:30)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.json.internal.AbstractJsonTreeDecoder.decodeSerializableValue(TreeJsonDecoder.kt:351)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.json.internal.TreeJsonDecoderKt.readJson(TreeJsonDecoder.kt:25)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.serialization.json.Json.decodeFromJsonElement(Json.kt:170)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImpl.getServices(WebSocketRepositoryImpl.kt:488)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at io.homeassistant.companion.android.common.data.websocket.impl.WebSocketRepositoryImpl$getServices$1.invokeSuspend(Unknown Source:14)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:35)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:101)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at android.os.Handler.handleCallback(Handler.java:995)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at android.os.Handler.dispatchMessage(Handler.java:103)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at android.os.Looper.loopOnce(Looper.java:273)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at android.os.Looper.loop(Looper.java:363)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at android.app.ActivityThread.main(ActivityThread.java:10060)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at java.lang.reflect.Method.invoke(Native Method)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
11-09 13:20:16.594 11296 11296 E ButtonWidgetConfigureActivity$onCreate: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
11-09 13:20:16.609 11296 11296 D ButtonWidgetConfigureActivity: Actions found: {1={}}
1 Like

As of today I noticed the same thing when I try to add an android widget of action

Same problem. Definitely due to the update, as I haven’t changed anything else.

Looks like this will be fixed next update of the companion app

6 Likes

Same issue. I had a working widget that did not work anymore… After deleting it and trying to add it again I saw the well known…

Same issue here, posting a reply to get a notification when it gets fixed :smiley:

Updated to companion app just now to 2025.11.3-full and the issue went away