"Offer not Available" due to Offer Displaying "Description" field as "Name" in private sessions

Summary

When testing entitlements in private code, (and in live games) the offer will use the “description” field as the “name” field even when directly setting the name field. This doesn’t happen in the live edit sessions, the name field is correctly displayed

Please select what you are reporting on:

Creative

What Type of Bug are you experiencing?

Verse

Steps to Reproduce

Create a random offer such as

my_entitlement := class<castable>(entitlement){}
corn_seed_pack := class<concrete>(my_entitlement):
    var Name<override> : message = DefaultMessage
    var Description<override> : message = DefaultMessage
    var ShortDescription<override> : message = DefaultMessage
    var Icon<override> : texture = T_MyAwesomeImage

DefaultMessage<localizes> : message = "Default message"
StrToMessage<localizes>(Text : string) : message = "{Text}"
my_offer<public> := class(entitlement_offer):
    var Name<override> : message = DefaultMessage
    var Description<override> : message = DefaultMessage
    var ShortDescription<override> : message = DefaultMessage
    var Icon<override> : texture = T_MyAwesomeImage

    EntitlementType<override> : concrete_subtype(entitlement) = corn_seed_pack
    Price<override> : price_dimension = MakePriceVBucks(5000.0)

offer_device := class(creative_device):
    @editable OfferName : string = "My Offer"
    @editable OfferDescription : string = "This is my offer description"
    @editable OfferShortDescription : string = "Short description"
    @editable Icon : texture = T_MyAwesomeImage
    @editable Price : price_dimension = MakePriceVBucks(5000.0)

    ShowOffer(Player : player) : void =
        spawn:
            BuyOffer(Player, my_offer{
                    Name := StrToMessage(OfferName)
                    Description := HyperStringToMessage(OfferDescription)
                    ShortDescription := HyperStringToMessage(OfferShortDescription)
                    Icon := Icon
                    EntitlementType := corn_seed_pack
                    Price := Price
                }
            )
            

Expected Result

Offer should correctly show the editable fields both in edit test, private test, and public version.

Observed Result

Name field for some reason takes the “Description” string. Thus, any long description will invalidate the offer since descriptions are typically > 50 characters long (Max name length)

Platform(s)

PC

This is the live edit version

And this is the private / public version

Hi @22Over7 ,

Looking at the documentation and the UEFN Feature Example for In-Island Transactions.

Creating Items and Offers in Fortnite | Fortnite Documentation | Epic Developer Community

The declaration is different

Description : message = “A pack of corn seeds. Opening a pack yields 10 corn seeds for planting.”

Then “Build Auto-Localization” in UEFN update the project messages.

The Verse code changed considerably from before January 2026 and old stored/printed copies of the documentation need to ben updated/reprinted.

The Verse code is very complicated and probably best to take the original working code from the example add modify/migrate into your projects using document

In-Island Transactions Device Template in Fortnite | Fortnite Documentation | Epic Developer Community

by using section In-Island Transactions - Defining Entitlements