I really feel for you. Millions of grandparents in this country are giving up their retirement years to raise their grandchildren. This is what often happens when children have babies. Your granddaughter's mother certainly sounds too immature to be a really committed mother. But what about your son? Are you putting any pressure on him to have his own place and to raise his daughter? Be careful not to make the mistake of doing so much that even your own son lets you take over his responsibilities.
Your 3-year-old granddaughter cannot fully understand this situation. You are wise not to criticize her mother. I suggest you explain to your granddaughter that her mom can't take care of her right now, and has asked you to be her mommy for awhile.
Women like your granddaughter's mother have a pattern of popping back into their children's lives and suddenly taking them without any thought of how this harms their children. I, therefore, recommend your son consult an attorney to establish sole custody to protect your granddaughter from this kind of experience.
It would be wonderful if Mom grows up and can someday responsibly take over. However, I have seen many mothers take their children back out of anger against the grandparents or because they suddenly feel they want to be a mother. This is very hard on a child and can cause emotional problems.
Our parenting advice is given as suggestions only. We recommend you also consult your healthcare provider, and urge you to contact them immediately if your question is urgent or about a medical condition.