Changes to model performance by changing random_state of XGBClassifier
These are my two cents. Take the answer with a grain of salt.
The XGB classifier is a boosting algorithm, which naturally depends on randomness (so is a Random Forest for example).
Hence, changing seed will inherently change the training of the model and its output.
Different seeds will also change the CV splits and alter further the results.
Further, boosting aims to reduce variance as it uses multiple models (bagging) and at the same time it reduces bias as it trains each subsequent model based on the previous models' errors (the boosting part).
However, boosting models can, in principle, overfit.
In fact, if your base learner is not weak it will easily overfits the data and there won't be any residuals or errors for the subsequent models to build upon.
Now, for your problem, you should first verify that you are not overfitting your model to the data.
Then you might want to fix a certain number of seeds (you still want to be able to reproduce the results so it's important to fix them) and average the results obtained across the seeds.
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.