Yes, mak_kawa is right. When the skin loads the string meter driven by [MeasureIP] has a width and height of zero, because the webparser measure that drive it has no value.
Once the webparser finishes, you need to either update the associated meters with a FinishAction added to the webparser measure FinishAction=[!UpdateMeter *][!Redraw] or add DynamicWindowSize=1 to the [Rainmeter] section.
Either of these will update the skin and show your IP.
In my opinion, in such cases, eclectic-tech's solution using the DynamicWindowSize option is the best one. The size of the string which will be needed to be shown can vary, but if you set the dynamic window size, the skin will always exactly match the size of this string. Much better...
Update=50? Why? It's too low. Using the default Update=1000 is completely ok, doesn't worth to update the skin so frequently as with Update=50. Especially that if you set the Update to 50, the WebParser measure is updated every 50 milliseconds x 600 (the UpdateRate value) = 30 000 milliseconds = 30 seconds. So, twice a minute. Too frequent (last paragraph here)! In the above Update Guide description, the UpdateRate=600 was referring to the case when the Update was set to the default 1000, but if you use Update=50, the UpdateRate should be increased, or even better, the default Update should be used.
Don't quote the values of the options (I'm talking about the RegExp option of the [measureip] measure). This is not needed.
Even if the problem is fixed, take into account these comments.
for multiple skins that use it? Thus it may vary depending on skin complexity, How would you know exactly if your trying to keep CPU usage low?
Update Guide contains some good info. For the majority of skins you can leave the default update speed of 1000ms (once per second). The guide suggests way to optimize measures and meters in your skin using an UpdateDivider.
In addition to what eclectic-tech said, note that if there are more skins, each of them uses its own Update value, into its own [Rainmeter] section. Unfortunately this section can't be shared, as for instance the variables can (using the @Include options), so you have to add it one by one to each skin. And in each of them, you have to use a value which is best for the code of the skin.