[PR #7963] [CLOSED] feat: Add Native Splash Screen for Improved Startup UX #8244

Closed
opened 2026-03-23 23:23:17 +00:00 by mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/AppFlowy-IO/AppFlowy/pull/7963
Author: @djeddi-yacine
Created: 5/21/2025
Status: Closed

Base: mainHead: main


📝 Commits (4)

  • 088987b add the native_splash_screen plugin and update some others in the pubspec.yaml
  • 825be47 add splash window to linux
  • ed8ad18 add splash window to windows
  • 79384ce add splash window to macos

📊 Changes

30 files changed (+1094558 additions, -93 deletions)

View changed files

frontend/appflowy_flutter/assets/images/desktop_splash_image.png (+0 -0)
📝 frontend/appflowy_flutter/integration_test/shared/data.dart (+1 -1)
📝 frontend/appflowy_flutter/lib/shared/markdown_to_document.dart (+2 -2)
📝 frontend/appflowy_flutter/lib/startup/startup.dart (+2 -2)
📝 frontend/appflowy_flutter/lib/startup/tasks/windows.dart (+6 -0)
📝 frontend/appflowy_flutter/lib/util/share_log_files.dart (+1 -1)
📝 frontend/appflowy_flutter/linux/CMakeLists.txt (+3 -0)
📝 frontend/appflowy_flutter/linux/main.cc (+11 -2)
📝 frontend/appflowy_flutter/linux/my_application.cc (+1 -1)
frontend/appflowy_flutter/linux/runner/native_splash_screen.cmake (+48 -0)
frontend/appflowy_flutter/linux/runner/native_splash_screen_debug.cc (+91166 -0)
frontend/appflowy_flutter/linux/runner/native_splash_screen_profile.cc (+91166 -0)
frontend/appflowy_flutter/linux/runner/native_splash_screen_release.cc (+91166 -0)
📝 frontend/appflowy_flutter/macos/Podfile.lock (+6 -0)
📝 frontend/appflowy_flutter/macos/Runner.xcodeproj/project.pbxproj (+26 -8)
📝 frontend/appflowy_flutter/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (+1 -0)
📝 frontend/appflowy_flutter/macos/Runner/AppDelegate.swift (+18 -12)
frontend/appflowy_flutter/macos/Runner/NativeSplashScreen.swift (+83 -0)
frontend/appflowy_flutter/macos/Runner/NativeSplashScreen_Debug.swift (+182306 -0)
frontend/appflowy_flutter/macos/Runner/NativeSplashScreen_Profile.swift (+182306 -0)

...and 10 more files

📄 Description

PR Checklist

  • My code adheres to AppFlowy's Conventions
  • I've listed at least one issue that this PR fixes in the description above.
  • I've added a test(s) to validate changes in this PR, or this PR only contains semantic changes.
  • All existing tests are passing.

PR details

Hi AppFlowy Team,

This pull request introduces a native splash screen feature, as proposed in issue #7962 (https://github.com/AppFlowy-IO/AppFlowy/issues/7962), to enhance the application's startup experience. By providing an immediate visual response, the splash screen aims to reduce perceived jank and improve the overall user experience while the main Flutter application initializes.

Key Changes:

  • Integrated the native_splash_screen package.
  • Configured the splash screen via native_splash_screen.yaml and CLI-generated native code for Linux, Windows, and macOS.
  • Modified platform entry points (main.cc for Linux, main.cpp for Windows, and AppDelegate.swift for macOS) to display the splash screen as early as possible.
  • The splash screen is closed programmatically from Dart once Flutter has rendered its first frame (or after app initialization).

Platform Testing:

  • Linux: I have thoroughly tested the native splash screen functionality on Linux (Arch), and it is working as expected.
  • Windows & macOS: Due to the complexities of AppFlowy's build environment, which relies on pre-made scripts and custom Rust builders, I was unfortunately unable to set up and fully test the splash screen implementation on my Windows and macOS VMs.

Request for Reviewers:

I would greatly appreciate it if the team could specifically test the native splash screen functionality on Windows and macOS to ensure it behaves correctly on those platforms before merging. This includes verifying:
1. The splash screen appears immediately on app launch.
2. The configured image and appearance (if customized per platform) are correct.
3. The splash screen closes smoothly when the Flutter UI is ready.
4. There are no adverse effects on the existing startup process for these platforms.

Future Work (Post-Merge):

If this initial implementation is accepted, I plan to investigate further optimizations for the main Flutter window's initialization on macOS and Windows. The goal would be to refine how the main window appears after the native splash screen closes, ensuring the smoothest possible visual transition from the native splash to the Flutter UI (e.g., preventing any brief white flashes or abrupt window appearance).

Thank you for considering this contribution! I believe native splash screens will be a valuable addition to AppFlowy.

Closes #7962


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/AppFlowy-IO/AppFlowy/pull/7963 **Author:** [@djeddi-yacine](https://github.com/djeddi-yacine) **Created:** 5/21/2025 **Status:** ❌ Closed **Base:** `main` ← **Head:** `main` --- ### 📝 Commits (4) - [`088987b`](https://github.com/AppFlowy-IO/AppFlowy/commit/088987b4db5a17e96be13dc5687f09ff63648f88) add the native_splash_screen plugin and update some others in the pubspec.yaml - [`825be47`](https://github.com/AppFlowy-IO/AppFlowy/commit/825be476ecc0514fcc9ccdbbbbbec679e31230e8) add splash window to linux - [`ed8ad18`](https://github.com/AppFlowy-IO/AppFlowy/commit/ed8ad18011b387a1486c555954ec70594e7ccc34) add splash window to windows - [`79384ce`](https://github.com/AppFlowy-IO/AppFlowy/commit/79384ce4d0eb3bd5930f08c3a08a45c827eeae83) add splash window to macos ### 📊 Changes **30 files changed** (+1094558 additions, -93 deletions) <details> <summary>View changed files</summary> ➕ `frontend/appflowy_flutter/assets/images/desktop_splash_image.png` (+0 -0) 📝 `frontend/appflowy_flutter/integration_test/shared/data.dart` (+1 -1) 📝 `frontend/appflowy_flutter/lib/shared/markdown_to_document.dart` (+2 -2) 📝 `frontend/appflowy_flutter/lib/startup/startup.dart` (+2 -2) 📝 `frontend/appflowy_flutter/lib/startup/tasks/windows.dart` (+6 -0) 📝 `frontend/appflowy_flutter/lib/util/share_log_files.dart` (+1 -1) 📝 `frontend/appflowy_flutter/linux/CMakeLists.txt` (+3 -0) 📝 `frontend/appflowy_flutter/linux/main.cc` (+11 -2) 📝 `frontend/appflowy_flutter/linux/my_application.cc` (+1 -1) ➕ `frontend/appflowy_flutter/linux/runner/native_splash_screen.cmake` (+48 -0) ➕ `frontend/appflowy_flutter/linux/runner/native_splash_screen_debug.cc` (+91166 -0) ➕ `frontend/appflowy_flutter/linux/runner/native_splash_screen_profile.cc` (+91166 -0) ➕ `frontend/appflowy_flutter/linux/runner/native_splash_screen_release.cc` (+91166 -0) 📝 `frontend/appflowy_flutter/macos/Podfile.lock` (+6 -0) 📝 `frontend/appflowy_flutter/macos/Runner.xcodeproj/project.pbxproj` (+26 -8) 📝 `frontend/appflowy_flutter/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme` (+1 -0) 📝 `frontend/appflowy_flutter/macos/Runner/AppDelegate.swift` (+18 -12) ➕ `frontend/appflowy_flutter/macos/Runner/NativeSplashScreen.swift` (+83 -0) ➕ `frontend/appflowy_flutter/macos/Runner/NativeSplashScreen_Debug.swift` (+182306 -0) ➕ `frontend/appflowy_flutter/macos/Runner/NativeSplashScreen_Profile.swift` (+182306 -0) _...and 10 more files_ </details> ### 📄 Description #### PR Checklist - [ ] My code adheres to [AppFlowy's Conventions](https://docs.appflowy.io/docs/documentation/software-contributions/conventions) - [x] I've listed at least one issue that this PR fixes in the description above. - [ ] I've added a test(s) to validate changes in this PR, or this PR only contains semantic changes. - [ ] All existing tests are passing. #### PR details Hi AppFlowy Team, This pull request introduces a native splash screen feature, as proposed in issue #7962 (https://github.com/AppFlowy-IO/AppFlowy/issues/7962), to enhance the application's startup experience. By providing an immediate visual response, the splash screen aims to reduce perceived jank and improve the overall user experience while the main Flutter application initializes. **Key Changes:** * Integrated the `native_splash_screen` package. * Configured the splash screen via `native_splash_screen.yaml` and CLI-generated native code for Linux, Windows, and macOS. * Modified platform entry points (`main.cc` for Linux, `main.cpp` for Windows, and `AppDelegate.swift` for macOS) to display the splash screen as early as possible. * The splash screen is closed programmatically from Dart once Flutter has rendered its first frame (or after app initialization). **Platform Testing:** * **Linux:** I have thoroughly tested the native splash screen functionality on Linux (Arch), and it is working as expected. * **Windows & macOS:** Due to the complexities of AppFlowy's build environment, which relies on pre-made scripts and custom Rust builders, I was unfortunately unable to set up and fully test the splash screen implementation on my Windows and macOS VMs. **Request for Reviewers:** I would greatly appreciate it if the team could specifically **test the native splash screen functionality on Windows and macOS** to ensure it behaves correctly on those platforms before merging. This includes verifying: 1. The splash screen appears immediately on app launch. 2. The configured image and appearance (if customized per platform) are correct. 3. The splash screen closes smoothly when the Flutter UI is ready. 4. There are no adverse effects on the existing startup process for these platforms. **Future Work (Post-Merge):** If this initial implementation is accepted, I plan to investigate further optimizations for the main Flutter window's initialization on macOS and Windows. The goal would be to refine how the main window appears *after* the native splash screen closes, ensuring the smoothest possible visual transition from the native splash to the Flutter UI (e.g., preventing any brief white flashes or abrupt window appearance). Thank you for considering this contribution! I believe native splash screens will be a valuable addition to AppFlowy. Closes #7962 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror 2026-03-23 23:23:17 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AppFlowy-IO/AppFlowy#8244
No description provided.