In this paper we study the Steiner tree problem over a dynamic set of terminals. We consider the model where we are given an n-vertex graph G = (V, E, w) with positive real edge weights, and our goal is to maintain a tree which is a good approximation of the minimum Steiner tree spanning a terminal set S ⊆ V , which changes over time. The changes applied to the terminal set are either terminal additions (incremental scenario), terminal removals (decremental scenario), or both (fully dynamic scenario). Our task here is twofold. We want to support updates in sublinear o(n) time, and keep the approximation factor of the algorithm as small as possible.We show that we can maintain a (6 + ε)-approximate Steiner tree of a general graph iñ O( √ n log D) time per terminal addition or removal. Here, D denotes the stretch of the metric induced by G. For planar graphs we achieve the same running time and the approximation ratio of (2 + ε). Moreover, we show faster algorithms for incremental and decremental scenarios. Finally, we show that if we allow higher approximation ratio, even more efficient algorithms are possible. In particular we show a polylogarithmic time (4 + ε)-approximate algorithm for planar graphs.One of the main building blocks of our algorithms are dynamic distance oracles for vertexlabeled graphs, which are of independent interest. We also improve and use the online algorithms for the Steiner tree problem.