web applications – Working around Flutter’s Lack of SEO Support

I wanted to familiarize myself with Flutter, and began working on a webapp in Flutter Web and have completed a fair amount of work in the language at this point. It wasn’t until very recently that I found out that Flutter has little to no SEO support. The end goal of the experience is to launch the web app so that anyone searching for the functionality my website provides will show up on search engines, however after discovering the weak support for SEO, I realize that is a bit problematic. My question is, is there any way to work around this, and have my website show in search results on mainstream search engines?

From my research one (limited) way is to leverage meta tags on the index.html. While I will be doing this as well, I was hoping for other work arounds for my webapp.

One idea came to mind, however I don’t know if this is over-engineered, or just plainly wouldn’t work, but this is what I was thinking:

  • Purchase domain example.com
  • Build vast majority of webapp in Flutter Web
  • Build the home page in a different language (React, Vue, Vanilla HTML/CSS/JS, nothing set yet)
    • This way, we can leverage the home page for SEO, and while it’s not as effective as the entire app, at least we might be able to close the gap?
  • Deployment:
    • Have the home page deployed on example.com
    • Have the remainder of the application (portion written in Flutter) deployed to example.com/app/<some_path>
    • Any navigation from the home page written in the second language would navigate to the Flutter portion of the web app

I know this would lead to a deployment nightmare, though at this time I’m more concerned about public visibility of the web app over deployment concerns. Is this a viable solution? Will this work as I expect it to, or is would this be way off base? What about the equivalent of an iframe in Flutter? Could that work, where the iframe is expanded to the size of the screen? SEO isn’t something that I’ve worked with in the past, and am trying to understand this as I go. I understand that the most optimal solution in my case would probably be to rewrite the application in another language/framework, though that is not a viable option at this point unfortunately, and would like to see if there are any workarounds for the time being.