Prep your tools. Line two baking sheets with parchment paper and set aside. This prevents sticking and keeps the bottoms soft.
Mix the dry ingredients. In a medium bowl, whisk together 2 cups all-purpose flour, 2 teaspoons baking powder, and 1/2 teaspoon salt.
Set aside.
Whisk the wet ingredients. In a large bowl, whisk 1 cup granulated sugar with 1/2 cup vegetable oil until combined. Add 2 large eggs, 1 to 1 1/2 teaspoons ube extract (adjust for color and flavor), and 1 teaspoon vanilla extract. Whisk until smooth and evenly purple.
Optional ube halaya addition. If using ube halaya, whisk in 1/3 to 1/2 cup at this stage.
It adds moisture and deeper flavor. If you add halaya, plan to chill a bit longer to firm up the dough.
Combine wet and dry. Add the dry mixture to the wet in two batches. Stir gently with a spatula until no dry streaks remain.
The dough should be thick and sticky.
Chill the dough. Cover the bowl and chill for at least 2 hours, or up to overnight. Cold dough is key for thick, crackly cookies that don’t spread too much.
Preheat the oven. Set it to 350°F (175°C) about 15 minutes before you start rolling.
Prepare the coating. Add 1/2 cup powdered sugar to a shallow bowl. For extra contrast, you can also have a small bowl of granulated sugar to roll first, then into powdered sugar. This helps the powdered sugar stick and stay bright.
Shape the dough. Scoop 1 to 1 1/2 tablespoon portions (a small cookie scoop works great).
Roll each into a smooth ball with your hands.
Coat generously. Roll each ball in granulated sugar (optional), then in powdered sugar until thickly coated. Don’t skimp on the powdered sugar—a heavy coat makes better crinkles.
Bake. Arrange the coated balls 2 inches apart on prepared sheets. Bake for 10–12 minutes, until the tops are cracked and the edges are set but centers still look soft. They’ll continue to set as they cool.
Cool. Let the cookies rest on the baking sheet for 5 minutes, then transfer to a wire rack to cool completely.