Documentation is work in progress and not completeEditor
Performance & Optimization Guide

FlashFX, Best Practices

Alpha Release

01, Canvas & Composition

Working Resolution Strategy

Work at 1080p during the creation phase and scale up to 4K only at export time. The canvas renderer processes every pixel on every frame preview — a 4K canvas during editing quadruples the rendering load compared to 1080p with no perceptible benefit while animating.

  • Use 1920×1080 as your standard working canvas
  • Switch to 3840×2160 only in the final export dialog
  • For social content (Reels, Shorts, Stories), work at 1080×1920, do not start from a landscape canvas and crop later
Note: Canvas dimensions are non-destructive. Changing resolution at export does not affect or distort any element already placed on the canvas.

Layer Stack Discipline

Every independent element on the canvas is an active rendering object during playback preview. Keeping the layer stack lean directly reduces preview overhead.

  • Group related elements as soon as they are positioned. A group renders as a single composited unit rather than N individual layers.
  • Delete unused elements immediately, hidden or off-canvas layers still consume memory and are evaluated by the renderer on every frame.
  • Lock static elements once finalized. Locked layers skip interactive transform checks, reducing input latency on busy canvases.
  • Prefer fewer, richer layers over many simple ones. A single shape with a multi-layer material is cheaper than five overlapping shapes.

Z-Order and Overlap

  • Minimize unnecessary overlap between animated elements. The renderer must evaluate pixel compositing for every overlapping region on every frame.
  • Stack animated elements above static backgrounds, not interleaved with them. This lets the renderer batch static content more efficiently.
  • Use context menu Z-order controls (or keyboard shortcuts) early, reorganizing stacking order mid-animation can introduce unintended visual collisions.

02, Material System

Multi-Layer Fill Economics

Each fill layer added to a shape increases per-frame compositing cost. The material system is powerful, but layering without intent is the most common source of unnecessary load.

  • Audit fill stacks regularly. A gradient fill with a subtle texture overlay on top is often visually indistinguishable from a single well-configured gradient, remove the texture if it adds no meaningful visual value.
  • Use opacity on individual fill layers rather than stacking semi-transparent solid fills. One layer at reduced opacity is cheaper than two layers composited together.
  • Apply complex multi-layer materials only to hero elements. Background shapes and structural geometry should use simple solid or two-stop gradient fills.

Blend Mode Usage

Blend modes are compositing operations, each one requires reading the pixel values of all layers below before computing the output.

Blend Mode CategoryPerformance ImpactRecommended Use
Normal / OpacityMinimalAnywhere
Multiply / ScreenLowModerate use
Overlay / Soft LightMediumKey elements only
Hard Light / DifferenceHighSparingly
Stacked blends on animated layersVery HighAvoid where possible
  • Never stack multiple blend mode layers on a fast-moving animated element. The renderer must recompute compositing on every frame of motion.
  • If a blend mode effect is needed on an animated element, bake it into a static image and import the result, then animate the image instead.
  • For web-destined exports, blend modes that require framebuffer access add significant overhead, test blend-heavy compositions in Chrome before finalizing.

Gradient Performance

  • Linear and radial gradients with 2–4 color stops are effectively free in terms of render cost.
  • Gradients with 8+ color stops on animated shapes begin to add measurable overhead, simplify where the visual difference is negligible.
  • Animating gradient stop positions or colors over time is more expensive than animating shape position or scale. Reserve animated gradients for prominent, isolated elements.

Pattern Fills

  • Patterns with high density (very small tile size, many repetitions across a large shape) increase per-frame computation.
  • On large background elements, reduce pattern density or use a rasterized version of the pattern imported as an image with a static texture fill.
  • Avoid animating pattern scale parameters directly, instead, animate the element's scale and keep the pattern tile configuration static.

03, Text System

Formatting Architecture

The rich character-level formatting system in FlashFX is expressive but requires disciplined use to avoid unnecessary complexity in the element tree.

  • Minimize the number of mixed-format segments within a single text block. Each formatting boundary creates an internal layout boundary that the renderer must evaluate.
  • If a heading requires gradient text, a stroke, and a drop shadow simultaneously, verify each effect is perceptible at final export size before committing. Effects invisible at render size still have a processing cost.
  • For text that does not animate, prefer simple formatting, the per-frame cost of complex rich text drops to near-zero once the element is static, but the initial layout computation still contributes to load time.

Text Animation Modes, Choosing Correctly

FlashFX supports four animation granularities: Block, Character, Word, and Line. Each mode has a different cost profile and appropriate use case.

ModeRenderer CostBest For
BlockVery LowSimple fade-ins, scale reveals, position moves
LineLowMulti-line staggered reveals, subtitle-style entries
WordMediumConversational reveals, typographic emphasis
CharacterHighHero titles, expressive lettering, short strings only
  • Never apply Character mode to long paragraphs. Character mode creates individual animation tracks per glyph, a 200-character paragraph generates 200 active keyframe tracks.
  • For long copy that needs a reveal, use Line mode with a short stagger delay. The visual effect is comparable and the track count is proportional to line count, not character count.
  • When using Word or Character mode, set a stagger delay rather than manually keyframing each unit. The automated stagger is computationally identical but saves significant authoring time and keeps the timeline readable.

Stagger Timing Best Practices

  • Keep stagger delays proportional to animation duration. A 0.05s stagger on a 0.3s animation reads as a clean cascade; a 0.2s stagger on the same animation feels disjointed.
  • For character animations, a stagger of 30–60ms per character is the standard readable range for titles. Below 20ms the effect becomes imperceptible; above 100ms it reads as sequential, not cascading.
  • Apply Ease Out easing to staggered character entrances and Ease In to exits. This matches natural motion perception and requires no additional keyframes, just set the easing on the first keyframe in the sequence.

Drop Shadow and Stroke on Animated Text

  • Drop shadows on animating text (especially in Character mode) require per-frame shadow recalculation for each glyph.
  • If the text is animating, consider removing the shadow during motion by keyframing shadow opacity to 0 at the start of the animation and fading it in once the text settles.
  • Text strokes applied to thin fonts at small sizes often disappear in export, use stroke values above 1.5px for any text below 24pt, and preview at export resolution before finalizing.

04, Image Assets & Filters

Pre-Import Optimization

Images imported into FlashFX are loaded into browser memory at their original dimensions, regardless of how they are displayed on canvas. An 8192×7022 image displayed in a 200×200 slot still occupies the full memory footprint of the original.

  • Resize images before import to match their intended canvas usage size. A 1:1 pixel ratio between the source image and its canvas dimensions is the optimal target.
  • For images used as full-canvas backgrounds at 1080p, the source should be no larger than 1920×1080 (or 2× for retina: 3840×2160).
  • For small decorative elements, 512×512 is typically the highest resolution that produces a visible quality difference.
  • Convert images to WebP format before import wherever possible. WebP at equivalent quality is 25–35% smaller than PNG and 25–50% smaller than JPEG.

Filter Stack Management

FlashFX's 60+ filters compose non-destructively, but compositing cost grows with each additional filter applied to an animated element.

  • Apply filters in order of visual impact. If a blur effect makes a color adjustment invisible underneath it, remove the color adjustment, invisible filters still process.
  • Gaussian blur is the most expensive per-frame filter, especially at high radius values. On animated elements, keep Gaussian blur radius below 20px unless the element is otherwise static.
  • Motion blur should be reserved for elements with fast directional movement. Applied to slow or static elements it adds cost with no perceptible benefit.
  • Stack at most 2–3 filters on any single animated element. Beyond three, profile the playback frame rate before adding more.
Warning: Stacking distortion effects (warp + ripple + displacement) on an animated image layer is one of the highest-cost operations in FlashFX. Test on the target export resolution before committing to this combination.

Animated Filters

Animating filter parameters (e.g., blur radius over time, hue rotation on a moving element) multiplies per-frame compute cost.

  • Animate one filter parameter at a time per element where possible.
  • Use short eased transitions for filter animations rather than long linear curves. A blur that goes from 0 to 20px in 10 frames with Ease In/Out reads identically to a 30-frame linear blur but saves 20 frames of heavy computation.
  • If multiple elements need the same animated filter effect, group them and apply the filter to the group rather than individually to each member.

Blend Modes on Images

  • Image layers using Multiply or Screen blend modes on complex backgrounds are expensive.
  • Where a blend mode is primarily used for color interaction and not compositing transparency, test whether a color adjustment filter on the image achieves a similar result at lower cost.

05, Animation Engine

Keyframe Hygiene

The timeline accumulates keyframes across the full project lifecycle. Redundant or accidental keyframes are one of the most common sources of unexpected animation behavior and timeline complexity.

  • Delete redundant keyframes, if two adjacent keyframes on the same property have identical values, the interpolation between them produces no motion. Remove one.
  • After repositioning an element, check that no unintended position keyframes were created at the current playhead. The automatic keyframe system captures all property changes while in Animate mode, accidental nudges create orphaned keyframes.
  • Use Ctrl+A on the timeline (select all keyframes for an element) periodically to review the full animation state of any element. Keyframes on unexpected properties signal accidental edits.
  • When deleting a segment of animation, select all keyframes in the range across all property tracks simultaneously before deleting, removing only some tracks while leaving others creates broken, one-sided interpolation.

Easing Selection

Easing is one of the highest-leverage decisions in motion design. The right easing choice communicates intent; the wrong one makes professional motion feel amateur.

EasingWhen to Use
Ease OutEntering elements, things arriving from off screen
Ease InExiting elements, things leaving the composition
Ease In-OutInternal moves, elements repositioning within the canvas
LinearMechanical or rhythmic motion only, conveyor belts, clocks
BouncePlayful interfaces, icons, notifications, game UI
ElasticExpressive typographic motion, use sparingly
Custom BezierBranded motion, define and reuse the same curve throughout a project
  • Never use Linear easing for organic motion. Linear easing communicates computation, not physics. Even a subtle Ease In-Out on a simple position move reads as intentional.
  • When applying a custom Bezier curve, define it once, note the control point values, and apply the same curve to all similar motions in the project. Consistent easing is the primary characteristic of professional motion design.
  • The easing visualization graph in the curve editor shows the velocity profile over time, not the position. A steep slope indicates fast movement; a flat slope indicates deceleration. Read the graph in terms of speed, not position.

Multi-Property Animation Efficiency

Animating multiple properties simultaneously on a single element is computationally straightforward, the renderer calculates all properties in a single pass per element per frame. The cost concern is timeline readability, not render performance.

  • Keep animated property tracks organized by type: transform properties (position, scale, rotation) together, then visual properties (opacity, color, blur) below.
  • Avoid animating position and scale simultaneously unless the motion explicitly requires both. A scale animation often makes a simultaneous position move imperceptible, simplify to one axis of motion where possible.
  • For complex multi-property animations, animate one property to completion, then review before adding the next. Building all properties simultaneously makes it difficult to isolate which property is responsible for an unintended visual result.

Playback Preview Optimization

  • If playback preview stutters, reduce canvas resolution (not export resolution) to 720p for the editing session, then restore before export.
  • Close any unused browser tabs before intensive preview playback. FlashFX's renderer competes with other tabs for GPU and memory resources.
  • Scrub manually through complex animations rather than relying on live playback during authoring. Frame-accurate scrubbing via the arrow keys is always smooth regardless of composition complexity.

06, Sequence Compositor

When to Use Sequences

The Sequence Compositor is not a default tool for all projects, it is appropriate for specific production structures.

Use sequences when:

  • Total animation length exceeds 30 seconds
  • The project has distinct scenes with different element sets
  • Different sections are being authored by different team members
  • A section needs to be re-ordered or re-timed independently of others

Do not use sequences for:

  • Single continuous animations under 30 seconds
  • Projects where all elements persist across the full duration
  • Simple looping graphics intended for single-use playback

Sequence Structure Best Practices

  • Name every sequence descriptively and immediately, Sequence 01, Sequence 02 becomes unmanageable above four sequences. Use names like Intro_Logo, Main_Title, CTA_Outro.
  • Keep each sequence's internal timeline as short as the content requires. Padding sequences with empty frames at the end adds to total project parse time.
  • When transitioning between sequences, use the sequence-level timing controls to create a deliberate cut or overlap rather than cross-fading within a single long timeline, cross-fades built in the compositor are cleaner and easier to modify than keyframed opacity fades at sequence boundaries.

Independent Timeline Advantages

  • Assets that appear in only one sequence should be placed in that sequence, not the shared layer stack. This keeps each sequence's memory footprint isolated.
  • Test each sequence individually before assembling the full compositor. A performance issue in a single sequence is far easier to diagnose in isolation than within a full composition.

07, Export & Rendering

Format Selection Guide

Choosing the wrong export format is a common source of unnecessary file size or quality loss.

GoalFormatSettings
Web playback, social uploadMP4 (H.264)30fps, High quality
Browser embedding, open webWebM (VP9)30fps, High quality
Post-production handoffPNG Sequence24 or 30fps, lossless
Social quick share, messagingGIF15fps, reduce palette to 64–128 colors
Static thumbnail or previewSingle PNGTransparent background on
Project archival or sharing.flashfxAlways include embedded assets
Note: GIF export generates significantly larger files than MP4 at equivalent visual quality. Use GIF only where video is not supported by the target platform.

Quality Tier Selection

The four export quality tiers (Low, Medium, High, Maximum) control bitrate and compression aggressiveness.

  • Low: Suitable only for draft review or internal reference. Not acceptable for publication.
  • Medium: Acceptable for social media content where platform re-compression will occur anyway (Instagram, TikTok compress on upload).
  • High: The correct default for most publication use cases.
  • Maximum: Use for compositing handoff (alongside PNG Sequence) or archival masters only. File sizes are substantially larger with diminishing visual returns for web use.

Frame Rate Selection

  • 24fps: Use for film-style content, branded video, and any motion that should feel cinematic.
  • 30fps: Use for broadcast-standard content, corporate presentations, and most social media.
  • 60fps: Use only for UI animations, product demos, or content where smoothness is the explicit design intent. 60fps doubles export file size versus 30fps.
Warning: Exporting at 60fps and uploading to a platform that caps at 30fps wastes storage and upload time. Verify target platform frame rate limits before exporting.

Batch Export Efficiency

  • Queue all required formats in a single batch export session rather than exporting one format, waiting, then exporting again. The renderer only parses the project once per batch.
  • For PNG Sequence exports of long animations, ensure sufficient browser storage quota is available before starting, the export will fail silently if quota is exhausted mid-render.
  • On complex compositions, export a single-frame PNG first to verify color accuracy and layer visibility before committing to a full video export.

Deterministic Rendering

FlashFX's renderer is deterministic, the same project always produces the same output.

  • This means do not modify the project between batch exports. Any change, even a single pixel nudge, invalidates consistency between files in a batch.
  • If a client requests a revision after export, re-export all formats in the batch, not just the format they reviewed. Other formats may have been delivered downstream.

08, Project Management

Cloud Sync Best Practices

  • Log into an authenticated account before beginning any project intended for retention. Guest mode saves to browser local storage, clearing browser data or switching devices loses the project entirely.
  • The automatic cloud sync operates at regular intervals, not on every action. Before closing the browser, wait for the sync indicator to confirm the latest state was saved.
  • Projects saved in authenticated mode are protected with owner-based access control, they are not accessible from shared or public sessions. Do not rely on URL sharing for collaboration in the current release; collaboration is a planned roadmap feature.

File Hygiene

  • Export a .flashfx file at major project milestones as an offline backup, regardless of cloud sync status. Cloud sync is not a substitute for versioned file backups.
  • The .flashfx format is a compressed package containing all project state and embedded assets. It is the only format that can be re-imported into FlashFX for continued editing, do not delete source .flashfx files after exporting video.
  • When archiving a project, embed all assets into the .flashfx file before exporting. Linked external assets not included in the package will fail to load when the file is re-imported on a different device.

Version History

  • The version history changelog tracks meaningful project milestones, not every individual action. Use it to navigate back to earlier design directions, not as a frame-by-frame undo mechanism.
  • For granular undo, use Ctrl+Z (unlimited within the session). Version history is for reviewing the broader evolution of a project.
  • Annotate version history entries with context notes when switching major design directions. A note like "client preferred v2 color direction" prevents confusion when reviewing history weeks later.

Undo/Redo Discipline

  • The undo history is maintained for the full duration of a session but does not persist across sessions. Once the browser tab is closed, the undo stack is lost.
  • Ctrl+D (Duplicate) before destructive edits to a complex element. If the edit produces an undesirable result, the duplicate serves as a fallback while the original is still accessible in the layer stack.
  • Grouping before a transform operation (Ctrl+G, then transform, then Ctrl+Shift+G to ungroup) produces a cleaner undo chain than transforming ungrouped elements individually.

09, AI-Powered Features

AI Chat Assistant

The context-aware Chat Assistant is most effective when the interaction is specific and grounded in the current project state.

  • Ask for feature guidance with intent: "How do I create a staggered character reveal for this title?" produces a more useful response than "How do text animations work?"
  • Use the assistant to validate compositional decisions: describe the effect you are trying to achieve and ask whether the current approach is the most efficient implementation.
  • The assistant understands the current project state, if a specific element is selected, reference it directly rather than describing it abstractly.
  • Do not use the assistant as a substitute for understanding the toolset. Use it to accelerate learning, then internalize the workflow so it becomes a keyboard-shortcut operation rather than a conversational one.

DALL-E Image Generation

  • Generated images are placed at canvas center at their generated resolution, reposition and resize immediately before continuing work.
  • Generated images are treated identically to imported images: they respond to all 60+ filters, support blend modes, and are fully keyframe-animatable. Apply compression and resize the same way as any imported image before using in an animated composition.
  • For consistent results, write descriptive, style-specific prompts. Include lighting direction, color palette, and style references in the prompt, the model responds to specificity.
  • If a generated image is close but not quite right, do not regenerate from scratch. Import the generated image, apply color adjustment filters in FlashFX to correct tone or saturation, and use distortion filters to adjust geometry. Regenerating is slower and produces a different result each time.
Tip: Describe the intended canvas context in the prompt. A prompt that includes "flat vector graphic, dark background, orange accent, motion graphics style" produces results that integrate more naturally into FlashFX compositions than a generic prompt.

AI Design Presets

  • Presets generate a starting configuration, treat them as scaffolding, not finished compositions.
  • After applying a preset, audit the layer stack and material assignments before beginning animation. AI-suggested configurations may include fill layers or blend modes that are appropriate for the preset's reference style but unnecessary for the target use case.
  • Use presets to explore unfamiliar style directions quickly, then strip the result back to the elements that are genuinely useful. Learning what to remove from an AI preset is as valuable as learning what to keep.

Google Image Search Integration

  • Images imported via search arrive at their source resolution, apply the same pre-use optimization workflow as any imported image.
  • Search results are intended as reference or placeholder content. Verify licensing status before using search-sourced images in published work.
  • Imported search images are embedded in the .flashfx project file like any other asset. Large reference images significantly increase .flashfx file size, resize or replace placeholders before archiving.

10, Browser & Runtime Environment

Browser Selection

BrowserRecommendationNotes
Chrome 90+PreferredBest WebGL performance, full export feature support
Edge 90+Fully supportedChromium-based, equivalent performance to Chrome
Firefox 88+Fully supportedExcellent for general use
Safari 14+SupportedSome advanced video export features work best in Chrome
  • Always use the most current browser version available. FlashFX relies on modern WebGL and JavaScript APIs that receive performance improvements in every browser release.
  • For export-critical sessions, use Chrome. Safari's video encoding implementation produces slightly different output for some codec configurations.

Memory Management

FlashFX runs entirely in the browser and shares memory with the browser process and other tabs.

  • Close unused browser tabs before opening large FlashFX projects. Each tab consumes GPU and system memory that the FlashFX renderer requires for smooth playback.
  • For projects with many imported images, monitor browser memory usage via the browser's task manager (Shift+Esc in Chrome). If memory exceeds 70–80% of available RAM, performance will degrade.
  • If the browser tab becomes sluggish during a long editing session, save to cloud, close the tab, and reopen the project. The browser allocates memory incrementally during a session; a fresh tab starts with a clean heap.
  • Guest mode stores projects in browser local storage, which has a quota limit. Projects with many embedded images may approach this limit, switch to authenticated mode for asset-heavy projects.

CPU and GPU Considerations

  • FlashFX's renderer offloads compositing to the GPU where supported. Ensure hardware acceleration is enabled in the browser settings for best performance.
  • On machines with integrated graphics, complex blend mode stacks and animated filter compositions will perform significantly worse than on dedicated GPU systems. Simplify compositions accordingly.
  • CPU performance primarily affects export speed, not playback preview. A faster CPU reduces export render time but has a limited impact on real-time preview frame rate, which is GPU-bound.

Performance Red Flags

The following symptoms indicate a composition that needs optimization before export:

SymptomLikely CauseAction
Preview playback drops below 15fpsToo many animated layers or stacked blend modesGroup layers, remove redundant blend modes
Export takes more than 5× realtimeStacked animated filters at high resolutionReduce filter complexity or export at lower quality tier
Browser tab crashes on exportInsufficient memory for PNG sequence exportReduce canvas resolution or export in shorter sequences
Text rendering flickers during previewCharacter mode animation on long stringsSwitch to Word or Line mode
Canvas interaction latency above 100msExcessive independent layersConsolidate with grouping

FlashFX, Official Product Documentation · Alpha Release

Made with passion by Gabriele Bolognese

© Gabriele Bolognese, FlashFX