Could you introduce your app in a few sentences?
Spritelove is something I had in the back of my head for quite a while before I decided it was something worth working on like 8 or 9 months ago. The initial idea was to be able to share animated GIFs to Slack as custom emojis. That idea, dumb as it was, matured over time to what it is today - a full featured pixel studio, focused on tooling and animation.
My ambition with Spritelove is to make the creation of pixel art enjoyable on mobile, for free and without any ads. To make a great user experience and to have full control over the UI.
The only real requirement that I can think of is that you need to sign in (Google) in order to save or share your work. This is for two reasons, the first one is to build a user base and the second one is for performance. When saving your animation I run a Firebase cloud function behind the scenes that takes care of generating the gif in order to spare the client unnecessary computations.
For now I only support iOS although it’s universal within the iOS domain supporting screen sizes from iPhone 5 and all the way to iPad Pro.
I work full time as a frontend developer for a company in Sweden called tretton37 so all my personal projects are worked on between work and family time. You know, the time where you really really should go to bed but you just gotta stay up and commit ONE LAST FEATURE.
Who is the app for?
Well, I’d love to say that it is for everyone but in all honesty you probably need to have some kind of interest in animation or pixel art to get a kick out of it.
What made you decide to use/switch to React Native?
I choose to work with React Native because I really enjoy working with React! And the jump from one to the other is minimal. React Native is a lot less forgiving than a browser when it comes to performance so there’s also some obscure sense of pride when you nail the optimal way of writing something and achieve snappiness!
How did you transition to React Native?
Have your tried other cross platform technologies before using React Native?
Yes I’ve tried both Flutter and Fuse tools when they were both new, can’t say I disliked any of them. Somehow I just ended up doing apps with React Native. Probably since I really enjoy JSX I guess.
What has your experience been working with React Native in terms of app performance, have you noticed any impacts?
Something I’ve worked a lot on for Spritelove was the drawing experience. Drawing on the canvas needs to feel snappy and whatever happens when the user lifts their finger needs to happen without blocking the next interaction.
So with Spritelove, I created a system where I add to a local set of pixels that I perform delete, push / replace operations on while dragging. Then, when a user lifts their finger, I optimize the pixels by running an algorithm that reduces said pixels into bigger shapes where possible. Finally I dispatch a thunk action that sets stuff into motion, effectively replacing that current frame in the Redux store and generating the sprite.
What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?
Nothing specific for React Native that I can think of, but I do recommend following JS people on twitter and youtube and see what they’re up to.
What are some things that you don’t like about React Native or that need to be improved?
I feel that RN is great for a lot of reasons! But I think it’s important to ask yourself the two questions: Am I really gonna target both iOS and Android? And: is my app going to be visually simple or full with custom UI and animations? If you answer yes on both then it’s a no brainer, if not I encourage you to do your homework before diving in.
Anything else you would like to mention?
Yes, I would like to give a shout out to Emil Pålsson for all the support and contributions he’s made to this project.
People can get in touch with me at firstname.lastname@example.org . Also - check out www.spritelove.com to see all the publicly stored animations and help spread the word about Spritelove!