Changes to model performance by changing random_state of XGBClassifier
I tend to think if the model is sensitive to the random seed, it isn't a very good model. With XGB can try and add more estimators - that can help make it more stable.
For any model with a random seed, for each candidate set of parameter options (usually already filtered to a shortlist of candidate), I tend to run a bunch of repeats on the same data for different random seeds and measure the difference in the output. I expect the evaluation metric standard deviation to be small (relative to mean), and the overlap of the predictions in each class to be very high. If either of these is not the case I don't accept the model. If it is the case, I simply pick one of the candidate models at random - it should not matter what the random seed is! 
I still record the random seed used - this is still needed to recreate results!
I trained a XGBClassifier for my classification problem and did Hyper-parameter tuning over huge grid(probably tuned every possible parameter) using optuna. While testing, change of random_state changes model performance metrics (roc_auc/recall/precision), feature_importance and even model predictions (predict_prob).   

What does this tell me about my data?

Since I have to take this model in production, how should I tackle this for model to be more robust?

Stay with one random_state (say default 0) which we use during cross_validation and use it on out-of-sample as well.
During cross_validation, on top of each param_combination, run few random_state(say 10) and take avg model performance.