Cut potatoes into quarters (leaving skin on for texture and nutrition) and place in a large pot of salted water. Bring to a boil and let cook for 13-15 minutes until fork-tender. While potatoes cook, hard-boil the eggs if not already done—place them in a separate pot of cold water, bring to a boil, remove from heat, cover, and let sit for 10 minutes before transferring to ice water. Once cooled, peel and dice into roughly 1/2-inch pieces. Dice the celery stalks and onion into small, uniform pieces so they distribute evenly throughout the salad. Chop the fresh dill and set aside.
In a large mixing bowl, combine mayonnaise, relish, mustard, cider vinegar, celery seeds, paprika, garlic powder, and a pinch of salt. Whisk together until smooth and well-blended. I like to let this mixture sit for a few minutes so the flavors can meld together—it makes a real difference in the final taste. The dressing is now ready to coat the warm potatoes, which will help absorb all these flavors.
When potatoes are tender, drain them well and transfer to a large bowl. While still warm, pour the dressing from Step 2 over the potatoes and gently fold together until every piece is coated. The warm potatoes will absorb the dressing better than cold ones. Add the diced eggs, celery, onion, and most of the fresh dill (reserving a small amount for garnish), folding gently to combine without breaking up the potatoes. Taste and adjust seasoning with salt if needed. I always fold rather than stir to keep the potatoes from becoming mushy—this keeps the texture pleasant and creamy without getting gluey.
Transfer the potato salad to a serving bowl or platter and smooth the top. Garnish with the reserved fresh dill and a light dusting of paprika for color and aroma. Refrigerate for at least 1-2 hours before serving to allow the flavors to develop and the salad to chill completely. This resting time also helps the texture set properly.