There comes a time in everyone's tennis progression where they stop improving. Simply going out to play matches or attending a weekly drill doesn't cut it anymore. This plateau in improvement can be met with acceptance or resistance. If you want to keep improving, you will need to be honest and critical with your game to see what areas need improvement. You will also have to accept getting worse before getting better as these tweaks in your game will not acquired without some varying degrees of failure. Regardless of how you approach this, there needs to be some rigor in your practices. Hitting tennis balls on autopilot won't do it as you need to be put in situations that will make you uncomfortable so that you can improve. I have a few suggestions below with drills I do when I practice. I hope they help you improve like they have with me!
Drill #1: Consistency Drill
You can have both players at the baseline, the net or one at the net and one at the baseline. The idea is to develop reproducible balls that ideally your opponent cannot attack. You begin this drill by simply feeding to your partner and rallying back and forth. For every ball that is hit over the net and in the court, you get a point. You want to get to 100 points. For every error/winner, you deduct points. I play this drill where you deduct 10 points for hitting the net and 5 points for hitting a winner or hitting it long/wide. You can scale down these numbers to make it hard but doable as well. The point is to be able to concentrate on hitting balls while counting, which is difficult to do. It will help with your shot tolerance so you're more comfortable hitting multiple balls back in a rally. It also puts pressure on you as every time you miss, there's a consequence. I like how your reaction to your last miss will impact your performance on the next rally, making it hard to stay negative after a mistake. Lastly, it will help you see how hard you feel comfortable hitting a ball and after you successfully reach 100 the first time, you can try to increase the pace and still maintain the consistency you desire.
Drill #2: Offense Vs. Defense Drill
Player A with the tennis balls will be at the baseline in one of the doubles ally. They feed a ball short where it lands in the middle of the court about where the service line is. Player B will try to hit the ball in the opposite corner (singles boundary) as where player A fed the ball. Player A will move immediately to that area where player B is hitting it so that they are most likely hitting a running forehand or backhand. Player B cannot come to the net on the first hit but rather they are trying to keep pressure on player A by continually hitting the ball into the open court and keeping player A moving and playing defense. Player A is trying to hit a looping deep ball on the first hit to neutralize the rally and not have to play defense the whole time. This type of pattern happens a lot, especially as you improve in tennis. Getting comfortable on the defensive and offensive side of the ball is important to be an effective tennis player.
Drill #3: Doubles Drill
Both players start at the baseline crosscourt of each other (doubles ally is in). Most of the tennis balls are at the net as one player will always be at the net after the first rally. Start by hitting a baseline point crosscourt. Whoever wins that point immediately comes to the net (either player feeds). The net player needs to win three in a row to win a point. If the player at the net fails to win all three, they immediately backup while the baseline player who just won a point comes to the net to try to win three in a row. This pattern continues until someone wins three points in a row at the net. This is great cardio but also gives you a lot of reps that are similar to doubles points where someone is most likely volleying the ball to the baseline player.
Drill #4: Free Throw Drill
This drill was given to me by a college coach that I had the opportunity to hit with. He makes his players focus on the first four hits (between the two players) of every point. He emphasizes this because most points in tennis do not last longer than four shots. To run the drill, have the server keep track of all the points he wins out of how many tries. So he gets to hit the first two balls (serve and the next shot) while the server hits two shots (the return and the next shot). If the server fails to hit both shots in he would be "O for 1." If the server gets both shots in and the returner fails to do that, the server would be "1 for 1." If all four shots are hit, the server judges if he/she was on offense, defense or a neutral rally. If the server thinks the returner's second shot was enough to put the server on the defense, he loses that point. If it's offense, the server wins that point. Neutral rallies are done over. Keep track of points like free throws. So if you have a service winner the first try, you are "1 for 1." If the returner hits the return so you cannot get the second shot back, you are now "1 for 2." Have the returner beat whatever score you had as you switch roles.
It takes a creative and focused mind to keep improving in tennis. Try to be critical of your game to give yourself the best opportunities to improve during practice. Just think, "how would I beat myself?" If you can answer that, then you will probably get some good feedback on what kind of drills to do in practice.
Here's the difference between your dominant and non-dominant arm when you serve.