# What is the difference between flwr.server and flwr.serverapp?

**URL:** <https://discuss.flower.ai/t/what-is-the-difference-between-flwr-server-and-flwr-serverapp/1117>\
**Category:** Flower Help - Beginners\
**Tags:** flower\
**Created:** [October 23, 2025, 8:32pm UTC](https://discuss.flower.ai/t/what-is-the-difference-between-flwr-server-and-flwr-serverapp/1117 "2025-10-23T20:32:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mcarmo](https://avatars.discourse-cdn.com/v4/letter/m/7ab992/32.png) [@mcarmo](https://discuss.flower.ai/u/mcarmo)\
**Post date:** [October 23, 2025, 8:32pm UTC](https://discuss.flower.ai/t/what-is-the-difference-between-flwr-server-and-flwr-serverapp/1117/1 "2025-10-23T20:32:23Z")

</div>

Hello there! I am a student currently learning Flower for a research project, as I am planning on doing a Split Learning / SplitFed implementation using it. In this context, I am playing around with a few projects, learning the framework, and recently read through the section on the [Strategy abstraction](https://flower.ai/docs/framework/explanation-flower-strategy-abstraction.html).

I realized that, to implement SplitFed, I will probably need to override the start method in the Strategy class (as I need a custom round communication loop). I went to look into the source code to see how the default implementation works, and found there are two modules: [flwr.server](https://flower.ai/docs/framework/ref-api/flwr.server.html#module-flwr.server) and [flwr.serverapp](https://flower.ai/docs/framework/ref-api/flwr.serverapp.html#module-flwr.serverapp). Both seem to define the strategy base class, so what exactly is the difference between them? The documentation for the former seemed quite scant, but the [Vertical FL project](https://github.com/adap/flower/tree/main/examples/vertical-fl), which I was using as a study reference, seems to use it. Is serverapp a newer implementation?

---

<div class="post-metadata">

**Author:** ![javier](https://dub1.discourse-cdn.com/flex013/user_avatar/discuss.flower.ai/javier/32/116_2.png) [@javier](https://discuss.flower.ai/u/javier)\
**Post date:** [October 23, 2025, 9:10pm UTC](https://discuss.flower.ai/t/what-is-the-difference-between-flwr-server-and-flwr-serverapp/1117/2 "2025-10-23T21:10:21Z")

</div>

Hi @mcarmo, thanks for creating the post. And a very valid question!!

We introduced recently the set of strategies under `flwr.serverapp`. Those there, make use of the [`Message`](https://flower.ai/docs/framework/ref-api/flwr.app.Message.html#flwr.app.Message) abstraction which brings far more versatility than the older datastructures (`FitIns/Res`, `EvaluateIns/Res`, etc) that were originally introduced in the very early version of Flower. The new strategies enable writing more sophisticated `ClientApp` and `ServerApp` functionality because they operate on `Messages`.

With the latest release of Flower (1.22.0) we migrated all existing strategies to the new `Message`-based abstraction and we therefore recommend only using those under `flwr.serverapp`. We also attempted to migrate all documentation and most examples – the vertical FL one you point to remains to be migrated 😏

I would recommend you to take a look at other examples and use them as reference. For example [quickstart-pytorch](https://github.com/adap/flower/tree/main/examples/quickstart-pytorch). That being said, migrating the example to the new Message API is fairly simple, so if you are up to it, we’d very much welcome a PR 🚀

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/flex013/uploads/flower/original/1X/bc7fe36843c391cbd0b4e8b6f48275961d356abc.png) [@system](https://discuss.flower.ai/u/system)\
**Post date:** [November 1, 2025, 8:58pm UTC](https://discuss.flower.ai/t/what-is-the-difference-between-flwr-server-and-flwr-serverapp/1117/3 "2025-11-01T20:58:12Z")

</div>

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
