Why Jaspr?
When to choose Jaspr over Flutter for web development

Why Jaspr + Arcane Jaspr?#

Jaspr and Flutter web use different rendering models. Choose between them based on the browser behavior your project needs.

The Core Difference#

Flutter web can render an app through a canvas-based surface. In that mode, browser tools do not receive the same element tree as a normal HTML page.

Jaspr renders semantic HTML. A button is a <button>, text can be a <p>, and a link is an <a>.

That distinction affects indexing, browser tools, accessibility, and page behavior.


SEO and Discoverability#

Search Engine Indexing#

AspectFlutter WebJaspr
Google CrawlingCannot read canvas contentFull HTML indexing
Page TitlesManual meta tagsAutomatic per-page
Meta DescriptionsComplex setupSimple frontmatter
Sitemap GenerationManualAutomatic
Structured DataVery difficultStandard implementation

Social Media Sharing#

AspectFlutter WebJaspr
Link PreviewsRequires pre-renderingWorks automatically
Open Graph TagsComplex workaroundsSimple meta tags
Twitter CardsComplex workaroundsSimple meta tags
WhatsApp/Telegram PreviewsOften brokenWorks correctly

Jaspr exposes page content as HTML for indexing and link previews.


Performance#

Initial Load#

MetricFlutter WebJaspr
Bundle Size2-5MB+100-500KB
Time to First Paint2-5 secondsUnder 1 second
Time to Interactive3-8 secondsUnder 2 seconds
Core Web VitalsOften failsTypically passes

Why This Matters#

  • Bounce Rate: Users leave slow sites. Every second of load time increases bounce rate by 7%.
  • SEO Ranking: Google uses Core Web Vitals as a ranking factor.
  • Mobile Users: Large bundles hurt users on slower connections.
  • Conversion Rate: Faster sites convert better.

Runtime Performance#

AspectFlutter WebJaspr
60fps AnimationsYes (Skia)Depends on CSS
Complex UI UpdatesExcellentGood
Memory UsageHigherLower
CPU UsageHigherLower

Flutter's canvas renderer is often a better fit for animation-heavy application interfaces. Jaspr keeps document-oriented sites in the browser's HTML model.


Developer Experience#

Debugging#

ToolFlutter WebJaspr
Browser DevToolsLimited (canvas inspection)Full DOM/CSS inspection
Element InspectionNot possibleNative support
CSS DebuggingNot applicableFull support
Network TabWorksWorks
Performance TabLimitedFull support

Common Web Features#

FeatureFlutter WebJaspr
Browser Find (Ctrl+F)Does not workWorks
Text SelectionCustom implementationNative
Right-click Context MenuCustom implementationNative
Browser Password ManagerOften brokenWorks
Browser TranslateDoes not workWorks
Screen ReadersRequires extra workSemantic HTML helps

Use Case Comparison#

Choose Jaspr when building#

Use CaseWhy Jaspr
Marketing websitesSEO is critical
Documentation sitesContent discoverability
BlogsSocial sharing, SEO
Landing pagesFast load times, conversions
E-commerce storefrontsProduct SEO, performance
Portfolio sitesShareability, speed
Company websitesProfessional presence
SaaS marketing pagesLead generation

Choose Flutter when building#

Use CaseWhy Flutter
Cross-platform appsiOS, Android, Desktop, Web
Complex data visualizationCanvas performance
GamesSkia rendering
Offline-first appsNative capabilities
Apps with heavy animations60fps guaranteed
Internal toolsNo SEO needed

Arcane Design System Comparison#

Both platforms use the Arcane design system, but implementations differ:

Shared features#

FeatureFlutter ArcaneJaspr Arcane
Theme Presets18+ colors18+ colors
Dark ModeBuilt-inBuilt-in
Component Library100+ widgets75+ components
Consistent DesignYesYes

Implementation differences#

AspectFlutter ArcaneJaspr Arcane
StylingWidget propertiesArcaneStyleData + CSS
ThemingThemeDataCSS variables
Custom StylesWidget parametersRaw CSS escape hatch
ResponsiveMediaQueryCSS media queries
AnimationsAnimation controllersCSS transitions

Migration Considerations#

From Flutter Web to Jaspr#

For a Flutter web app that needs HTML output:

  1. Check whether the interface depends on custom painting or canvas behavior.
  2. Map the existing widgets to their Arcane Jaspr equivalents.
  3. Replace Navigator routes with the project's Jaspr routing setup.
  4. Verify the built HTML and metadata with browser and indexing tools.

Keeping Both#

The two frameworks can share a product without sharing a renderer:

  • Use Flutter for native mobile and desktop applications.
  • Use Jaspr for HTML documentation and public web pages.

The Arcane packages keep related component names and theme concepts across both platforms.


Getting Started#

Create an Arcane Jaspr project:

# Install Oracular
dart pub global activate oracular

# Create a new project
oracular create app --template arcane_jaspr_app --name my_site

# Start developing
cd my_site
jaspr serve

See the Installation Guide for detailed setup instructions.