The TSA has repeatedly stated that an expired passport is considered valid ID as long as it expired less than one year ago.
Even if your passport was beyond this limit, it’s still possible to fly if the TSA officers are able to confirm your identity. Whilst a US Visa is not an valid identification document in it’s own right, in conjunction with your expired passport and potentially other ID you have it would almost certainly be sufficient for the TSA officers to suitably confirm your identity. See this answer for some further details (That question is almost a duplicate of this one, except that it doesn’t mention how long ago the expiry occurred which makes the situation/answer a little different)
According to both United and Delta airlines websites, it is required to have a valid unexpired document to travel within the US:
From Delta (within U.S page):
In the United States, you need a valid U.S. government-issued photo ID or a passport from your country of origin to travel through security. You must show that the name on your boarding pass matches the legal name on your unexpired government-issued ID.
and from United website (U.S. territory travel document requirements):
Travelers 18 years of age or older are required to have a valid, current U.S. federal or state-issued photo ID that contains name, date of birth, gender, expiration date and a tamper-resistant feature for travel to or from a U.S. Territory (Guam, Puerto Rico and U.S. Virgin Islands). Expired documents are not accepted. The following IDs are accepted:
- ……..
- A foreign government-issued passport
- ……..
Credit:stackoverflow.com‘